@awesome-fe/translate
Version:
Translation utils
61 lines • 2.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.customCompiler = void 0;
const strong_visitor_1 = require("./strong-visitor");
const emphasis_visitor_1 = require("./emphasis-visitor");
const list_item_visitor_1 = require("./list-item-visitor");
const ng_inline_at_visitor_1 = require("./ng-inline-at-visitor");
const html_comment_visitor_1 = require("./html-comment-visitor");
const html_raw_visitor_1 = require("./html-raw-visitor");
const html_tag_visitor_1 = require("./html-tag-visitor");
const ng_doc_directive_visitor_1 = require("./ng-doc-directive-visitor");
function createTableCellVisitor(tableCell) {
return function (node, parent, position, bullet) {
const text = tableCell.call(this, node, parent, position, bullet);
return text.replace(/\n/g, '
').replace(/\\\|/g, '|');
};
}
function createLinkVisitor(link) {
return function (node, parent, position, bullet) {
const text = link.call(this, node, parent, position, bullet);
return text.replace(/^<(.*)>$/, '$1');
};
}
function createTextVisitor(text) {
return function (node, parent, position, bullet) {
let content = text.call(this, node, parent, position, bullet);
if (parent.type === 'link') {
content = content
// `[` 默认已经被转义过了,不需要这里补充转义
.replace(/]/g, '\\]');
}
content = content
.replace(/:/g, ':')
.replace(/®/g, '®')
.replace(/^@/g, '@')
.replace(/→/g, '→')
.replace(/—/g, '—');
return content;
};
}
/**
* Teach remark that some HTML blocks never include markdown
*/
function customCompiler() {
const processor = this;
const Compiler = processor.Compiler;
const visitors = Compiler.prototype.visitors;
visitors.link = createLinkVisitor(visitors.link);
visitors.text = createTextVisitor(visitors.text);
visitors.listItem = list_item_visitor_1.listItemVisitor;
visitors.strong = strong_visitor_1.strongVisitor;
visitors.emphasis = emphasis_visitor_1.emphasisVisitor;
visitors['comment'] = html_comment_visitor_1.htmlCommentVisitor;
visitors['htmlRaw'] = html_raw_visitor_1.htmlRawVisitor;
visitors['htmlTag'] = html_tag_visitor_1.htmlTagVisitor;
visitors.ngInlineAt = ng_inline_at_visitor_1.ngInlineAtVisitor;
visitors.tableCell = createTableCellVisitor(visitors.tableCell);
visitors.ngDocDirective = ng_doc_directive_visitor_1.ngDocDirectiveVisitor;
}
exports.customCompiler = customCompiler;
//# sourceMappingURL=custom-compiler-plugin.js.map