Advertisement
Guest User

writer

a guest
Sep 21st, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.60 KB | None | 0 0
  1. --dumps contents of table to string, including nested tables, excluding circular references
  2.  
  3. local P = {}
  4. setmetatable(P, {__index = _G})
  5. setfenv(1,P)
  6.   tableIDsDone = {}
  7.  
  8.  
  9. function tableToFile(tblToConvert, name)
  10.  
  11.   local result = tableToString(tblToConvert)
  12.   tableIDsDone = {}
  13.   stringToFile(name, result)
  14.  
  15. end
  16.  
  17. function tableToString(tbl)
  18.  
  19.   table.insert(tableIDsDone, tostring(tbl))
  20.   local resultingString = ''
  21.   for k,v in pairs(tbl) do
  22.    
  23.     if inTable(tostring(v),tableIDsDone) then
  24.    
  25.       resultingString = resultingString..k..'\t'..'table(Repeated Reference)'..'\n'
  26.     break end
  27.     if type(v)=='table' then
  28.    
  29.       resultingString = resultingString..k..'\t'..'table'..'\n'    
  30.       local newTableString = tabAfterNewLine('\t'..tableToString(v))
  31.       resultingString = resultingString..newTableString
  32.     else
  33.       if type(v)=='number' or type(v)=='boolean' or type(v)=='string' then
  34.         resultingString = resultingString..k..'\t'..type(v)..' '..tostring(v)..'\n'
  35.       else
  36.       resultingString = resultingString..k..'\t'..type(v)..'\n'
  37.       end
  38.     end
  39.   end
  40.   return resultingString
  41. end
  42.  
  43. function inTable(membershipTest, tableToSearch)
  44.  
  45.   for _,v in pairs(tableToSearch) do
  46.     if v == membershipTest then return true end
  47.   end
  48.   return false
  49. end
  50.  
  51.  
  52. function tabAfterNewLine(string)
  53.  
  54.   return string.gsub(string, '\n', '\n\t')
  55.  
  56. end
  57.  
  58. function stringToFile(path, text)
  59.  
  60.   local file = assert(io.open(path, 'w'))
  61.   file:write(text)
  62.   file:close()
  63. end
  64.  
  65. beehouse = peripheral.wrap('right')
  66. tableToFile(beehouse.getAllStacks(), 'blah')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement