Commit 5cea2b4c authored by Andrew Fontaine's avatar Andrew Fontaine

Merge branch '227598-make-ordered-list-configurable' into 'master'

Static Site Editor: Ordered lists shouldn’t increment automatically

See merge request gitlab-org/gitlab!36851
parents 5ad67efb 7746c56a
...@@ -4,6 +4,7 @@ import { defaults, repeat } from 'lodash'; ...@@ -4,6 +4,7 @@ import { defaults, repeat } from 'lodash';
const DEFAULTS = { const DEFAULTS = {
subListIndentSpaces: 4, subListIndentSpaces: 4,
unorderedListBulletChar: '-', unorderedListBulletChar: '-',
incrementListMarker: false,
strong: '*', strong: '*',
emphasis: '_', emphasis: '_',
}; };
...@@ -15,12 +16,16 @@ const countIndentSpaces = text => { ...@@ -15,12 +16,16 @@ const countIndentSpaces = text => {
}; };
const buildHTMLToMarkdownRender = (baseRenderer, formattingPreferences = {}) => { const buildHTMLToMarkdownRender = (baseRenderer, formattingPreferences = {}) => {
const { subListIndentSpaces, unorderedListBulletChar, strong, emphasis } = defaults( const {
formattingPreferences, subListIndentSpaces,
DEFAULTS, unorderedListBulletChar,
); incrementListMarker,
strong,
emphasis,
} = defaults(formattingPreferences, DEFAULTS);
const sublistNode = 'LI OL, LI UL'; const sublistNode = 'LI OL, LI UL';
const unorderedListItemNode = 'UL LI'; const unorderedListItemNode = 'UL LI';
const orderedListItemNode = 'OL LI';
const emphasisNode = 'EM, I'; const emphasisNode = 'EM, I';
const strongNode = 'STRONG, B'; const strongNode = 'STRONG, B';
...@@ -61,6 +66,11 @@ const buildHTMLToMarkdownRender = (baseRenderer, formattingPreferences = {}) => ...@@ -61,6 +66,11 @@ const buildHTMLToMarkdownRender = (baseRenderer, formattingPreferences = {}) =>
return baseResult.replace(/^(\s*)([*|-])/, `$1${unorderedListBulletChar}`); return baseResult.replace(/^(\s*)([*|-])/, `$1${unorderedListBulletChar}`);
}, },
[orderedListItemNode](node, subContent) {
const baseResult = baseRenderer.convert(node, subContent);
return incrementListMarker ? baseResult : baseResult.replace(/^(\s*)\d\./, '$11.');
},
[emphasisNode](node, subContent) { [emphasisNode](node, subContent) {
const result = baseRenderer.convert(node, subContent); const result = baseRenderer.convert(node, subContent);
......
---
title: When generating markdown for ordered lists, the list marker should not increment
merge_request: 36851
author:
type: changed
...@@ -68,6 +68,28 @@ describe('HTMLToMarkdownRenderer', () => { ...@@ -68,6 +68,28 @@ describe('HTMLToMarkdownRenderer', () => {
); );
}); });
describe('OL LI visitor', () => {
it.each`
listItem | result | incrementListMarker | action
${'2. list item'} | ${'1. list item'} | ${false} | ${'increments'}
${' 3. list item'} | ${' 1. list item'} | ${false} | ${'increments'}
${'3. list item'} | ${'3. list item'} | ${true} | ${'does not increment'}
`(
'$action a list item counter when incrementListMaker is $incrementListMarker',
({ listItem, result, incrementListMarker }) => {
const subContent = null;
htmlToMarkdownRenderer = buildHTMLToMarkdownRenderer(baseRenderer, {
incrementListMarker,
});
baseRenderer.convert.mockReturnValueOnce(listItem);
expect(htmlToMarkdownRenderer['OL LI'](NODE, subContent)).toBe(result);
expect(baseRenderer.convert).toHaveBeenCalledWith(NODE, subContent);
},
);
});
describe('STRONG, B visitor', () => { describe('STRONG, B visitor', () => {
it.each` it.each`
input | strongCharacter | result input | strongCharacter | result
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment