diff --git a/.eslintrc.yml b/.eslintrc.yml index c832d21..32cb852 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,3 +1,5 @@ +extends: standard + env: es6: true node: true @@ -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 diff --git a/benchmark/benchmark.mjs b/benchmark/benchmark.mjs index 1345c24..1fc4a93 100755 --- a/benchmark/benchmark.mjs +++ b/benchmark/benchmark.mjs @@ -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 = [] @@ -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 } ) @@ -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 }) }) diff --git a/bin/markdown-it.mjs b/bin/markdown-it.mjs index a53fa30..c3c497e 100755 --- a/bin/markdown-it.mjs +++ b/bin/markdown-it.mjs @@ -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)) @@ -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)) diff --git a/lib/common/utils.mjs b/lib/common/utils.mjs index 5bae0fa..fb7881e 100644 --- a/lib/common/utils.mjs +++ b/lib/common/utils.mjs @@ -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') @@ -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) diff --git a/lib/index.mjs b/lib/index.mjs index 13b50d2..343712d 100644 --- a/lib/index.mjs +++ b/lib/index.mjs @@ -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 } diff --git a/lib/renderer.mjs b/lib/renderer.mjs index ff8c04b..bcd93ac 100644 --- a/lib/renderer.mjs +++ b/lib/renderer.mjs @@ -72,15 +72,10 @@ default_rules.fence = function (tokens, idx, options, env, slf) { attrs: tmpAttrs } - return '
'
- + highlighted
- + '
\n'
+ return `${highlighted}
\n`
}
-
- return ''
- + highlighted
- + '
\n'
+ return `${highlighted}
\n`
}
diff --git a/lib/ruler.mjs b/lib/ruler.mjs
index cb30fdb..72f00a7 100644
--- a/lib/ruler.mjs
+++ b/lib/ruler.mjs
@@ -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 || []
})
@@ -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 || []
})
@@ -235,7 +235,7 @@ Ruler.prototype.push = function (ruleName, fn, options) {
this.__rules__.push({
name: ruleName,
enabled: true,
- fn: fn,
+ fn,
alt: opt.alt || []
})
diff --git a/lib/rules_block/list.mjs b/lib/rules_block/list.mjs
index 5fe4ec6..4d96ab7 100644
--- a/lib/rules_block/list.mjs
+++ b/lib/rules_block/list.mjs
@@ -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
diff --git a/lib/rules_block/reference.mjs b/lib/rules_block/reference.mjs
index 4d699f4..dfb55a9 100644
--- a/lib/rules_block/reference.mjs
+++ b/lib/rules_block/reference.mjs
@@ -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
diff --git a/lib/rules_block/state_block.mjs b/lib/rules_block/state_block.mjs
index 7a07c7d..5d2ce9d 100644
--- a/lib/rules_block/state_block.mjs
+++ b/lib/rules_block/state_block.mjs
@@ -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
diff --git a/lib/rules_inline/autolink.mjs b/lib/rules_inline/autolink.mjs
index b38c89d..f2894cd 100644
--- a/lib/rules_inline/autolink.mjs
+++ b/lib/rules_inline/autolink.mjs
@@ -1,8 +1,9 @@
// Process autolinks '