@awesome-fe/translate
Version:
Translation utils
43 lines • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BlockQuoteRenderer = void 0;
const block_node_renderer_1 = require("./block-node-renderer");
const need_delimiter_1 = require("./utils/need-delimiter");
class BlockQuoteRenderer extends block_node_renderer_1.BlockNodeRenderer {
positionalAttributes = [{ name: 'style', position: 1 }, { name: 'attribution', position: 2 }, { name: 'citetitle', position: 3 }];
getDefaultAttributes(node) {
const hasAnotherPositionalAttribute = this.positionalAttributes.some(it => it.name !== 'style' && node.hasAttribute(it.name));
if (!isQuote(node) || hasAnotherPositionalAttribute) {
return {};
}
else {
return { style: 'quote' };
}
}
getBlockAttributes(node) {
if (isQuote(node) && !(0, need_delimiter_1.needDelimiter)(node)) {
return [];
}
else {
return this.getNonDefaultAttributes(node);
}
}
renderBody(node) {
const children = this.renderChildren(node);
if (isQuote(node) && !(0, need_delimiter_1.needDelimiter)(node)) {
const attributes = node.getAttributes();
const attribution = attributes.attribution;
const citetitle = attributes.citetitle;
return `"${children}"\n-- ${[attribution, citetitle].filter(it => !!it).join(', ')}`;
}
else {
const delimiter = (0, need_delimiter_1.needDelimiter)(node) ? '____' : '';
return [delimiter, children.trim(), delimiter].filter(it => !!it).join('\n');
}
}
}
exports.BlockQuoteRenderer = BlockQuoteRenderer;
function isQuote(node) {
return node.getStyle() === 'quote';
}
//# sourceMappingURL=block-quote-renderer.js.map