@atlaskit/editor-wikimarkup-transformer
Version:
Wiki markup transformer for JIRA and Confluence
65 lines • 1.95 kB
JavaScript
import { encode } from '..';
import { paragraph } from './paragraph';
import { unknown } from './unknown';
import { codeBlock } from './code-block';
import { mediaGroup } from './media-group';
import { mediaInline } from './media-inline';
export var listItem = function listItem(node, prefix, context) {
var result = [];
var contentBuffer = [];
node.forEach(function (n) {
switch (n.type.name) {
case 'paragraph':
{
contentBuffer.push(paragraph(n, {
context: context
}));
break;
}
case 'bulletList':
case 'orderedList':
case 'taskList':
{
if (contentBuffer.length) {
result.push("".concat(prefix, " ").concat(contentBuffer.join('\n')));
contentBuffer = [];
}
// eslint-disable-next-line @atlassian/perf-linting/no-expensive-split-replace -- Ignored via go/ees017 (to be fixed)
var nestedList = encode(n, context).split('\n').map(function (line) {
if (['#', '*'].indexOf(line.substr(0, 1)) !== -1) {
return "".concat(prefix).concat(line);
}
return line;
}).join('\n');
result.push(nestedList);
break;
}
case 'codeBlock':
{
contentBuffer.push(codeBlock(n));
break;
}
case 'mediaInline':
{
contentBuffer.push(mediaInline(n, {
context: context
}));
break;
}
case 'mediaSingle':
{
// mediaSingle and mediaGroup are holding the same conversion logic
contentBuffer.push(mediaGroup(n, {
context: context
}));
break;
}
default:
contentBuffer.push(unknown(n));
}
});
if (contentBuffer.length) {
result.push("".concat(prefix, " ").concat(contentBuffer.join('\n')));
}
return result.join('\n');
};