@awesome-fe/translate
Version:
Translation utils
70 lines • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.emphasisTokenizer = void 0;
const word = require('is-word-character');
const whitespace = require('is-whitespace-character');
function emphasisTokenizer(eat, value, silent) {
let index = 0;
let character = value.charAt(index);
if (character !== '*' && character !== '_') {
return;
}
const pedantic = this.options.pedantic;
const subvalue = character;
const marker = character;
const length = value.length;
index++;
let queue = '';
character = '';
if (pedantic && whitespace(value.charAt(index))) {
return;
}
while (index < length) {
const prev = character;
character = value.charAt(index);
if (character === marker && (!pedantic || !whitespace(prev))) {
character = value.charAt(++index);
if (character !== marker) {
if (!queue.trim() || prev === marker) {
return;
}
if (!pedantic && marker === '_' && word(character)) {
queue += marker;
continue;
}
/* istanbul ignore if - never used (yet) */
if (silent) {
return true;
}
const now = eat.now();
now.column++;
now.offset++;
return eat(subvalue + queue + marker)({
type: 'emphasis',
marker,
children: this.tokenizeInline(queue, now),
});
}
queue += marker;
}
if (!pedantic && character === '\\') {
queue += character;
character = value.charAt(++index);
}
queue += character;
index++;
}
}
exports.emphasisTokenizer = emphasisTokenizer;
emphasisTokenizer.locator = function (value, fromIndex) {
const asterisk = value.indexOf('*', fromIndex);
const underscore = value.indexOf('_', fromIndex);
if (underscore === -1) {
return asterisk;
}
if (asterisk === -1) {
return underscore;
}
return underscore < asterisk ? underscore : asterisk;
};
//# sourceMappingURL=emphasis-tokenizer.js.map