zet.tlv: switch file reads to new API
In the process I found a couple of bugs in parsing JSON string escapes.
This commit is contained in:
parent
d388cc1f22
commit
503ad706fb
|
@ -127,7 +127,7 @@ local function parse_string(infile, firstc)
|
||||||
|
|
||||||
if x < 32 then
|
if x < 32 then
|
||||||
error("control character in string")
|
error("control character in string")
|
||||||
elseif c == '\\' then
|
elseif chr == '\\' then
|
||||||
local c = infile:recv()
|
local c = infile:recv()
|
||||||
if c == nil then break end
|
if c == nil then break end
|
||||||
if c == "u" then
|
if c == "u" then
|
||||||
|
@ -152,7 +152,7 @@ local function parse_string(infile, firstc)
|
||||||
if not escape_chars[c] then
|
if not escape_chars[c] then
|
||||||
error("invalid escape char '" .. c .. "' in string")
|
error("invalid escape char '" .. c .. "' in string")
|
||||||
end
|
end
|
||||||
table.insert(escape_char_map_inv[c])
|
table.insert(res, escape_char_map_inv[c])
|
||||||
end
|
end
|
||||||
elseif chr == '"' then
|
elseif chr == '"' then
|
||||||
return table.concat(res), infile:recv()
|
return table.concat(res), infile:recv()
|
||||||
|
|
38
zet.tlv
38
zet.tlv
|
@ -3555,3 +3555,41 @@
|
||||||
>- ability to cross-link any card to any other, turning the tree into a graph (but still with a strong sense of hierarchy)
|
>- ability to cross-link any card to any other, turning the tree into a graph (but still with a strong sense of hierarchy)
|
||||||
>
|
>
|
||||||
>zet.tlv satisfies these properties, but isn't very intuitive or usable yet. Contributions appreciated.
|
>zet.tlv satisfies these properties, but isn't very intuitive or usable yet. Contributions appreciated.
|
||||||
|
- __teliva_timestamp:
|
||||||
|
>Mon Mar 7 07:50:32 2022
|
||||||
|
main:
|
||||||
|
>function main()
|
||||||
|
> init_colors()
|
||||||
|
> curses.curs_set(0) -- hide cursor except when editing
|
||||||
|
>
|
||||||
|
> local infile = start_reading(nil, 'zet')
|
||||||
|
> if infile then
|
||||||
|
> read_zettels(infile)
|
||||||
|
> end
|
||||||
|
> current_zettel_id = zettels.root -- cursor
|
||||||
|
> view_settings.first_zettel = zettels.root -- start rendering here
|
||||||
|
>
|
||||||
|
> while true do
|
||||||
|
> render(Window)
|
||||||
|
> update(Window)
|
||||||
|
>
|
||||||
|
> -- save zettels, but hold on to previous state on disk
|
||||||
|
> -- until last possible second
|
||||||
|
> local outfile = io.open('teliva_tmp', 'w')
|
||||||
|
> if outfile then
|
||||||
|
> write_zettels(outfile)
|
||||||
|
> local status, message = os.rename('teliva_tmp', 'zet')
|
||||||
|
> assert(status, message) -- unceremoniously abort, but we hopefully only lost a little
|
||||||
|
> end
|
||||||
|
> -- TODO: what if io.open failed for a non-sandboxing related reason?!
|
||||||
|
> -- We could silently fail to save.
|
||||||
|
> end
|
||||||
|
>end
|
||||||
|
- __teliva_timestamp:
|
||||||
|
>Mon Mar 7 07:51:06 2022
|
||||||
|
__teliva_note:
|
||||||
|
>switch to new file API for reading
|
||||||
|
read_zettels:
|
||||||
|
>function read_zettels(infile)
|
||||||
|
> zettels = jsonf.decode(infile)
|
||||||
|
>end
|
||||||
|
|
Loading…
Reference in New Issue