@awesome-fe/translate
Version:
Translation utils
36 lines • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SourceCodeRenderer = void 0;
const block_node_renderer_1 = require("./block-node-renderer");
const need_delimiter_1 = require("./utils/need-delimiter");
function getDelimiter(style) {
switch (style) {
case 'source':
return '----';
case 'literal':
return '....';
case 'listing':
return '----';
default:
return '====';
}
}
function needStyleAttribute(style, node) {
return style === 'source' || style === 'literal' && !(0, need_delimiter_1.needDelimiter)(node);
}
class SourceCodeRenderer extends block_node_renderer_1.BlockNodeRenderer {
positionalAttributes = [{ name: 'style', position: 1 }, { name: 'language', position: 2 }, { name: 'linenums', position: 3 }];
getDefaultAttributes(node) {
const style = node.getStyle();
return { style: needStyleAttribute(style, node) ? '' : style, linenums: '' };
}
renderBody(node) {
const children = node.getSourceLines()
.map(it => ' '.repeat(+node.getAttribute('indent')) + it)
.join('\n');
const delimiter = getDelimiter(node.getStyle());
return [delimiter, children, delimiter].filter(it => !!it).join('\n') + '\n';
}
}
exports.SourceCodeRenderer = SourceCodeRenderer;
//# sourceMappingURL=source-code-renderer.js.map