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
|
||||
error("control character in string")
|
||||
elseif c == '\\' then
|
||||
elseif chr == '\\' then
|
||||
local c = infile:recv()
|
||||
if c == nil then break end
|
||||
if c == "u" then
|
||||
|
@ -152,7 +152,7 @@ local function parse_string(infile, firstc)
|
|||
if not escape_chars[c] then
|
||||
error("invalid escape char '" .. c .. "' in string")
|
||||
end
|
||||
table.insert(escape_char_map_inv[c])
|
||||
table.insert(res, escape_char_map_inv[c])
|
||||
end
|
||||
elseif chr == '"' then
|
||||
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)
|
||||
>
|
||||
>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