diff --git a/ElementX/Sources/Other/HTMLParsing/AttributedStringBuilderV2.swift b/ElementX/Sources/Other/HTMLParsing/AttributedStringBuilderV2.swift index 2565f98ae..a757d7b35 100644 --- a/ElementX/Sources/Other/HTMLParsing/AttributedStringBuilderV2.swift +++ b/ElementX/Sources/Other/HTMLParsing/AttributedStringBuilderV2.swift @@ -206,6 +206,10 @@ struct AttributedStringBuilderV2: AttributedStringBuilderProtocol { case "ul", "ol": var listIndex = 1 + if let startAttribute = try? childElement.attr("start"), let startIndex = Int(startAttribute) { + listIndex = startIndex + } + content = attributedString(element: childElement, documentBody: documentBody, preserveFormatting: preserveFormatting, listTag: tag, listIndex: &listIndex, indentLevel: indentLevel + 1) case "li": diff --git a/UnitTests/Sources/AttributedStringBuilderTests.swift b/UnitTests/Sources/AttributedStringBuilderTests.swift index f8a977c27..93a50320e 100644 --- a/UnitTests/Sources/AttributedStringBuilderTests.swift +++ b/UnitTests/Sources/AttributedStringBuilderTests.swift @@ -753,6 +753,21 @@ class AttributedStringBuilderV1Tests: XCTestCase { } } + func testOutOfOrderListNubmering() { + let htmlString = "