Turns Noddity post objects into basic abstract syntax trees.
var parser = require('noddity-template-parser')
var Linkify = require('noddity-linkifier')
var linkify = Linkify('#/prefix')
var ast = parser(post, linkify)
var full = ast.reduce(function (full, piece) {
if (piece.type === 'string') full += piece.value
if (piece.type === 'template') full += 'TEMPLATE GOES HERE'
return full
}, '')
var parser = require('noddity-template-parser')
post
: a Noddity post object (from a Noddity Butler)linkify
: a Noddity Linkifieroptions
: an optional object of optionsconvertToHtml
: convert posts from markdown to HTML. Defaults to true. (Ifmarkdown: false
is on the post's metadata, it will not be converted, even when this is set to true.)
var ast = parser(post, linkify, { convertToHtml: false })
An array of objects returned from parser()
. Each object has a type property which can be string
, or template
.
string
type properties:value
string with html or markdown
template
type properties:filename
string, e.g.'my-post.md'
arguments
object, e.g.{ 1: 'hello', key: 'value' }
The AST for this post...
---
prop: val
---
::child|arg|key=value::
I see you like {{prop}} templates
...would look like:
[{
type: 'string',
value: '<p>'
}, {
type: 'template',
filename: 'child',
arguments: {
1: 'arg',
key: 'value'
}
}, {
type: 'string',
value: '</p>\n<p>I see you like {{prop}} templates</p>\n'
}]