从缩进的文本树创建HTML列表呈现

问题描述

我正在尝试创建缩进文本的html页面。 例如: 文本文件

1. hello
    - stack
    - overflow
        - how
    - are you

显示为:

<ol>
<il>hello</li>
<ul>
<li>stack</li> ...

,因此它将呈现为缩进列表。 我认为最好根据a similar problem in Python

的答案创建一个节点树

这是我从Go链接中克隆的结构,无法正常运行,由于某种原因,它被卡在了递归中:

func (n *node) addChildren(nodes []node) {
    childLevel := nodes[0].textStart
    for len(nodes) > 0 {
        // pop
        tempNode := nodes[0]
        nodes = nodes[1:]
        if tempNode.textStart == childLevel {
            n.children = append(n.children,tempNode)
        } else if tempNode.textStart > childLevel {
            nodes = append([]node{tempNode},nodes...)
            n.children[len(n.children)-1].addChildren(nodes)
        } else if tempNode.textStart <= n.textStart {
            nodes = append([]node{tempNode},nodes...)
            return
        }

    }
}

解决方法

我找到了Markdown

作为完成任务的最佳工具!