Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function tranformer(schema, data, operation)
- function _tranformer(object, schema, tableData)
- for fieldIndex, schemaField in ipairs(schema) do
- local tablePosObj = operation == "decode" and schemaField.name or fieldIndex
- local tablePosArr = operation == "decode" and fieldIndex or schemaField.name
- if not (schemaField.type == "array" and type(schemaField.items) == "table") then
- -- diference
- object[tablePosObj] = tableData[tablePosArr]
- else
- -- diference
- object[tablePosObj] = {}
- -- diference
- for fragmentDataIndex, fragmentData in ipairs(tableData[tablePosArr]) do
- object[tablePosObj][fragmentDataIndex] = {}
- _tranformer(object[tablePosObj][fragmentDataIndex], schemaField.items, fragmentData)
- end
- end
- end
- return object
- end
- return _tranformer({}, schema, data)
- end
- -- Serialize lua obj table to array
- function encode(schema, data)
- return tranformer(schema, data, "encode")
- end
- -- Deserialize lua array to lua obj
- function decode(schema, data)
- return tranformer(schema, data, "decode")
- end
- -- Expect library soon: https://github.com/taosx/
Advertisement
Add Comment
Please, Sign In to add comment