repack
v0.0.1
Published
JS objects repackaging tools
Downloads
14
Readme
repacker
Repacks an object to another representation. Useful for preparation of data got from db.
Example:
var img = restruct({
img: {
url: 'image_url',
origSize: {
x: 'image_orig_width',
y: 'image_orig_height'
}
}
});
var abc = repacker(
restruct({ name: 'title' }),
img
);
var result = abc.repack({
some_field: 1,
title: 'lala',
image_url: 'about:blank',
image_orig_width: 5,
image_orig_height: 7
});
will produce the following:
{
someField: 1,
name: 'lala',
img: {
url: 'about:blank',
origSize: {
x: 5,
y: 7
}
}
}
getSrcKeys()
Gets src keys corresponding to given dst keys:
abc.getSrcKeys('name', 'img', 'extraField');
will produce
['title', 'image_url', 'image_orig_width', 'image_orig_height', 'extra_field']
Subcomponents can also be used:
abc.getSrcKeys('img.url', 'img.origSize.x');
will produce
['image_url', 'image_orig_width']
reverse()
Performs an action reversed to repack()
abc.reverse({
extraField: 'extra',
name: 'lala',
img: {
url: 'http://example.com/img.jpg'
}
}
will produce:
{
extra_field: 'extra',
title: 'lala',
image_url: 'http://example.com/img.jpg'
}
multi
multi maps fields to several repackers, using field prefixes to choose a correct one:
var result = multi({
'abc': abc,
'xyz': repacker(
rename('q', 'w'),
skip('l')
),
'*': repacker()
}).repack({
abc__title: 'title',
xyz__q: 5,
xyz__l: 'l',
xyz__some_field: 8,
no_prefix: true
});
will produce the following:
{
abc: {
name: 'title'
},
xyz: {
w: 5,
someField: 8
},
noPrefix: true
}
License
MIT