Tsil can flatten any object into a flat tsil list. Allowing you to easily and efficiently modify your data. And then deflatten the list into the original structure.
Example
Starting with the following object:
const characters = byHouse: stark: name: 'Jon' age: 23 name: 'Arya' age: 12 martell: name: 'Oberyn' age: 33
We can deep flatten all the nodes into:
const flat = tsil // [// { byHouse: ... },// { name: ... },// ...// ]
Then we modify whatever we need without worrying about structures:
const withChanges = tsil
(Or a simplified version)
const withChanges = tsil
And finally we deflatten the resulting list
tsil // evaluates to byHouse: stark: name: 'Jon' age: 22 isBastard: true name: 'Arya' age: 17 isBastard: false martell: name: 'Oberyn' age: 37 isBastard: false
API
tsil.flatten(String)
Given any object returns a flatten list of nodes.
tsil.deflatten(TsilArray)
Given a tsil
list of nodes returns the original structure.
tsil.modify(TsilArray, Function)
Given a tsil
list of nodes iterate over all the nodes
and apply the provided callback.
tsil.merge(TsilArray, Function)
Given a tsil
list of nodes iterate over all the nodes
and apply the provided callback merging callback function return
with the node value.
tsil.VAL
(Advanced)
Constant containing the Tsil value key. Use it if you need to
implement a .modify
function of your own.