Skip to content

Commit

Permalink
standard: more tweaks & simplify eslint config
Browse files Browse the repository at this point in the history
  • Loading branch information
puzrin committed Nov 28, 2023
1 parent 94177fc commit efc714f
Show file tree
Hide file tree
Showing 21 changed files with 56 additions and 214 deletions.
152 changes: 7 additions & 145 deletions .eslintrc.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
extends: standard

env:
es6: true
node: true
Expand All @@ -14,153 +16,13 @@ overrides:
no-restricted-globals: [ 2, require, __dirname ]

ignorePatterns:
- coverage/
- demo/
- dist/
- node_modules
- benchmark/extra/

rules:
no-var: 2
prefer-const: 2
no-const-assign: 2
accessor-pairs: 2
array-bracket-spacing: [ 2, never ]
block-scoped-var: 2
block-spacing: 2
brace-style: [ 2, '1tbs', { allowSingleLine: true } ]
# Postponed
#callback-return: 2
comma-dangle: 2
comma-spacing: 2
comma-style: 2
computed-property-spacing: [ 2, never ]
consistent-this: [ 2, self ]
consistent-return: 2
# ? change to multi
curly: [ 2, 'multi-line' ]
dot-notation: 2
eol-last: 2
eqeqeq: 2
func-style: [ 2, declaration ]
# Postponed
#global-require: 2
guard-for-in: 2
handle-callback-err: 2

indent: [ 2, 2, { VariableDeclarator: { var: 2, let: 2, const: 3 }, SwitchCase: 1, ignoreComments: true } ]

# key-spacing: [ 2, { "align": "value" } ]
keyword-spacing: 2
linebreak-style: 2
max-depth: [ 1, 6 ]
max-nested-callbacks: [ 1, 4 ]
# string can exceed 80 chars, but should not overflow github website :)
max-len: [ 2, 120, 1000 ]
new-cap: 2
new-parens: 2
# Postponed
#newline-after-var: 2
no-alert: 2
no-array-constructor: 2
no-bitwise: 2
no-caller: 2
#no-case-declarations: 2
no-catch-shadow: 2
no-cond-assign: 2
no-console: 1
no-constant-condition: 2
#no-control-regex: 2
no-debugger: 2
no-delete-var: 2
no-div-regex: 2
no-dupe-args: 2
no-dupe-keys: 2
no-duplicate-case: 2
no-else-return: 2
# Tend to drop
# no-empty: 1
no-empty-character-class: 2
no-empty-pattern: 2
no-eq-null: 2
no-eval: 2
no-ex-assign: 2
no-extend-native: 2
no-extra-bind: 2
no-extra-boolean-cast: 2
no-extra-semi: 2
no-fallthrough: 2
no-floating-decimal: 2
no-func-assign: 2
# Postponed
#no-implicit-coercion: [2, { "boolean": true, "number": true, "string": true } ]
no-implied-eval: 2
no-inner-declarations: 2
no-invalid-regexp: 2
no-irregular-whitespace: 2
no-iterator: 2
no-label-var: 2
no-labels: 2
no-lone-blocks: 2
no-lonely-if: 2
no-loop-func: 2
no-mixed-requires: 2
no-mixed-spaces-and-tabs: 2
# Postponed
#no-native-reassign: 2
no-negated-in-lhs: 2
# Postponed
#no-nested-ternary: 2
no-new: 2
no-new-func: 2
no-new-object: 2
no-new-require: 2
no-new-wrappers: 2
no-obj-calls: 2
no-octal: 2
no-octal-escape: 2
no-path-concat: 2
no-proto: 2
no-redeclare: 2
# Postponed
#no-regex-spaces: 2
no-return-assign: 2
no-self-compare: 2
no-sequences: 2
no-shadow: 2
no-shadow-restricted-names: 2
no-sparse-arrays: 2
no-trailing-spaces: 2
no-undef: 2
no-undef-init: 2
no-undefined: 2
no-unexpected-multiline: 2
no-unreachable: 2
no-unused-expressions: 2
no-unused-vars: 2
no-use-before-define: 2
no-void: 2
no-with: 2
object-curly-spacing: [ 2, always, { "objectsInObjects": true, "arraysInObjects": true } ]
one-var: [ 2, { initialized: 'never' } ]
operator-assignment: 1
# Postponed
#operator-linebreak: [ 2, after ]
semi: [ 2, never ]
semi-spacing: 2
space-before-function-paren: [2, always]
space-in-parens: [ 2, never ]
space-infix-ops: 2
space-unary-ops: 2
# Postponed
spaced-comment: [ 2, 'always', {
line: { markers: ['*package', '!', '/', ',', '='] },
block: { balanced: true, markers: ['*package', '!', ',', ':', '::', 'flow-include'], exceptions: ['*'] }
}]
strict: [ 2, global ]
quotes: [ 2, single, avoid-escape ]
quote-props: [ 1, 'as-needed' ]
radix: 2
use-isnan: 2
valid-typeof: 2
yoda: [ 2, never, { "exceptRange": true } ]
camelcase: 0
key-spacing: 0
no-multi-spaces: 0
no-multiple-empty-lines: 0
padded-blocks: 0
16 changes: 4 additions & 12 deletions benchmark/benchmark.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@ for (const name of fs.readdirSync(new URL('./implementations', import.meta.url))
const filepath = new URL(`./implementations/${name}/index.mjs`, import.meta.url)
const code = (await import(filepath))

IMPLS.push({
name: name,
code: code
})
IMPLS.push({ name, code })
}

