function load(textarea, div) { div.innerHTML = ''; let lines = textarea.value.split('\n'); for (let i = 0; i < lines.length; i++) { let line = lines[i]; line = line.replace(/\t/, emsp()); let elem = formatLine(line); div.append(elem); } } function save(textarea, div) { let lines = div.children; let text = ''; for (let i=0; i\s*>\s*>\s/i)) { token = /^(\s*>\s*>\s*>\s)/i; elem.classList.add('bq3'); elem.classList.add('bq'); } else if (line.match(/^\s*>\s*>\s/i)) { token = /^(\s*>\s*>\s)/i; elem.classList.add('bq2'); elem.classList.add('bq'); } else if (line.match(/^\s*>\s/i)) { token = /^(\s*>\s)/i; elem.classList.add('bq1'); elem.classList.add('bq'); } else { elem.classList.add('body'); } if (elem.classList.contains('bq') || elem.classList.contains('body')) { if (line.match(/^\s*((>\s*){0,3}\s)?([\*\-+]\s*){3}\s/i)) { token = /^(\s*(>\s*){0,3}([\*\-+]\s*){2})/i; elem.classList.add('ul3'); elem.classList.remove('body'); } else if (line.match(/^\s*((>\s*){0,3}\s)?([\*\-+]\s*){2}\s/i)) { token = /^(\s*(>\s*){0,3}[\*\-+])/i; elem.classList.add('ul2'); elem.classList.remove('body'); } else if (line.match(/^\s*((>\s*){0,3}\s)?[\*\-+]\s/i)) { token = /^(\s*(>\s*){0,3}\s*)/; elem.classList.add('ul1'); elem.classList.remove('body'); } else if (line.match(/^\s*((>\s*){0,3}\s)?([0-9]+\.){3}\s/i)) { token = /^(\s*(>\s*){0,3}\s*)/; elem.classList.add('ol3'); elem.classList.remove('body'); } else if (line.match(/^\s*((>\s*){0,3}\s)?([0-9]+\.){2}\s/i)) { token = /^(\s*(>\s*){0,3}\s*)/; elem.classList.add('ol2'); elem.classList.remove('body'); } else if (line.match(/^\s*((>\s*){0,3}\s)?[0-9]+\.\s/i)) { token = /^(\s*(>\s*){0,3}\s*)/; elem.classList.add('ol1'); elem.classList.remove('body'); } } elem.classList.add('mdnotes_line'); line = addLink(line); line = addBold(line); line = addItalic(line); line = addMono(line); if (token != null) { line = line.replace(token, '$1'); } elem.innerHTML = line; let links = elem.getElementsByClassName('link'); for (let i=0; i`$1`'); return line; } function addLink(line) { line = line.replace(/(\[(.*?)\]\((.*?)\))/ig, '[$2]($3)'); return line; } function addBold(line) { line = line.replace(/\*\*([^\s].*?)\*\*/ig, '**$1**'); line = line.replace(/__([^\s].*?)__/ig, '__$1__'); return line; } function addItalic(line) { line = line.replace(/(^|[^\*])\*([^\*\s].*?[^\*\s]|[^\*\s])\*([^\*]|$)/ig, '$1*$2*$3'); line = line.replace(/(^|[^_])_([^_\s].*?[^_\s]|[^_\s])_([^_]|$)/ig, '$1_$2_$3'); return line; } export { load, save, formatLine };