func concatNodes(a, b types.Node) bool { switch { case a.Type() == types.NodeText && b.Type() == types.NodeText: return concatText(a, b) case a.Type() == types.NodeCode && b.Type() == types.NodeCode: return concatCode(a, b) case a.Type() == types.NodeCode && b.Type() == types.NodeText: t := b.(*types.TextNode) if strings.TrimSpace(t.Value) == "" { return true } case a.Type() == types.NodeURL && b.Type() == types.NodeURL: return concatURL(a, b) case types.IsItemsList(a.Type()) && types.IsItemsList(b.Type()): return concatItemsList(a, b) } return false }
// blockSquashable returns true if a node of type t can be squash in a block. func blockSquashable(n types.Node) bool { if n.Block() == nil { return false } return types.IsInline(n.Type()) }