From 3f637ba8e57136b985a7f534433e70d1116d023a Mon Sep 17 00:00:00 2001 From: David Anson Date: Tue, 15 Sep 2020 21:15:35 -0700 Subject: [PATCH] Add ability to fix issues with markdownlint demo page, refactor slightly. --- .eslintignore | 1 + .gitignore | 1 + demo/default.js | 68 +++++++++++++++++++++--------------- demo/markdownlint-browser.js | 2 +- package.json | 2 +- 5 files changed, 44 insertions(+), 30 deletions(-) diff --git a/.eslintignore b/.eslintignore index 7fbeef7f..0ff74745 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,5 @@ demo/markdown-it.min.js demo/markdownlint-browser.js demo/markdownlint-browser.min.js +demo/markdownlint-rule-helpers-browser.js example/typescript/type-check.js diff --git a/.gitignore b/.gitignore index ebbcaa4c..ccdb1cba 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ coverage demo/markdown-it.min.js demo/markdownlint-browser.min.js +demo/markdownlint-rule-helpers-browser.js lib-es3 node_modules npm-debug.log diff --git a/demo/default.js b/demo/default.js index 01e30d62..1e2753dc 100644 --- a/demo/default.js +++ b/demo/default.js @@ -16,8 +16,6 @@ var markdownit = window.markdownit({ "html": true }); var newLineRe = /\r\n|\r|\n/; var hashPrefix = "%m"; - var rulesMd = "https://github.com/DavidAnson/markdownlint" + - "/blob/main/doc/Rules.md"; // Do-nothing function function noop() {} @@ -55,17 +53,15 @@ "config": { "MD013": false }, - "handleRuleFailures": true + "handleRuleFailures": true, + "resultVersion": 3 }; var results = window.markdownlint.sync(options); violations.innerHTML = results.content.map(function mapResult(result) { - var ruleName = result.ruleNames[0]; - var ruleRef = rulesMd + "#" + ruleName.toLowerCase() + "---" + - result.ruleDescription.toLowerCase() - .replace(/ /g, "-") - .replace(/[()]/g, ""); - return "" + result.lineNumber + - " - " + ruleName + " " + + var ruleName = result.ruleNames.slice(0, 2).join(" / "); + return "" + + result.lineNumber + " - " + ruleName + " " + result.ruleDescription + (result.errorDetail ? " [" + @@ -76,13 +72,12 @@ " [Context: \"" + sanitize(result.errorContext) + "\"]" : + "") + + (result.fixInfo ? + " [Fix]" : ""); - // + (result.errorRange ? - // " " + - // lines[result.lineNumber - 1].substr( - // result.errorRange[0] - 1, result.errorRange[1]) + - // "" : - // ""); }).join("
"); } @@ -127,16 +122,33 @@ } // Handle violation navigation - function onLineNumberClick(e) { - var line = document.getElementById("l" + e.target.textContent); - if (line) { - var highlighted = document.getElementsByClassName("highlight"); - Array.prototype.forEach.call(highlighted, function forElement(element) { - element.classList.remove("highlight"); - }); - line.classList.add("highlight"); - line.scrollIntoView(); - e.preventDefault(); + function onViolationClick(e) { + switch (e.target.hash) { + case "#fix": + var error = JSON.parse(decodeURIComponent(e.target.target)); + var errors = [ error ]; + var fixed = window.helpers.applyFixes(markdown.value, errors); + markdown.value = fixed; + onMarkdownInput(); + e.preventDefault(); + break; + case "#line": + var line = document.getElementById("l" + e.target.target); + if (line) { + var highlighted = document.getElementsByClassName("highlight"); + Array.prototype.forEach.call( + highlighted, + function forElement(element) { + element.classList.remove("highlight"); + } + ); + line.classList.add("highlight"); + line.scrollIntoView(); + } + e.preventDefault(); + break; + default: + break; } } @@ -157,7 +169,7 @@ document.body.addEventListener("drop", onDrop); openFile.addEventListener("change", onOpenFileChange); markdown.addEventListener("input", onMarkdownInput); - violations.addEventListener("click", onLineNumberClick, true); + violations.addEventListener("click", onViolationClick, true); copyLink.addEventListener("click", onCopyLinkClick); /* eslint-disable max-len */ @@ -205,7 +217,7 @@ // Detect legacy browsers try { /* eslint-disable-next-line no-new */ - new URL(rulesMd); + new URL("https://example.com/"); /* eslint-disable-next-line unicorn/prefer-optional-catch-binding */ } catch (error) { markdown.value = [ diff --git a/demo/markdownlint-browser.js b/demo/markdownlint-browser.js index a9ef0663..5afffaaa 100644 --- a/demo/markdownlint-browser.js +++ b/demo/markdownlint-browser.js @@ -3435,7 +3435,7 @@ module.exports={ "ci": "npm run test-cover && npm run lint && npm run test-declaration", "build-config-schema": "node schema/build-config-schema.js", "build-declaration": "tsc --allowJs --declaration --outDir declaration --resolveJsonModule lib/markdownlint.js && cpy declaration/lib/markdownlint.d.ts lib && rimraf declaration", - "build-demo": "cpy node_modules/markdown-it/dist/markdown-it.min.js demo && cd demo && rimraf markdownlint-browser.* && cpy file-header.js . --rename=markdownlint-browser.js && tsc --allowJs --resolveJsonModule --outDir ../lib-es3 ../lib/markdownlint.js && cpy ../helpers/package.json ../lib-es3/helpers && browserify ../lib-es3/lib/markdownlint.js --standalone markdownlint >> markdownlint-browser.js && uglifyjs markdownlint-browser.js --compress --mangle --comments --output markdownlint-browser.min.js", + "build-demo": "cpy node_modules/markdown-it/dist/markdown-it.min.js demo && cd demo && rimraf markdownlint-browser.* && cpy file-header.js . --rename=markdownlint-browser.js && tsc --allowJs --resolveJsonModule --outDir ../lib-es3 ../lib/markdownlint.js && cpy ../helpers/package.json ../lib-es3/helpers && browserify ../lib-es3/lib/markdownlint.js --standalone markdownlint >> markdownlint-browser.js && browserify ../lib-es3/helpers/helpers.js --standalone helpers >> markdownlint-rule-helpers-browser.js && uglifyjs markdownlint-browser.js markdownlint-rule-helpers-browser.js --compress --mangle --comments --output markdownlint-browser.min.js", "build-example": "npm install --no-save --ignore-scripts grunt grunt-cli gulp through2", "example": "cd example && node standalone.js && grunt markdownlint --force && gulp markdownlint", "clone-test-repos": "make-dir test-repos && cd test-repos && git clone https://github.com/eslint/eslint eslint-eslint --depth 1 --no-tags --quiet && git clone https://github.com/mkdocs/mkdocs mkdocs-mkdocs --depth 1 --no-tags --quiet && git clone https://github.com/pi-hole/docs pi-hole-docs --depth 1 --no-tags --quiet", diff --git a/package.json b/package.json index 90a11178..bdafcd64 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "ci": "npm run test-cover && npm run lint && npm run test-declaration", "build-config-schema": "node schema/build-config-schema.js", "build-declaration": "tsc --allowJs --declaration --outDir declaration --resolveJsonModule lib/markdownlint.js && cpy declaration/lib/markdownlint.d.ts lib && rimraf declaration", - "build-demo": "cpy node_modules/markdown-it/dist/markdown-it.min.js demo && cd demo && rimraf markdownlint-browser.* && cpy file-header.js . --rename=markdownlint-browser.js && tsc --allowJs --resolveJsonModule --outDir ../lib-es3 ../lib/markdownlint.js && cpy ../helpers/package.json ../lib-es3/helpers && browserify ../lib-es3/lib/markdownlint.js --standalone markdownlint >> markdownlint-browser.js && uglifyjs markdownlint-browser.js --compress --mangle --comments --output markdownlint-browser.min.js", + "build-demo": "cpy node_modules/markdown-it/dist/markdown-it.min.js demo && cd demo && rimraf markdownlint-browser.* && cpy file-header.js . --rename=markdownlint-browser.js && tsc --allowJs --resolveJsonModule --outDir ../lib-es3 ../lib/markdownlint.js && cpy ../helpers/package.json ../lib-es3/helpers && browserify ../lib-es3/lib/markdownlint.js --standalone markdownlint >> markdownlint-browser.js && browserify ../lib-es3/helpers/helpers.js --standalone helpers >> markdownlint-rule-helpers-browser.js && uglifyjs markdownlint-browser.js markdownlint-rule-helpers-browser.js --compress --mangle --comments --output markdownlint-browser.min.js", "build-example": "npm install --no-save --ignore-scripts grunt grunt-cli gulp through2", "example": "cd example && node standalone.js && grunt markdownlint --force && gulp markdownlint", "clone-test-repos": "make-dir test-repos && cd test-repos && git clone https://github.com/eslint/eslint eslint-eslint --depth 1 --no-tags --quiet && git clone https://github.com/mkdocs/mkdocs mkdocs-mkdocs --depth 1 --no-tags --quiet && git clone https://github.com/pi-hole/docs pi-hole-docs --depth 1 --no-tags --quiet",