aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/persist.lua26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/luarocks/persist.lua b/src/luarocks/persist.lua
index 0d37b04a..b7b5252d 100644
--- a/src/luarocks/persist.lua
+++ b/src/luarocks/persist.lua
@@ -125,6 +125,26 @@ write_table = function(out, tbl, level, field_order)
125 out:write("}") 125 out:write("}")
126end 126end
127 127
128--- Save the contents of a table to a string.
129-- Each element of the table is saved as a global assignment.
130-- Only numbers, strings and tables (containing numbers, strings
131-- or other recursively processed tables) are supported.
132-- @param tbl table: the table containing the data to be written
133-- @param field_order table: an optional array indicating the order of top-level fields.
134-- @return string or (nil, string): string if successful, or nil and a
135-- message in case of errors.
136function save_from_table_to_string(tbl, field_order)
137 local out = {buffer = {}}
138 function out:write(data) table.insert(self.buffer, data) end
139 for k, v, sub_order in util.sortedpairs(tbl, field_order) do
140 out:write(k.." = ")
141 write_value(out, v, 0, sub_order)
142 out:write("\n")
143 end
144 return table.concat(out.buffer)
145end
146
147
128--- Save the contents of a table in a file. 148--- Save the contents of a table in a file.
129-- Each element of the table is saved as a global assignment. 149-- Each element of the table is saved as a global assignment.
130-- Only numbers, strings and tables (containing numbers, strings 150-- Only numbers, strings and tables (containing numbers, strings
@@ -139,11 +159,7 @@ function save_from_table(filename, tbl, field_order)
139 if not out then 159 if not out then
140 return nil, "Cannot create file at "..filename 160 return nil, "Cannot create file at "..filename
141 end 161 end
142 for k, v, sub_order in util.sortedpairs(tbl, field_order) do 162 out:write(save_from_table_to_string(tbl, field_order))
143 out:write(k.." = ")
144 write_value(out, v, 0, sub_order)
145 out:write("\n")
146 end
147 out:close() 163 out:close()
148 return true 164 return true
149end 165end