Extract stringifying functions

This commit is contained in:
Florian Schroedl
2022-05-04 17:00:00 +02:00
parent 074c9f0c2d
commit a33dce136e
2 changed files with 32 additions and 16 deletions

View File

@@ -8,6 +8,7 @@ import std/[
import fp/[
maybe,
]
import ../utils/printers
## Inline Block
type
@@ -102,22 +103,15 @@ type
const INDENT_SIZE = 2;
func stringifySpecialFields(x: OrgBlock, indent = 0): string =
(
case x.kind:
of orgHeading:
@[
("kind", $x.kind, true),
("level", $x.level, true),
("todo", $x.todo, x.todo.isSome()),
("headlineContent", $x.headlineContent, x.headlineContent.len != 0),
("headlineChildrenText", $x.headlineChildrenText, x.headlineChildrenText.len != 0),
("children", $x.children, true),
]
else: @[])
.filter(x => x[2])
.map(x => x[0] & ": " & x[1])
.join(",\n")
@[
("kind", $x.kind, true),
("level", $x.level, true),
("todo", $x.todo, x.todo.isSome()),
("headlineContent", $x.headlineContent, x.headlineContent.len != 0),
("headlineChildrenText", $x.headlineChildrenText, x.headlineChildrenText.len != 0),
("children", $x.children, true),
]
.stringifyFields()
proc `$`*(x: OrgBlock, indent = 0): string =
let fieldIndent = indent + INDENT_SIZE

22
src/utils/printers.nim Normal file
View File

@@ -0,0 +1,22 @@
import std/[
sequtils,
sequtils,
strformat,
strutils,
sugar,
]
const INDENT_SIZE* = 2;
func stringifyFields*(
xs: seq[tuple[
field: string,
value: string,
print: bool
]],
indent = 0,
): string =
xs
.filter(x => x.print)
.map(x => x.field & ": " & $x.value)
.join(",\n")