@awesome-fe/translate
Version:
Translation utils
79 lines • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.strongTokenizer = void 0;
const whitespace = require('is-whitespace-character');
const backslash = '\\';
const asterisk = '*';
const underscore = '_';
function strongTokenizer(eat, value, silent) {
const self = this;
let index = 0;
let character = value.charAt(index);
let now;
let pedantic;
let marker;
let queue;
let subvalue;
let length;
let prev;
if ((character !== asterisk && character !== underscore) ||
value.charAt(++index) !== character) {
return;
}
pedantic = self.options.pedantic;
marker = character;
subvalue = marker + marker;
length = value.length;
index++;
queue = '';
character = '';
if (pedantic && whitespace(value.charAt(index))) {
return;
}
while (index < length) {
prev = character;
character = value.charAt(index);
if (character === marker &&
value.charAt(index + 1) === marker &&
(!pedantic || !whitespace(prev))) {
character = value.charAt(index + 2);
if (character !== marker) {
if (!queue.trim()) {
return;
}
/* istanbul ignore if - never used (yet) */
if (silent) {
return true;
}
now = eat.now();
now.column += 2;
now.offset += 2;
return eat(subvalue + queue + subvalue)({
type: 'strong',
marker,
children: self.tokenizeInline(queue, now),
});
}
}
if (!pedantic && character === backslash) {
queue += character;
character = value.charAt(++index);
}
queue += character;
index++;
}
}
exports.strongTokenizer = strongTokenizer;
function locate(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;
}
strongTokenizer.locator = locate;
//# sourceMappingURL=strong-tokenizer.js.map