You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.0 KiB
65 lines
2.0 KiB
function load(textarea, div) {
|
|
let lines = textarea.value.split('\n');
|
|
for (let i = 0; i < lines.length; i++) {
|
|
let line = lines[i];
|
|
let elem = formatLine(line);
|
|
elem.id = 'mdnotes_' + i;
|
|
div.append(elem);
|
|
}
|
|
}
|
|
|
|
function formatLine(line) {
|
|
let normLine = line.trimStart();
|
|
let styleClass = null;
|
|
let token = null;
|
|
if (normLine.match(/####\s/i)) {
|
|
token = /^(####\s)/i;
|
|
styleClass = 'h4';
|
|
} else if (normLine.match(/###\s/i)) {
|
|
token = /^(###\s)/i;
|
|
styleClass = 'h3';
|
|
} else if (normLine.match(/##\s/i)) {
|
|
token = /^(##\s)/i;
|
|
styleClass = 'h2';
|
|
} else if (normLine.match(/#\s/i)) {
|
|
token = /^(#\s)/i;
|
|
styleClass = 'h1';
|
|
} else if (normLine.match(/>>>\s/i)) {
|
|
token = /^(>>>\s)/i;
|
|
styleClass = 'bq3';
|
|
} else if (normLine.match(/>>\s/i)) {
|
|
token = /^(>>\s)/i;
|
|
styleClass = 'bq2';
|
|
} else if (normLine.match(/>\s/i)) {
|
|
token = /^(>\s)/i;
|
|
styleClass = 'bq1';
|
|
} else if (normLine.match(/^[*-]\s/i)) {
|
|
styleClass = 'ul';
|
|
} else {
|
|
styleClass = 'body';
|
|
}
|
|
let elem = document.createElement('div');
|
|
elem.classList.add('mdnotes_line');
|
|
elem.classList.add(styleClass);
|
|
normLine = addBold(normLine);
|
|
normLine = addMono(normLine);
|
|
if (token != null) {
|
|
elem.classList.add('hastoken');
|
|
normLine = normLine.replace(token, '<span class="token">$1</span>');
|
|
}
|
|
elem.innerHTML = normLine;
|
|
return elem;
|
|
}
|
|
|
|
function addMono(line) {
|
|
line = line.replace(/`(.*?)`/ig, '<span class="mono"><span class="token">`</span>$1<span class="token">`</span></span>');
|
|
return line;
|
|
}
|
|
|
|
function addBold(line) {
|
|
line = line.replace(/\*\*([^\s].*?)\*\*/ig, '<span class="bold"><span class="token">**</span>$1<span class="token">**</span></span>');
|
|
line = line.replace(/__([^\s].*?)__/ig, '<span class="bold"><span class="token">__</span>$1<span class="token">__</span></span>');
|
|
return line;
|
|
}
|
|
|
|
export { load, formatLine }; |