func linePrefix()

in Sources/Markdown/Walker/Walkers/MarkupFormatter.swift [402:448]


    func linePrefix(for element: Markup) -> String {
        var prefix = formattingOptions.customLinePrefix
        var unorderedListCount = 0
        var orderedListCount = 0
        for element in element.parentalChain {
            if element is BlockQuote {
                prefix += "> "
            } else if element is UnorderedList {
                if unorderedListCount > 0 {
                    prefix += "  "
                }
                unorderedListCount += 1
            } else if element is OrderedList {
                if orderedListCount > 0 {
                    prefix += "   "
                }
                orderedListCount += 1
            } else if !(element is ListItem),
                let parentListItem = element.parent as? ListItem {
                /*
                 Align contents with list item markers.

                 Example, unordered lists:

                 - First line
                   Second line, aligned.

                 Example, ordered lists:

                 1. First line
                    Second line, aligned.
                 1000. First line
                       Second line, aligned.
                 */

                if parentListItem.parent is UnorderedList {
                    // Unordered list markers are of fixed length.
                    prefix += "  "
                } else if let numeralPrefix = numeralPrefix(for: parentListItem) {
                    prefix += String(repeating: " ", count: numeralPrefix.count)
                }
            } else if element is BlockDirective {
                prefix += "    "
            }
        }
        return prefix
    }