Guest User

Untitled

a guest
Feb 16th, 2018
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.35 KB | None | 0 0
  1. function tranformer(schema, data, operation)
  2.  
  3.     function _tranformer(object, schema, tableData)
  4.         for fieldIndex, schemaField in ipairs(schema) do        
  5.  
  6.             local tablePosObj = operation == "decode" and schemaField.name or fieldIndex
  7.             local tablePosArr = operation == "decode" and fieldIndex or schemaField.name
  8.  
  9.             if not (schemaField.type == "array" and type(schemaField.items) == "table") then
  10.                 -- diference
  11.                 object[tablePosObj] = tableData[tablePosArr]
  12.             else
  13.                 -- diference                
  14.                 object[tablePosObj] = {}
  15.                 -- diference                
  16.                 for fragmentDataIndex, fragmentData in ipairs(tableData[tablePosArr]) do
  17.                     object[tablePosObj][fragmentDataIndex] = {}
  18.                     _tranformer(object[tablePosObj][fragmentDataIndex], schemaField.items, fragmentData)
  19.                 end
  20.             end
  21.         end
  22.         return object
  23.     end
  24.  
  25.     return _tranformer({}, schema, data)
  26. end
  27.  
  28. -- Serialize lua obj table to array
  29. function encode(schema, data)    
  30.     return tranformer(schema, data, "encode")
  31. end
  32.  
  33. -- Deserialize lua array to lua obj
  34. function decode(schema, data)
  35.     return tranformer(schema, data, "decode")
  36. end
  37.  
  38. -- Expect library soon: https://github.com/taosx/
Advertisement
Add Comment
Please, Sign In to add comment