about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/jsonf.lua4
-rw-r--r--zet.tlv38
2 files changed, 40 insertions, 2 deletions
diff --git a/src/jsonf.lua b/src/jsonf.lua
index ecf1eea..25e0c6e 100644
--- a/src/jsonf.lua
+++ b/src/jsonf.lua
@@ -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()
diff --git a/zet.tlv b/zet.tlv
index ce10cff..e9e08cc 100644
--- a/zet.tlv
+++ b/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