|
|
|
@ -11,6 +11,10 @@ type node struct {
|
|
|
|
|
comma bool
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *node) hasChildren() bool {
|
|
|
|
|
return n.end != nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *node) parent() *node {
|
|
|
|
|
if n.directParent == nil {
|
|
|
|
|
return nil
|
|
|
|
@ -35,16 +39,6 @@ func (n *node) append(child *node) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *node) collapseThisOrParent() *node {
|
|
|
|
|
if n.end == nil || n.isCollapsed() {
|
|
|
|
|
if n.parent() != nil {
|
|
|
|
|
return n.parent().collapseThisOrParent()
|
|
|
|
|
}
|
|
|
|
|
return n
|
|
|
|
|
}
|
|
|
|
|
return n.collapse()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *node) collapse() *node {
|
|
|
|
|
if n.end != nil {
|
|
|
|
|
n.collapsed = n.next
|
|
|
|
@ -69,7 +63,3 @@ func (n *node) expand() {
|
|
|
|
|
n.collapsed = nil
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *node) atEnd() bool {
|
|
|
|
|
return n.next == nil
|
|
|
|
|
}
|
|
|
|
|