diff --git a/kernel/model/export.go b/kernel/model/export.go index a94e4f2fa..47e53b532 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -2365,6 +2365,65 @@ func exportTree(tree *parse.Tree, wysiwyg, keepFold, avHiddenCol bool, } else if av.KeyTypeLineNumber == cell.Value.Type { val = strconv.Itoa(rowNum) rowNum++ + } else if av.KeyTypeRelation == cell.Value.Type { + for i, v := range cell.Value.Relation.Contents { + if nil == v { + continue + } + + if av.KeyTypeBlock == v.Type && nil != v.Block { + val = v.Block.Content + if !wysiwyg { + val = string(lex.EscapeProtyleMarkers([]byte(val))) + val = strings.ReplaceAll(val, "\\|", "|") + val = strings.ReplaceAll(val, "|", "\\|") + } + + val = strings.ReplaceAll(val, "\n", " ") + mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(val)}) + } + if i < len(cell.Value.Relation.Contents)-1 { + mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(", ")}) + } + } + continue + } else if av.KeyTypeRollup == cell.Value.Type { + for i, v := range cell.Value.Rollup.Contents { + if nil == v { + continue + } + + if av.KeyTypeBlock == v.Type { + if nil != v.Block { + val = v.Block.Content + if !wysiwyg { + val = string(lex.EscapeProtyleMarkers([]byte(val))) + val = strings.ReplaceAll(val, "\\|", "|") + val = strings.ReplaceAll(val, "|", "\\|") + } + + val = strings.ReplaceAll(val, "\n", " ") + mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(val)}) + } + } else if av.KeyTypeText == v.Type { + val = v.Text.Content + if !wysiwyg { + val = string(lex.EscapeProtyleMarkers([]byte(val))) + val = strings.ReplaceAll(val, "\\|", "|") + val = strings.ReplaceAll(val, "|", "\\|") + } + + val = strings.ReplaceAll(val, "\n", " ") + mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(val)}) + } else { + mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(v.String(true))}) + } + + if i < len(cell.Value.Rollup.Contents)-1 { + mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(", ")}) + } + } + continue } if "" == val {