58 lines
1017 B
JavaScript
58 lines
1017 B
JavaScript
'use strict'
|
|
|
|
module.exports = text
|
|
|
|
function text(eat, value, silent) {
|
|
var self = this
|
|
var methods
|
|
var tokenizers
|
|
var index
|
|
var length
|
|
var subvalue
|
|
var position
|
|
var tokenizer
|
|
var name
|
|
var min
|
|
var now
|
|
|
|
/* istanbul ignore if - never used (yet) */
|
|
if (silent) {
|
|
return true
|
|
}
|
|
|
|
methods = self.inlineMethods
|
|
length = methods.length
|
|
tokenizers = self.inlineTokenizers
|
|
index = -1
|
|
min = value.length
|
|
|
|
while (++index < length) {
|
|
name = methods[index]
|
|
|
|
if (name === 'text' || !tokenizers[name]) {
|
|
continue
|
|
}
|
|
|
|
tokenizer = tokenizers[name].locator
|
|
|
|
if (!tokenizer) {
|
|
eat.file.fail('Missing locator: `' + name + '`')
|
|
}
|
|
|
|
position = tokenizer.call(self, value, 1)
|
|
|
|
if (position !== -1 && position < min) {
|
|
min = position
|
|
}
|
|
}
|
|
|
|
subvalue = value.slice(0, min)
|
|
now = eat.now()
|
|
|
|
self.decode(subvalue, now, handler)
|
|
|
|
function handler(content, position, source) {
|
|
eat(source || content)({type: 'text', value: content})
|
|
}
|
|
}
|