You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.0 KiB
34 lines
1.0 KiB
export default parse |
|
|
|
import * as initializeContent from './initialize/content.mjs' |
|
import * as initializeDocument from './initialize/document.mjs' |
|
import * as initializeFlow from './initialize/flow.mjs' |
|
import * as initializeText from './initialize/text.mjs' |
|
import combineExtensions from './util/combine-extensions.mjs' |
|
import createTokenizer from './util/create-tokenizer.mjs' |
|
import miniflat from './util/miniflat.mjs' |
|
import * as constructs from './constructs.mjs' |
|
|
|
function parse(options) { |
|
var settings = options || {} |
|
var parser = { |
|
defined: [], |
|
constructs: combineExtensions( |
|
[constructs].concat(miniflat(settings.extensions)) |
|
), |
|
content: create(initializeContent), |
|
document: create(initializeDocument), |
|
flow: create(initializeFlow), |
|
string: create(initializeText.string), |
|
text: create(initializeText.text) |
|
} |
|
|
|
return parser |
|
|
|
function create(initializer) { |
|
return creator |
|
function creator(from) { |
|
return createTokenizer(parser, initializer, from) |
|
} |
|
} |
|
}
|
|
|