bugfixes to make editor work now

This commit is contained in:
Productive2 2021-02-18 22:25:13 +01:00
parent 3fd83a9043
commit f4441b77b4
3 changed files with 12 additions and 9 deletions

View File

@ -13,7 +13,7 @@ let e = newLineEditor()
if paramCount() > 0:
let arg = paramStr(1)
if fileExists(arg):
e.content = readFile(arg).deserialize(replaceBS = false)
e.content = readFile(arg).fromString()
e.bindKey("ctrl+s"):
e.finish()
e.prompt = ""

View File

@ -1,5 +0,0 @@
good
Hello there
heee

View File

@ -19,10 +19,11 @@ proc Y*(ml: Multiline): int =
# constructor
proc newMultiline*: Multiline =
proc newMultiline*(initEmpty: bool = true): Multiline =
new(result)
result.lines = @[]
result.lines.add(newLine())
if initEmpty:
result.lines.add(newLine())
result.x = 0
result.y = 0
@ -148,6 +149,8 @@ proc getLine*(ml: Multiline, line: int = -1): string =
else:
""
# without the extra args these work together to convert a multiline to a single
# line string. With extra args customizable
proc serialize*(ml: Multiline, sep: string = r"\n", replaceBS: bool = true): string =
# replaceBS = replace backslash
for line in ml.lines:
@ -158,7 +161,7 @@ proc serialize*(ml: Multiline, sep: string = r"\n", replaceBS: bool = true): str
result[0..result.high() - sep.len()]
proc deserialize*(str: string, sep: string = r"\n", replaceBS: bool = true): Multiline =
result = newMultiline()
result = newMultiline(initEmpty = false)
for line in str.split(sep):
if replaceBS:
result.lines.add(newLine(line.replace(r"\\", r"\")))
@ -168,6 +171,11 @@ proc deserialize*(str: string, sep: string = r"\n", replaceBS: bool = true): Mul
result.y = result.high()
result.x = result.lineLen()
proc fromString*(str: string): Multiline =
# simple load of string to multiline
deserialize(str, sep = "\n", replaceBS = false)
proc getContent*(ml: Multiline): string =
# simple convert of multiline to string
ml.serialize(sep = "\n", replaceBS = false)