Aggiunta progetto iniziale
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
-- CalcPaths.lua by Egaltech s.r.l. 2022/03/30
|
||||
-- Calcolo percorsi di lavoro per Stampa 3d
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local CSVManager = {}
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
|
||||
EgtOutLog( ' CSVManager started', 1)
|
||||
|
||||
-- Dati
|
||||
local AMD = require( 'AddManData')
|
||||
|
||||
function toCSV (t)
|
||||
local s = ""
|
||||
for _,p in pairs(t) do
|
||||
s = s .. "," .. escapeCSV(p)
|
||||
end
|
||||
return string.sub(s, 2) -- remove first comma
|
||||
end
|
||||
|
||||
function escapeCSV (s)
|
||||
if string.find(s, '[,"]') then
|
||||
ns = '"' .. string.gsub(s, '"', '""') .. '"'
|
||||
end
|
||||
return s
|
||||
end
|
||||
|
||||
local function fromCSV(s)
|
||||
s = s .. ';' -- ending comma
|
||||
local t = {} -- table to collect fields
|
||||
local fieldstart = 1
|
||||
repeat
|
||||
-- next field is quoted? (start with `"'?)
|
||||
if string.find(s, '^"', fieldstart) then
|
||||
local a, c
|
||||
local i = fieldstart
|
||||
repeat
|
||||
-- find closing quote
|
||||
a, i, c = string.find(s, '"("?)', i+1)
|
||||
until c ~= '"' -- quote not followed by quote?
|
||||
if not i then error('unmatched "') end
|
||||
local f = string.sub(s, fieldstart+1, i-1)
|
||||
table.insert(t, (string.gsub(f, '""', '"')))
|
||||
fieldstart = string.find(s, ';', i) + 1
|
||||
else -- unquoted; find next comma
|
||||
local nexti = string.find(s, ';', fieldstart)
|
||||
table.insert(t, string.sub(s, fieldstart, nexti-1))
|
||||
fieldstart = nexti + 1
|
||||
end
|
||||
until fieldstart > string.len(s)
|
||||
return t
|
||||
end
|
||||
|
||||
function read_file( path)
|
||||
local file = io.open( path, "r") -- r read mode and b binary mode
|
||||
if not file then return nil end
|
||||
local CSVTable = {}
|
||||
|
||||
for line in io.lines( path) do
|
||||
CSVTable[#CSVTable + 1] = fromCSV( line)
|
||||
end
|
||||
|
||||
file:close()
|
||||
|
||||
return CSVTable
|
||||
end
|
||||
|
||||
return CSVManager
|
||||
Reference in New Issue
Block a user