UNPKG

@awesome-fe/translate

Version:
67 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.listItemVisitor = void 0; var pad_1 = require("./utils/pad"); var lineFeed = '\n'; var space = ' '; var leftSquareBracket = '['; var rightSquareBracket = ']'; var lowercaseX = 'x'; var ceil = Math.ceil; var blank = lineFeed + lineFeed; var tabSize = 4; // Stringify a list item. // // Prefixes the content with a checked checkbox when `checked: true`: // // ```markdown // [x] foo // ``` // // Prefixes the content with an unchecked checkbox when `checked: false`: // // ```markdown // [ ] foo // ``` function listItemVisitor(node, parent, position, bullet) { var self = this; var style = self.options.listItemIndent; var marker = node.marker || bullet || self.options.bullet; var spread = node.spread == null ? true : node.spread; var checked = node.checked; var children = node.children; var length = children.length; var values = []; var index = -1; var value; var indent; var spacing; while (++index < length) { values[index] = self.visit(children[index], node); } value = values.join(spread ? blank : lineFeed); if (typeof checked === 'boolean') { // Note: I’d like to be able to only add the space between the check and // the value, but unfortunately github does not support empty list-items // with a checkbox :( value = leftSquareBracket + (checked ? lowercaseX : space) + rightSquareBracket + space + value; } if (style === '1' || (style === 'mixed' && value.indexOf(lineFeed) === -1)) { indent = marker.length + 1; spacing = space; } else { indent = ceil((marker.length + 1) / tabSize) * tabSize; spacing = space.repeat(indent - marker.length); } return value ? marker + spacing + pad_1.pad(value, indent / tabSize).slice(indent) : marker; } exports.listItemVisitor = listItemVisitor; //# sourceMappingURL=list-item-visitor.js.map