Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ var data = {
> Step 2. Find all key/value pairs that match a selector function

```js
var sel = JSON.select(data, function(key, val) {
var sel = ST.select(data, function(key, val) {
return /https?:/.test(val);
})
```
Expand Down Expand Up @@ -98,7 +98,7 @@ var data = {
> Step 2. Select and transform with a template JSON object

```js
var sel = JSON.select(data, function(key, val){
var sel = ST.select(data, function(key, val){
return key === 'sites';
})
.transformWith({
Expand Down Expand Up @@ -167,7 +167,7 @@ var root = sel.root();
```js
<script src="st.js"></script>
<script>
var parsed = JSON.select({ "items": [1,2,3,4] })
var parsed = ST.select({ "items": [1,2,3,4] })
.transformWith({
"{{#each items}}": {
"type": "label", "text": "{{this}}"
Expand All @@ -188,9 +188,9 @@ $ npm install stjs
> Use

```js
require('st');
const ST = require('st');

var parsed = JSON.select({ "items": [1,2,3,4] })
const parsed = ST.select({ "items": [1,2,3,4] })
.transformWith({
"{{#each items}}": {
"type": "label", "text": "{{this}}"
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "stjs",
"version": "0.0.3",
"description": "Select and Transform any object",
"version": "0.0.4",
"description": "JSON Template over JSON",
"main": "st.js",
"directories": {
"test": "test"
Expand Down
12 changes: 7 additions & 5 deletions st.js
Original file line number Diff line number Diff line change
Expand Up @@ -856,24 +856,26 @@
return _stringify(val, replacer, spaces);
}
};
JSON.select = SELECT.select;
JSON.inject = SELECT.inject;
JSON.transform = TRANSFORM.transform;

// Export
if (typeof exports !== 'undefined') {
var x = {
TRANSFORM: TRANSFORM,
transform: TRANSFORM,
SELECT: SELECT,
Conditional: Conditional,
Helper: Helper,
inject: SELECT.inject,
select: SELECT.select,
transform: TRANSFORM.transform,
};
if (typeof module !== 'undefined' && module.exports) { exports = module.exports = x; }
exports = x;
} else {
$context.ST = {
select: SELECT,
transform: TRANSFORM,
select: SELECT.select,
inject: SELECT.inject,
transform: TRANSFORM.transform,
};
}
}());
2 changes: 1 addition & 1 deletion test/integration/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
};

// Create DOM using the generated Cell object
var App = JSON.transform({
var App = ST.transform({
"$cell": true,
"$components": {
"{{#each items}}": {
Expand Down
17 changes: 17 additions & 0 deletions test/integration/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const ST = require("../../st")
const result = ST.transform({
"rows": {
"{{#each items}}": {
"row_number": "{{$index}}",
"columns": {
"{{#each this}}": {
"content": "{{this}}",
"column_number": "{{$index}}"
}
}
}
}
}, {
"items": [['a,','b','c','d','e'], [1,2,3,4,5]]
});
console.log(JSON.stringify(result, null, 2));
54 changes: 27 additions & 27 deletions test/unit/select.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var assert = require('assert');
var st = require('../../st.js');
var ST = require('../../st.js');
var stringify = require('json-stable-stringify');
var compare = function(actual, expected){
assert.equal(stringify(actual), stringify(expected));
Expand Down Expand Up @@ -44,20 +44,20 @@ describe('SELECT object', function(){
describe('root', function() {
it('simple object', function(){
var template = {"head": {"title": "hi"}, "body": {}};
var actual = st.SELECT.select(template);
var actual = ST.SELECT.select(template);
compare(actual.values(), [{"title": "hi"}, {}]);
compare(actual.root(), {"head": {"title": "hi"}, "body": {}});
});
it('nested object', function() {
var selected = st.SELECT.select(data);
var selected = ST.SELECT.select(data);
compare(selected.objects(), [data]);
compare(selected.keys(), ["items"]);
compare(selected.values(), [data.items]);
compare(selected.paths(), ["[\"items\"]"]);
})
describe('select root and parse', function() {
it('parse', function() {
var generated = st.SELECT.select(template).transform(data);
var generated = ST.SELECT.select(template).transform(data);
compare(generated.objects(), [[{
"type": "image",
"haschildren": false
Expand All @@ -83,7 +83,7 @@ describe('SELECT object', function(){
}]);
})
it('transformWith', function() {
var generated = st.SELECT.select(data).transformWith(template);
var generated = ST.SELECT.select(data).transformWith(template);
// same as above example
compare(generated.objects(), [[{
"type": "image",
Expand Down Expand Up @@ -132,7 +132,7 @@ describe('SELECT object', function(){

it('returns a selected formatted object', function(){
var template = {"head": {"title": "hi"}, "body": {}};
var actual = st.SELECT.select(template, function(item){
var actual = ST.SELECT.select(template, function(item){
return /tle/.test(item);
});
compare(actual.values(), ["hi"]);
Expand All @@ -143,7 +143,7 @@ describe('SELECT object', function(){
});
it('select by key', function() {
console.log("#####################33 Data = ", data, "\n");
var selected = st.SELECT.select(data, function(key, val) {
var selected = ST.SELECT.select(data, function(key, val) {
return key === 'url';
});
console.log("#selected root = ", selected.$selected_root);
Expand All @@ -165,7 +165,7 @@ describe('SELECT object', function(){
*/
})
it('select by value', function() {
var selected = st.SELECT.select(data, function(key, val) {
var selected = ST.SELECT.select(data, function(key, val) {
return /https?:/.test(val);
});
console.log("objects = ", selected.objects());
Expand Down Expand Up @@ -208,7 +208,7 @@ describe('SELECT object', function(){
}]
}]
};
var selectedData = st.SELECT.select(data, function(key, val) {
var selectedData = ST.SELECT.select(data, function(key, val) {
return key === 'type';
}).objects();
compare(selectedData, [{
Expand Down Expand Up @@ -247,7 +247,7 @@ describe('SELECT object', function(){



var selectedTemplate = st.SELECT.select(template, function(key, val) {
var selectedTemplate = ST.SELECT.select(template, function(key, val) {
return /#each/.test(key);
});
compare(selectedTemplate.objects(), [{
Expand Down Expand Up @@ -308,7 +308,7 @@ describe('SELECT object', function(){
}]
}]
};
var selected = st.SELECT.select(data, function(key, val) {
var selected = ST.SELECT.select(data, function(key, val) {
return /https?:/.test(val);
});
var generated = selected.transformWith(template2);
Expand All @@ -330,11 +330,11 @@ describe('SELECT object', function(){
compare(generated.paths(), ["[\"items\"][0]", "[\"items\"][1][\"components\"][0]", "[\"items\"][1][\"components\"][1][\"components\"][1]"]);
})
it('twice', function() {
var labelParsed = st.SELECT.select(data, function(key, val) {
var labelParsed = ST.SELECT.select(data, function(key, val) {
return val === 'label';
}).transformWith(template3).root();

var generated = st.SELECT.select(labelParsed, function(key, val) {
var generated = ST.SELECT.select(labelParsed, function(key, val) {
return /https?:/.test(val)
}).transformWith(template2);
console.log("objects = ", generated.objects());
Expand All @@ -361,7 +361,7 @@ describe('SELECT object', function(){
}
}
};
var actual = st.SELECT.select(template, function(key){
var actual = ST.SELECT.select(template, function(key){
return key == 'head';
});
var expected = [{
Expand Down Expand Up @@ -416,7 +416,7 @@ describe('SELECT object', function(){
}
}
};
var actual = st.SELECT.select(template, function(key, value){
var actual = ST.SELECT.select(template, function(key, value){
return /#include/.test(key);
});
var expected = {
Expand Down Expand Up @@ -535,7 +535,7 @@ describe('SELECT object', function(){
}
}
};
var actual = st.SELECT.select(template, function(key, value){
var actual = ST.SELECT.select(template, function(key, value){
return /#include/.test(key);
}).transform({}).root();
var expected = {
Expand Down Expand Up @@ -595,7 +595,7 @@ describe('SELECT object', function(){
}]
}
};
var actual = st.SELECT.select(data, function(key, value){
var actual = ST.SELECT.select(data, function(key, value){
return /http:/.test(value);
});
var expected = {
Expand Down Expand Up @@ -650,7 +650,7 @@ describe('SELECT object', function(){
}]
}
};
var actual = st.SELECT.select(data, function(key, value){
var actual = ST.SELECT.select(data, function(key, value){
return key=='type' && value=='label';
});
var expected = {
Expand Down Expand Up @@ -715,7 +715,7 @@ describe('SELECT object', function(){
"content": "Quack"
}]
};
var actual = st.SELECT.select(template, function(key, value){
var actual = ST.SELECT.select(template, function(key, value){
return /#each/.test(key);
}).transform(data).root();
console.log("Actual = ", actual);
Expand Down Expand Up @@ -763,7 +763,7 @@ describe('SELECT object', function(){
compare(actual, expected);

/*
var actual2 = st.include(template, data);
var actual2 = ST.include(template, data);
compare(actual2, expected);
*/

Expand All @@ -790,7 +790,7 @@ describe('SELECT object', function(){
}
}
};
var actual = st.TRANSFORM.transform(template, data);
var actual = ST.TRANSFORM.transform(template, data);
var expected = {
"{{#each $jason}}": {
"type": "vertical",
Expand Down Expand Up @@ -823,7 +823,7 @@ describe('SELECT object', function(){
}]
};
var expected = {"items": ["horizontal", "vertical"]};
var actual = st.SELECT.select(template).transform(data).root();
var actual = ST.SELECT.select(template).transform(data).root();
compare(actual, expected);
});
it('selective parsing - only parse {{content}}', function(){
Expand Down Expand Up @@ -865,7 +865,7 @@ describe('SELECT object', function(){
"content": "Quack"
}]
};
var actual = st.SELECT.select(template, function(key, value){
var actual = ST.SELECT.select(template, function(key, value){
return /\$root/.test(value);
}).transform(data).root();

Expand Down Expand Up @@ -900,7 +900,7 @@ describe('SELECT object', function(){
compare(actual, expected);

/*
var actual2 = st.include(template, data);
var actual2 = ST.include(template, data);
compare(actual2, expected);
*/
})
Expand All @@ -924,7 +924,7 @@ describe('SELECT object', function(){
}]
}
};
var parsed = JSON.select(data, function(key, val) {
var parsed = ST.select(data, function(key, val) {
return key === 'url';
}).transformWith({
tag: "<a href='{{url}}'>{{text}}</a>"
Expand All @@ -948,7 +948,7 @@ describe('SELECT object', function(){
}
}
};
var selected = JSON.select(template, function(key, val) {
var selected = ST.select(template, function(key, val) {
return key === 'type';
});

Expand Down Expand Up @@ -983,7 +983,7 @@ describe('SELECT object', function(){
metadata: "This is a link collection"
};

var selection = JSON.select(data, function(key, val) {
var selection = ST.select(data, function(key, val) {
return /https?:/.test(val);
})

Expand Down
8 changes: 4 additions & 4 deletions test/unit/transform/existential.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var assert = require('assert');
var st = require('../../../st.js');
var ST = require('../../../st.js');
var stringify = require('json-stable-stringify');
var compare = function(actual, expected){
assert.equal(stringify(actual), stringify(expected));
Expand All @@ -15,7 +15,7 @@ describe('#?', function() {
one: 1,
two: 3
}
var actual = JSON.transform(template, data);
var actual = ST.transform(template, data);
var expected = {
"test1": 1
}
Expand All @@ -29,7 +29,7 @@ describe('#?', function() {
var data = {
test1: "1"
}
var actual = JSON.transform(template, data);
var actual = ST.transform(template, data);
var expected = {
"test1": "1"
}
Expand All @@ -53,7 +53,7 @@ describe('#?', function() {
badge: "{{notification.invite}}"
}]
}
var actual = JSON.transform(template, data);
var actual = ST.transform(template, data);
var expected = {
tabs: [{
text: "home",
Expand Down