Started refactor
This commit is contained in:
44
src_v2/utils/printers.nim
Normal file
44
src_v2/utils/printers.nim
Normal file
@@ -0,0 +1,44 @@
|
||||
import std/[
|
||||
options,
|
||||
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")
|
||||
|
||||
func stringifyBlock*(blockName: string, indent = 0, xs: varargs[string]): string =
|
||||
let fieldIndent = indent + INDENT_SIZE
|
||||
|
||||
concat(
|
||||
@[&"{blockName}("],
|
||||
@xs.mapIt(it.indent(fieldIndent)),
|
||||
@[")"],
|
||||
)
|
||||
.join("\n")
|
||||
|
||||
func stringifySeq*[T](xs: seq[T], stringifyFn: (T) -> string, indent = 0): string =
|
||||
let fieldIndent = indent + INDENT_SIZE
|
||||
@[
|
||||
"@[",
|
||||
xs
|
||||
.mapIt(it.stringifyFn())
|
||||
.join(",\n")
|
||||
.indent(fieldIndent),
|
||||
"]",
|
||||
]
|
||||
.join("\n")
|
||||
Reference in New Issue
Block a user