'use strict' var content = require('./initialize/content.js') var document = require('./initialize/document.js') var flow = require('./initialize/flow.js') var text = require('./initialize/text.js') var combineExtensions = require('./util/combine-extensions.js') var createTokenizer = require('./util/create-tokenizer.js') var miniflat = require('./util/miniflat.js') var constructs = require('./constructs.js') function parse(options) { var settings = options || {} var parser = { defined: [], constructs: combineExtensions( [constructs].concat(miniflat(settings.extensions)) ), content: create(content), document: create(document), flow: create(flow), string: create(text.string), text: create(text.text) } return parser function create(initializer) { return creator function creator(from) { return createTokenizer(parser, initializer, from) } } } module.exports = parse