const SAMPLES = []
Expand All @@ -39,7 +36,7 @@ fs.readdirSync(new URL('./samples', import.meta.url)).sort().forEach(sample => {
title,
{
onStart: () => { console.log('\nSample: %s %s', sample, title) },
onComplete: onComplete
onComplete
}
)

Expand All @@ -52,18 +49,13 @@ fs.readdirSync(new URL('./samples', import.meta.url)).sort().forEach(sample => {
cursor.eraseLine()
cursor.write(' > ' + event.target)
},
onComplete: onComplete,
onComplete,
fn: function () { impl.code.run(content.string) }
}
)
})

SAMPLES.push({
name: sample.split('.')[0],
title: title,
content: content,
suite: suite
})
SAMPLES.push({ name: sample.split('.')[0], title, content, suite })
})


Expand Down
4 changes: 2 additions & 2 deletions bin/markdown-it.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ readFile(options.file, 'utf8', function (err, input) {
}

console.error(
options.trace && err.stack ||
(options.trace && err.stack) ||
err.message ||
String(err))

Expand All @@ -95,7 +95,7 @@ readFile(options.file, 'utf8', function (err, input) {

} catch (e) {
console.error(
options.trace && e.stack ||
(options.trace && e.stack) ||
e.message ||
String(e))

Expand Down
7 changes: 4 additions & 3 deletions lib/common/utils.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ function fromCodePoint (c) {
}


const UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g
const UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g
const ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi
const UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi')

Expand All @@ -82,8 +82,9 @@ const DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i

function replaceEntityPattern (match, name) {
if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {
const code = name[1].toLowerCase() === 'x' ?
parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10)
const code = name[1].toLowerCase() === 'x'
? parseInt(name.slice(2), 16)
: parseInt(name.slice(1), 10)

if (isValidEntityCode(code)) {
return fromCodePoint(code)
Expand Down
2 changes: 1 addition & 1 deletion lib/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ function validateLink (url) {
// url should be normalized at this point, and existing entities are decoded
const str = url.trim().toLowerCase()

return BAD_PROTO_RE.test(str) ? (GOOD_DATA_RE.test(str) ? true : false) : true
return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) : true
}


Expand Down
9 changes: 2 additions & 7 deletions lib/renderer.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,10 @@ default_rules.fence = function (tokens, idx, options, env, slf) {
attrs: tmpAttrs
}

return '<pre><code' + slf.renderAttrs(tmpToken) + '>'
+ highlighted
+ '</code></pre>\n'
return `<pre><code${slf.renderAttrs(tmpToken)}>${highlighted}</code></pre>\n`
}


return '<pre><code' + slf.renderAttrs(token) + '>'
+ highlighted
+ '</code></pre>\n'
return `<pre><code${slf.renderAttrs(token)}>${highlighted}</code></pre>\n`
}


Expand Down
6 changes: 3 additions & 3 deletions lib/ruler.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ Ruler.prototype.before = function (beforeName, ruleName, fn, options) {
this.__rules__.splice(index, 0, {
name: ruleName,
enabled: true,
fn: fn,
fn,
alt: opt.alt || []
})

Expand Down Expand Up @@ -199,7 +199,7 @@ Ruler.prototype.after = function (afterName, ruleName, fn, options) {
this.__rules__.splice(index + 1, 0, {
name: ruleName,
enabled: true,
fn: fn,
fn,
alt: opt.alt || []
})

Expand Down Expand Up @@ -235,7 +235,7 @@ Ruler.prototype.push = function (ruleName, fn, options) {
this.__rules__.push({
name: ruleName,
enabled: true,
fn: fn,
fn,
alt: opt.alt || []
})

Expand Down
6 changes: 1 addition & 5 deletions lib/rules_block/list.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,7 @@ function markTightParagraphs (state, idx) {


export default function list (state, startLine, endLine, silent) {
let max,
pos,
start,
token

let max, pos, start, token
let nextLine = startLine
let tight = true

Expand Down
2 changes: 1 addition & 1 deletion lib/rules_block/reference.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ export default function reference (state, startLine, _endLine, silent) {
state.env.references = {}
}
if (typeof state.env.references[label] === 'undefined') {
state.env.references[label] = { title: title, href: href }
state.env.references[label] = { title, href }
}

state.parentType = oldParentType
Expand Down
6 changes: 4 additions & 2 deletions lib/rules_block/state_block.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,10 @@ function StateBlock (src, md, env, tokens) {
this.bsCount = []

// block parser variables
this.blkIndent = 0 // required block content indent (for example, if we are
// inside a list, it would be positioned after list marker)

// required block content indent (for example, if we are
// inside a list, it would be positioned after list marker)
this.blkIndent = 0
this.line = 0 // line index in src
this.lineMax = 0 // lines count
this.tight = false // loose/tight mode for lists
Expand Down
5 changes: 3 additions & 2 deletions lib/rules_inline/autolink.mjs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// Process autolinks '<protocol:...>'

/* eslint max-len:0 */
const EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/
const AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/
const EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/
/* eslint-disable-next-line no-control-regex */
const AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/


export default function autolink (state, silent) {
Expand Down
7 changes: 4 additions & 3 deletions lib/rules_inline/balance_pairs.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ function processDelimiters (delimiters) {
// for each marker, each delimiter length modulo 3,
// and for whether this closer can be an opener;
// https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460
/* eslint-disable-next-line no-prototype-builtins */
if (!openersBottom.hasOwnProperty(closer.marker)) {
openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1]
}
Expand Down Expand Up @@ -78,9 +79,9 @@ function processDelimiters (delimiters) {
// the entire sequence in future checks. This is required to make
// sure algorithm has linear complexity (see *_*_*_*_*_... case).
//
const lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ?
jumps[openerIdx - 1] + 1 :
0
const lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open
? jumps[openerIdx - 1] + 1
: 0

jumps[closerIdx] = closerIdx - openerIdx + lastJump
jumps[openerIdx] = lastJump
Expand Down
2 changes: 1 addition & 1 deletion lib/rules_inline/emphasis.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function emphasis_tokenize (state, silent) {
state.delimiters.push({
// Char code of the starting marker (number).
//
marker: marker,
marker,

// Total length of these series of delimiters.
//
Expand Down
6 changes: 1 addition & 5 deletions lib/rules_inline/state_inline.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,7 @@ StateInline.prototype.scanDelims = function (start, canSplitWord) {
can_close = right_flanking
}

return {
can_open: can_open,
can_close: can_close,
length: count
}
return { can_open, can_close, length: count }
}


Expand Down
2 changes: 1 addition & 1 deletion lib/rules_inline/strikethrough.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ function strikethrough_tokenize (state, silent) {
token.content = ch + ch

state.delimiters.push({
marker: marker,
marker,
length: 0, // disable "rule of 3" length checks meant for emphasis
token: state.tokens.length - 1,
end: -1,
Expand Down
Loading

0 comments on commit efc714f

Please sign in to comment.