• Printing Table to Text File
    6 replies, posted
Does anyone know of a way to store a table in a file and use it later? example would be something like this [lua] local stuff = {} function savetable(tbl) file.Write("table.txt", tbl) end function loadtable(tbl) if file.Exists("table.txt") then stuff = (file.Read("table.txt")) end end [/lua] Of course that wouldn't work, so does anyone know of a way to make it work?
I made [URL="http://www.facepunch.com/showthread.php?t=1194008"]this[/URL] a while ago. It will turn your table into a string and it will turn that string back to a table. [editline]asd[/editline] Chessnut suggested [i]util.[/i] functions. Those two convert to and from a human-readable format, but are restricted to simple data types. vON has much more possibilities, but the output is not very human-readable.
glon.encode and glon.decode
util.TableToKeyValues(<table>) - Human Readable glon.encode(<table>) - Not readable. util.KeyValuesToTable(<read stuff>) glon.decode(<read stuff>)
[QUOTE=Chessnut;37526845]util.TableToKeyValues(<table>) - Human Readable glon.encode(<table>) - Not readable. util.KeyValuesToTable(<read stuff>) glon.decode(<read stuff>)[/QUOTE] I could never get KeyValues to work quite right. (also, I want it to be human readable and editable) Do you have an example or something you could show me? [editline]3rd September 2012[/editline] [lua]stuff = (file.Exists("table.txt") and KeyValuesToTable(file.Read("table.txt")) or {} ) function addtotable(args) if not table.HasValue(stuff, args) then table.insert(stuff , args) file.Write("table.txt" , TableToKeyValues(stuff)) end end[/lua] This wouldn't work quite right for me, which confused me a ton (I tried a lot to get it to work, nothing did).
Depending on the structure of your table, my [URL="https://sites.google.com/site/jamesaddons/libraries/ini-parser"]INI parser[/URL] might interest you. For example, You could have the table : [Lua]local Table = { ["SomeName"] = { ["SomeVar"] = "Hey", ["SomeVar2"] = "Hey", ["SomeVar3"] = "Hey", ["SomeVar4"] = "Hey" }, ["SomeOtherName"] = { ["SomeOtherVar"] = "Hey", ["SomeOtherVar2"] = "Hey", ["SomeOtherVar3"] = "Hey", ["SomeOtherVar4"] = "Hey" } } [/lua] using my library you could turn it into this: [Code] [SomeName] SomeVar = "Hey" SomeVar2 = "Hey" SomeVar3 = "Hey" SomeVar4 = "Hey" [SomeOtherName] SomeOtherVar = "Hey" SomeOtherVar2 = "Hey" SomeOtherVar3 = "Hey" SomeOtherVar4 = "Hey" [/CODE] using this [Lua] local Parser = INIParser.New( ) Parser.Data = MyTable print( tostring( Parser ) ) [/lua] and get it back to it's Lua form by doing [lua] local Parser = INIParser.New( The_String_That_Got_Outputted ) PrintTable( Parser:GetData( ) ) [/lua]
[QUOTE=James xX;37527713]Depending on the structure of your table, my [URL="https://sites.google.com/site/jamesaddons/libraries/ini-parser"]INI parser[/URL] might interest you. For example, You could have the table : [Lua]local Table = { ["SomeName"] = { ["SomeVar"] = "Hey", ["SomeVar2"] = "Hey", ["SomeVar3"] = "Hey", ["SomeVar4"] = "Hey" }, ["SomeOtherName"] = { ["SomeOtherVar"] = "Hey", ["SomeOtherVar2"] = "Hey", ["SomeOtherVar3"] = "Hey", ["SomeOtherVar4"] = "Hey" } } [/lua] using my library you could turn it into this: [Code] [SomeName] SomeVar = "Hey" SomeVar2 = "Hey" SomeVar3 = "Hey" SomeVar4 = "Hey" [SomeOtherName] SomeOtherVar = "Hey" SomeOtherVar2 = "Hey" SomeOtherVar3 = "Hey" SomeOtherVar4 = "Hey" [/CODE] using this [Lua] local Parser = INIParser.New( ) Parser.Data = MyTable print( tostring( Parser ) ) [/lua] and get it back to it's Lua form by doing [lua] local Parser = INIParser.New( The_String_That_Got_Outputted ) PrintTable( Parser:GetData( ) ) [/lua][/QUOTE] My tables are mainly just basic {"item 1", "item 2", "item 3"}. But I'll look into that. [editline]3rd September 2012[/editline] It doesn't really seem like the parser would be necessary for this, I really would rather just see an example of KeyValues working correctly.
Sorry, you need to Log In to post a reply to this thread.