summaryrefslogtreecommitdiff
path: root/worldedit/table_save.lua
diff options
context:
space:
mode:
authorAnthony Zhang <azhang9@gmail.com>2013-03-20 17:12:48 -0400
committerAnthony Zhang <azhang9@gmail.com>2013-03-20 17:12:48 -0400
commit9209d81d2022146ff53aea42dc66739b97b9138b (patch)
treef27d595bea5093c0f9371b6e71b5b8f337172689 /worldedit/table_save.lua
parent34c4475d066336b6b629195fcecd7551f82cf974 (diff)
//metasave and //metaload are now superceded by //save and //load's new functionality. worldedit.deserialize now supports every version of the WorldEdit format that has ever existed, and the new worldedit.valueversion uses file characteristics to determine which type of file format a given file uses. The new WorldEdit file format is the same as the one used by MineTest for serializing data, and is capable of storing arbitrary data, as well as leaving fields for future improvements. In other words, this is the last forward-compatibility breaking change that will be made to the file format.
Diffstat (limited to 'worldedit/table_save.lua')
-rw-r--r--worldedit/table_save.lua133
1 files changed, 0 insertions, 133 deletions
diff --git a/worldedit/table_save.lua b/worldedit/table_save.lua
deleted file mode 100644
index cbc18ae..0000000
--- a/worldedit/table_save.lua
+++ /dev/null
@@ -1,133 +0,0 @@
---[[
- Save Table to File
- Load Table from File
- v 1.0
-
- Lua 5.2 compatible
-
- Only Saves Tables, Numbers and Strings
- Insides Table References are saved
- Does not save Userdata, Metatables, Functions and indices of these
- ----------------------------------------------------
- table.save( table , filename )
-
- on failure: returns an error msg
-
- ----------------------------------------------------
- table.load( filename or stringtable )
-
- Loads a table that has been saved via the table.save function
-
- on success: returns a previously saved table
- on failure: returns as second argument an error msg
- ----------------------------------------------------
-
- Licensed under the same terms as Lua itself.
-]]--
-do
- -- declare local variables
- --// exportstring( string )
- --// returns a "Lua" portable version of the string
- local function exportstring( s )
- return string.format("%q", s)
- end
-
- --// The Save Function
- function table.save( tbl,filename )
- local charS,charE = " ","\n"
- local file,err = io.open( filename, "wb" )
- if err then return err end
-
- -- initiate variables for save procedure
- local tables,lookup = { tbl },{ [tbl] = 1 }
- file:write( "return {"..charE )
-
- for idx,t in ipairs( tables ) do
- file:write( "-- Table: {"..idx.."}"..charE )
- file:write( "{"..charE )
- local thandled = {}
-
- for i,v in ipairs( t ) do
- thandled[i] = true
- local stype = type( v )
- -- only handle value
- if stype == "table" then
- if not lookup[v] then
- table.insert( tables, v )
- lookup[v] = #tables
- end
- file:write( charS.."{"..lookup[v].."},"..charE )
- elseif stype == "string" then
- file:write( charS..exportstring( v )..","..charE )
- elseif stype == "number" then
- file:write( charS..tostring( v )..","..charE )
- end
- end
-
- for i,v in pairs( t ) do
- -- escape handled values
- if (not thandled[i]) then
-
- local str = ""
- local stype = type( i )
- -- handle index
- if stype == "table" then
- if not lookup[i] then
- table.insert( tables,i )
- lookup[i] = #tables
- end
- str = charS.."[{"..lookup[i].."}]="
- elseif stype == "string" then
- str = charS.."["..exportstring( i ).."]="
- elseif stype == "number" then
- str = charS.."["..tostring( i ).."]="
- end
-
- if str ~= "" then
- stype = type( v )
- -- handle value
- if stype == "table" then
- if not lookup[v] then
- table.insert( tables,v )
- lookup[v] = #tables
- end
- file:write( str.."{"..lookup[v].."},"..charE )
- elseif stype == "string" then
- file:write( str..exportstring( v )..","..charE )
- elseif stype == "number" then
- file:write( str..tostring( v )..","..charE )
- end
- end
- end
- end
- file:write( "},"..charE )
- end
- file:write( "}" )
- file:close()
- end
-
- --// The Load Function
- function table.load( sfile )
- local ftables,err = loadfile( sfile )
- if err then return _,err end
- local tables = ftables()
- for idx = 1,#tables do
- local tolinki = {}
- for i,v in pairs( tables[idx] ) do
- if type( v ) == "table" then
- tables[idx][i] = tables[v[1]]
- end
- if type( i ) == "table" and tables[i[1]] then
- table.insert( tolinki,{ i,tables[i[1]] } )
- end
- end
- -- link indices
- for _,v in ipairs( tolinki ) do
- tables[idx][v[2]],tables[idx][v[1]] = tables[idx][v[1]],nil
- end
- end
- return tables[1]
- end
--- close do
-end
--- ChillCode \ No newline at end of file