mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-16 22:10:13 +01:00
Add interactive demo page to show how markdownlint handles user content.
This commit is contained in:
parent
43f28b90c1
commit
dce6024e16
7 changed files with 178 additions and 1 deletions
85
demo/default.js
Normal file
85
demo/default.js
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
"use strict";
|
||||
|
||||
(function main() {
|
||||
// DOM elements
|
||||
var markdown = document.getElementById("markdown");
|
||||
var markup = document.getElementById("markup");
|
||||
var numbered = document.getElementById("numbered");
|
||||
var violations = document.getElementById("violations");
|
||||
var form = document.getElementsByTagName("form")[0];
|
||||
var openFile = document.getElementById("openFile");
|
||||
|
||||
// Instances
|
||||
var markdownit = window.markdownit();
|
||||
var newLineRe = /\r\n|\r|\n/;
|
||||
|
||||
// Handle input
|
||||
function onMarkdownInput() {
|
||||
// Markdown
|
||||
var content = markdown.value;
|
||||
// Markup
|
||||
markup.innerHTML = markdownit.render(content);
|
||||
// Numbered
|
||||
numbered.innerText = content.split(newLineRe)
|
||||
.map(function mapNumberedLine(line, index) {
|
||||
return (index + 1) + ": " + line;
|
||||
}).join("\n");
|
||||
// Violations
|
||||
var options = {
|
||||
"strings": {
|
||||
"content": content
|
||||
}
|
||||
};
|
||||
var results = window.markdownlint.sync(options).toString();
|
||||
violations.innerText = results.split(newLineRe)
|
||||
.map(function mapResultLine(line) {
|
||||
return line.replace(/^content: /, "");
|
||||
}).join("\n");
|
||||
}
|
||||
|
||||
// Load from a string or File object
|
||||
function loadMarkdown(source) {
|
||||
// Reset input element
|
||||
form.reset();
|
||||
if (typeof source === "string") {
|
||||
// Update from string
|
||||
markdown.value = source;
|
||||
onMarkdownInput();
|
||||
} else {
|
||||
// Update from File object
|
||||
var reader = new FileReader();
|
||||
reader.onload = function readerOnload(e) {
|
||||
markdown.value = e.target.result;
|
||||
onMarkdownInput();
|
||||
};
|
||||
reader.readAsText(source);
|
||||
}
|
||||
}
|
||||
|
||||
// Handle drag-and-drop
|
||||
function onDragOver(e) {
|
||||
if (e.dataTransfer && e.dataTransfer.dropEffect) {
|
||||
e.dataTransfer.dropEffect = "link";
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
function onDrop(e) {
|
||||
if (e.dataTransfer && e.dataTransfer.files) {
|
||||
loadMarkdown(e.dataTransfer.files[0]);
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
// Handle file open
|
||||
function onOpenFileChange(e) {
|
||||
if (e.target && e.target.files) {
|
||||
loadMarkdown(e.target.files[0]);
|
||||
}
|
||||
}
|
||||
|
||||
// Add event listeners
|
||||
document.body.addEventListener("dragover", onDragOver);
|
||||
document.body.addEventListener("drop", onDrop);
|
||||
openFile.addEventListener("change", onOpenFileChange);
|
||||
markdown.addEventListener("input", onMarkdownInput);
|
||||
}());
|
||||
Loading…
Add table
Add a link
Reference in a new issue