25 lines
538 B
JavaScript
25 lines
538 B
JavaScript
'use strict'
|
|
|
|
var tokenizer = require('./tokenizer')
|
|
|
|
module.exports = parserFactory
|
|
|
|
// Construct a parser based on `options`.
|
|
function parserFactory(options) {
|
|
var type = options.type
|
|
var tokenizerProperty = options.tokenizer
|
|
var delimiter = options.delimiter
|
|
var tokenize = delimiter && tokenizer(options.delimiterType, delimiter)
|
|
|
|
return parser
|
|
|
|
function parser(value) {
|
|
var children = this[tokenizerProperty](value)
|
|
|
|
return {
|
|
type: type,
|
|
children: tokenize ? tokenize(children) : children
|
|
}
|
|
}
|
|
}
|