Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/onechiporenko/jsonium
Generator for creating all possible combinations of JSONs according to the provided templates and data sets
https://github.com/onechiporenko/jsonium
Last synced: 1 day ago
JSON representation
Generator for creating all possible combinations of JSONs according to the provided templates and data sets
- Host: GitHub
- URL: https://github.com/onechiporenko/jsonium
- Owner: onechiporenko
- License: mit
- Created: 2016-01-23T15:19:20.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-01-31T02:33:43.000Z (8 months ago)
- Last Synced: 2024-09-19T05:44:31.558Z (14 days ago)
- Language: JavaScript
- Homepage:
- Size: 17.6 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# JSONium
[![Build Status](https://travis-ci.org/onechiporenko/jsonium.svg)](https://travis-ci.org/onechiporenko/jsonium)
[![npm version](https://badge.fury.io/js/jsonium.png)](http://badge.fury.io/js/jsonium)
[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
[![Downloads](http://img.shields.io/npm/dm/jsonium.svg)](https://www.npmjs.com/package/jsonium)## Install
```
npm i jsonium --save
```## What?
Generator for creating all possible combinations of JSONs according to the provided templates and data sets.
Example:```javascript
var Jsonium = require('jsonium');
var j = new Jsonium();
var templates = [
{a: '{{sub}}', b: 1},
{a: '{{sub}}', b: 2}
];
var keys = ['a'];
var datasets = [
{sub: 'replace1'},
{sub: 'replace2'}
];
var combos = j
.setTemplates(templates)
.createCombos(keys, datasets)
.uniqueCombos()
.getCombos();console.log(combos); // [{a: 'replace1', b: 1}, {a: 'replace1', b: 2}, {a: 'replace2', b: 1}, {a: 'replace2', b: 2}]
```## What've happened?
There are two templates. There is one key (`a`) where some replacing should be done. There are two datasets with values that will be placed in the templates. `setTemplates` just set templates to the generator. `createCombos` generate all possible combinations with replacing substrings from `datasets` in the template's `keys`. `uniqueCombos` remove duplicates from created combinations. `getCombos` just return created and filtered combinations.
`JSONium`-instance may be used in the another `JSONium`-instance. Example:
```javascript
var Jsonium = require('jsonium');var templates = [
{key1: '{{k1}}'}
];
var keys = ['key1'];
var datasets = [
{k1: 'v1'},
{k1: 'v2'}
];
var keys2 = ['key2'];
var templates2 = [
{key2: '{{key1}} 1'},
{key2: '{{key1}} 2'}
];
var J = new Jsonium();
J.setTemplates(templates).createCombos(keys, datasets);
var result = new Jsonium(templates2).createCombos(keys2, J).getCombos();
```Here `J`'s created combinations will be used like datasets in the another `Jsonium`-instance.
`keys` may be nested (`a.b.c`) and indexed (`a.0`).
Each substring in the templates you want to be replaced should be wrapped with `{{`, `}}`.
## More examples
```javascript
var Jsonium = require('jsonium');
var j = new Jsonium();
var templates = [
{
a:
[
{b: '{{sub}}'},
{b: '{{sub}}'}
]
}
];
var keys = ['[email protected]'];
var datasets = [
{sub: 'replace1'},
{sub: 'replace2'}
];
var combos = j
.setTemplates(templates)
.createCombos(keys, datasets)
.uniqueCombos()
.getCombos();console.log(combos); // [{a: [{b: 'replace1'}, {b: 'replace1'}]}, {a: [{b: 'replace2'}, {b: 'replace2'}]}]
``````javascript
var Jsonium = require('jsonium');
var j = new Jsonium();
var templates = [
{
a:
[
{
b:
[
{c: '{{sub}}'},
{c: '{{sub}}'}
]
},
{
b:
[
{c: '{{sub}}'}
]
}
]
}
];
var keys = ['[email protected][email protected]'];
var datasets = [
{sub: 'replace1'}
];
var combos = j
.setTemplates(templates)
.createCombos(keys, datasets)
.uniqueCombos()
.getCombos();console.log(combos); // [{a: [{b: [{c: 'replace1'}, {c: 'replace1'}]}, {b: [{c: 'replace1'}]}]}]
``````javascript
var Jsonium = require('jsonium');
var j = new Jsonium();
var templates = [
{key1: {a: '{{k1}}', b: '{{k2}}'}}
];
var keys = ['key1.{a,b}'];
var datasets = [
{k1: 'v1', k2: 'v2'}
];
var combos = j
.setTemplates(templates)
.createCombos(keys, datasets)
.uniqueCombos()
.getCombos();console.log(combos); // [{key1: {a: 'v1', b: 'v2'}}]
```