diff options
Diffstat (limited to 'js/lib')
| -rw-r--r-- | js/lib/blocks.js | 37 | ||||
| -rwxr-xr-x | js/lib/index.js | 7 | 
2 files changed, 37 insertions, 7 deletions
diff --git a/js/lib/blocks.js b/js/lib/blocks.js index 6cedb37..109661f 100644 --- a/js/lib/blocks.js +++ b/js/lib/blocks.js @@ -542,6 +542,7 @@ var finalize = function(block, line_number) {      switch (block.t) {      case 'Paragraph':          block.string_content = block.strings.join('\n').replace(/^  */m,''); +        // delete block.strings;          // try parsing the beginning as link reference definitions:          while (block.string_content.charCodeAt(0) === C_OPEN_BRACKET && @@ -613,26 +614,49 @@ var finalize = function(block, line_number) {  };  // Walk through a block & children recursively, parsing string content -// into inline content where appropriate. +// into inline content where appropriate.  Returns new object.  var processInlines = function(block) { +    var newblock = {}; +    newblock.t = block.t; +    newblock.start_line = block.start_line; +    newblock.start_column = block.start_column; +    newblock.end_line = block.end_line; +      switch(block.t) {      case 'Paragraph': +        newblock.inline_content = +            this.inlineParser.parse(block.string_content.trim(), this.refmap); +        break;      case 'SetextHeader':      case 'ATXHeader': -        block.inline_content = +        newblock.inline_content =              this.inlineParser.parse(block.string_content.trim(), this.refmap); -        block.string_content = ""; +        newblock.level = block.level; +        break; +    case 'List': +        newblock.list_data = block.list_data; +        newblock.tight = block.tight; +        break; +    case 'FencedCode': +        newblock.string_content = block.string_content; +        newblock.info = block.info; +        break; +    case 'IndentedCode': +    case 'HtmlBlock': +        newblock.string_content = block.string_content;          break;      default:          break;      }      if (block.children) { +        var newchildren = [];          for (var i = 0; i < block.children.length; i++) { -            this.processInlines(block.children[i]); +            newchildren.push(this.processInlines(block.children[i]));          } +        newblock.children = newchildren;      } - +    return newblock;  };  // The main parsing function.  Returns a parsed document AST. @@ -648,8 +672,7 @@ var parse = function(input) {      while (this.tip) {          this.finalize(this.tip, len - 1);      } -    this.processInlines(this.doc); -    return this.doc; +    return this.processInlines(this.doc);  }; diff --git a/js/lib/index.js b/js/lib/index.js index a8bf009..cfb8bf9 100755 --- a/js/lib/index.js +++ b/js/lib/index.js @@ -9,5 +9,12 @@  // var renderer = new stmd.HtmlRenderer();  // console.log(renderer.render(parser.parse('Hello *world*'))); +var util = require('util'); + +var renderAST = function(tree) { +    return util.inspect(tree, {depth: null}); +} +  module.exports.DocParser = require('./blocks');  module.exports.HtmlRenderer = require('./html-renderer'); +module.exports.ASTRenderer = renderAST;  | 
