diff options
Diffstat (limited to 'life.tlv')
-rw-r--r-- | life.tlv | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/life.tlv b/life.tlv index 7567697..22293ea 100644 --- a/life.tlv +++ b/life.tlv @@ -333,54 +333,6 @@ > 'test_check_screen') >end - __teliva_timestamp: original - start_reading: - >-- primitive for reading files from a file system (or, later, network) - >-- returns a channel or nil on error - >-- read lines from the channel using :recv() - >-- recv() on the channel will indicate end of file. - >function start_reading(fs, filename) - > local result = task.Channel:new() - > local infile = io.open(filename) - > if infile == nil then return nil end - > task.spawn(reading_task, infile, result) - > return result - >end - > - >function reading_task(infile, chanout) - > for line in infile:lines() do - > chanout:send(line) - > end - > chanout:send(nil) -- eof - >end -- __teliva_timestamp: original - start_writing: - >-- primitive for writing files to a file system (or, later, network) - >-- returns a channel or nil on error - >-- write to the channel using :send() - >-- indicate you're done writing by calling :close() - >-- file will not be externally visible until :close() - >function start_writing(fs, filename) - > local result = task.Channel:new() - > local initial_filename = os.tmpname() - > local outfile = io.open(initial_filename, 'w') - > if outfile == nil then return nil end - > result.close = function() - > result:send(nil) -- end of file - > outfile:close() - > os.rename(initial_filename, filename) - > end - > task.spawn(writing_task, outfile, result) - > return result - >end - > - >function writing_task(outfile, chanin) - > while true do - > local line = chanin:recv() - > if line == nil then break end -- end of file - > outfile:write(line) - > end - >end -- __teliva_timestamp: original grid: >-- main data structure >grid = {} |