diff --git a/shared/naturalcrit/markdown.js b/shared/naturalcrit/markdown.js new file mode 100644 index 0000000..6263e68 --- /dev/null +++ b/shared/naturalcrit/markdown.js @@ -0,0 +1,91 @@ +var _ = require('lodash'); +var Markdown = require('marked'); +var renderer = new Markdown.Renderer(); + +//Processes the markdown within an HTML block if it's just a class-wrapper +renderer.html = function (html) { + if(_.startsWith(_.trim(html), '')){ + var openTag = html.substring(0, html.indexOf('>')+1); + html = html.substring(html.indexOf('>')+1); + html = html.substring(0, html.lastIndexOf('')); + return `${openTag} ${Markdown(html)} `; + } + return html; +}; + +module.exports = { + render : (rawText)=>{ + return Markdown(rawText, {renderer : renderer}) + }, + validate : (rawText)=>{ + var currentLine = 0; + var errors = []; + var tokens = Markdown.lexer(rawText); + + _.each(tokens, (token)=>{ + if(token.type === 'paragraph' || token.type === 'html'){ + + var hasOpen = token.text.indexOf('') !== -1; + + if(hasClose && token.text.length > 6){ + errors.push({ + err : ' Closing tags must be on their own line', + token : token, + line : currentLine + }); + } + else if(hasOpen && !hasClose){ + errors.push({ + err : ' No closing tag', + token : token, + line : currentLine + }); + } + else if(hasClose && !hasOpen){ + errors.push({ + err : ' No opening tag', + token : token, + line : currentLine + }); + } + + + /* + + + if(_.startsWith(token.text, '')){ + //Do a check to make sure it's on it's own line + + errors.push({ + err : ' No opening tag', + token : token, + line : currentLine + }) + } + */ + } + //console.log(token); + }); + + return errors; + }, + marked : Markdown +}; + + +/* Test Cases + + + + + + + +*/ \ No newline at end of file