Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Merge pull request #3128 from matrix-org/bwindels/edit-nested-lists
Browse files Browse the repository at this point in the history
Fix: take list nesting into account for indenting
  • Loading branch information
bwindels authored Jun 21, 2019
2 parents d3b5524 + 503d702 commit 701e18d
Showing 1 changed file with 20 additions and 7 deletions.
27 changes: 20 additions & 7 deletions src/editor/deserialize.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ function parseCodeBlock(n, partCreator) {
return parts;
}

function parseElement(n, partCreator) {
function parseElement(n, partCreator, state) {
switch (n.nodeName) {
case "A":
return parseLink(n, partCreator);
Expand All @@ -86,12 +86,18 @@ function parseElement(n, partCreator) {
return partCreator.plain(`\`${n.textContent}\``);
case "DEL":
return partCreator.plain(`<del>${n.textContent}</del>`);
case "LI":
case "LI": {
const indent = " ".repeat(state.listDepth - 1);
if (n.parentElement.nodeName === "OL") {
return partCreator.plain(` 1. `);
return partCreator.plain(`${indent}1. `);
} else {
return partCreator.plain(` - `);
return partCreator.plain(`${indent}- `);
}
}
case "OL":
case "UL":
state.listDepth = (state.listDepth || 0) + 1;
// es-lint-disable-next-line no-fallthrough
default:
// don't textify block nodes we'll decend into
if (!checkDecendInto(n)) {
Expand Down Expand Up @@ -161,6 +167,7 @@ function parseHtmlMessage(html, partCreator) {
const parts = [];
let lastNode;
let inQuote = false;
const state = {};

function onNodeEnter(n) {
if (checkIgnored(n)) {
Expand All @@ -178,7 +185,7 @@ function parseHtmlMessage(html, partCreator) {
if (n.nodeType === Node.TEXT_NODE) {
newParts.push(...parseAtRoomMentions(n.nodeValue, partCreator));
} else if (n.nodeType === Node.ELEMENT_NODE) {
const parseResult = parseElement(n, partCreator);
const parseResult = parseElement(n, partCreator, state);
if (parseResult) {
if (Array.isArray(parseResult)) {
newParts.push(...parseResult);
Expand Down Expand Up @@ -207,8 +214,14 @@ function parseHtmlMessage(html, partCreator) {
if (checkIgnored(n)) {
return;
}
if (n.nodeName === "BLOCKQUOTE") {
inQuote = false;
switch (n.nodeName) {
case "BLOCKQUOTE":
inQuote = false;
break;
case "OL":
case "UL":
state.listDepth -= 1;
break;
}
lastNode = n;
}
Expand Down

0 comments on commit 701e18d

Please sign in to comment.