gson_parser 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +35 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/gson_parser.gemspec +25 -0
- data/lib/gson_parser.rb +9 -0
- data/lib/gson_parser/ruby_node_js +0 -0
- data/lib/gson_parser/version.rb +3 -0
- data/lib/node_js.rb +31 -0
- data/lib/nodejs/node_modules/gson/.npmignore +25 -0
- data/lib/nodejs/node_modules/gson/LICENSE +201 -0
- data/lib/nodejs/node_modules/gson/README.md +24 -0
- data/lib/nodejs/node_modules/gson/index.js +101 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/.npmignore +25 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/LICENSE +201 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/README.md +26 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/index.js +58 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/LICENSE +23 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/README.md +22 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/package.json +66 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/underscore-min.js +6 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/underscore.js +1343 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/package.json +52 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/test/circular.test.js +85 -0
- data/lib/nodejs/node_modules/gson/node_modules/circularjs/test/mocha.opts +2 -0
- data/lib/nodejs/node_modules/gson/package.json +53 -0
- data/lib/nodejs/node_modules/gson/test/mocha.opts +2 -0
- data/lib/nodejs/node_modules/gson/test/serialize.test.js +73 -0
- data/lib/nodejs/parser.js +22 -0
- metadata +121 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
{
|
2
|
+
"name": "circularjs",
|
3
|
+
"version": "0.1.3",
|
4
|
+
"description": "Traverse circular javascript object graphs, in a non-recursive way",
|
5
|
+
"main": "index.js",
|
6
|
+
"scripts": {
|
7
|
+
"test": "mocha"
|
8
|
+
},
|
9
|
+
"repository": {
|
10
|
+
"type": "git",
|
11
|
+
"url": "git://github.com/aaaristo/circularjs.git"
|
12
|
+
},
|
13
|
+
"keywords": [
|
14
|
+
"json",
|
15
|
+
"graph",
|
16
|
+
"traversal",
|
17
|
+
"non-recursive"
|
18
|
+
],
|
19
|
+
"author": {
|
20
|
+
"name": "aaaristo"
|
21
|
+
},
|
22
|
+
"license": "Apache2",
|
23
|
+
"bugs": {
|
24
|
+
"url": "https://github.com/aaaristo/circularjs/issues"
|
25
|
+
},
|
26
|
+
"dependencies": {
|
27
|
+
"underscore": "~1.6.0"
|
28
|
+
},
|
29
|
+
"devDependencies": {
|
30
|
+
"chai": "~1.9.1"
|
31
|
+
},
|
32
|
+
"_id": "circularjs@0.1.3",
|
33
|
+
"dist": {
|
34
|
+
"shasum": "78adeee059b0bafe0b73967afc21a6225fbe23e6",
|
35
|
+
"tarball": "http://registry.npmjs.org/circularjs/-/circularjs-0.1.3.tgz"
|
36
|
+
},
|
37
|
+
"_from": "circularjs@>=0.1.0 <0.2.0",
|
38
|
+
"_npmVersion": "1.3.11",
|
39
|
+
"_npmUser": {
|
40
|
+
"name": "aaaristo",
|
41
|
+
"email": "andrea.gariboldi@gmail.com"
|
42
|
+
},
|
43
|
+
"maintainers": [
|
44
|
+
{
|
45
|
+
"name": "aaaristo",
|
46
|
+
"email": "andrea.gariboldi@gmail.com"
|
47
|
+
}
|
48
|
+
],
|
49
|
+
"directories": {},
|
50
|
+
"_shasum": "78adeee059b0bafe0b73967afc21a6225fbe23e6",
|
51
|
+
"_resolved": "https://registry.npmjs.org/circularjs/-/circularjs-0.1.3.tgz"
|
52
|
+
}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
var should= require('chai').should(),
|
2
|
+
assert= require('chai').assert,
|
3
|
+
_= require('underscore'),
|
4
|
+
traverse= require('../index.js');
|
5
|
+
|
6
|
+
var cir= function ()
|
7
|
+
{
|
8
|
+
var a= { nome: 'Andrea' },
|
9
|
+
e= { nome: 'Elena' };
|
10
|
+
|
11
|
+
a.figlia= e;
|
12
|
+
a.figlia2= e;
|
13
|
+
e.papa= a;
|
14
|
+
|
15
|
+
return [a,3,[e,a]];
|
16
|
+
};
|
17
|
+
|
18
|
+
describe('traverse',function ()
|
19
|
+
{
|
20
|
+
describe('isNode',function ()
|
21
|
+
{
|
22
|
+
it('returns true for an object {}', function (done)
|
23
|
+
{
|
24
|
+
traverse.isNode({}).should.equal(true);
|
25
|
+
done();
|
26
|
+
});
|
27
|
+
|
28
|
+
it('returns true for an array []', function (done)
|
29
|
+
{
|
30
|
+
traverse.isNode([]).should.equal(true);
|
31
|
+
done();
|
32
|
+
});
|
33
|
+
|
34
|
+
it('returns false for a number', function (done)
|
35
|
+
{
|
36
|
+
traverse.isNode(1).should.equal(false);
|
37
|
+
done();
|
38
|
+
});
|
39
|
+
|
40
|
+
it('returns false for a string', function (done)
|
41
|
+
{
|
42
|
+
traverse.isNode('a').should.equal(false);
|
43
|
+
done();
|
44
|
+
});
|
45
|
+
|
46
|
+
it('returns false for a Date', function (done)
|
47
|
+
{
|
48
|
+
traverse.isNode(new Date()).should.equal(false);
|
49
|
+
done();
|
50
|
+
});
|
51
|
+
|
52
|
+
it('returns false for a RegExp', function (done)
|
53
|
+
{
|
54
|
+
traverse.isNode(/^/).should.equal(false);
|
55
|
+
done();
|
56
|
+
});
|
57
|
+
});
|
58
|
+
|
59
|
+
it('exits a circular structure', function (done)
|
60
|
+
{
|
61
|
+
process.nextTick(function ()
|
62
|
+
{
|
63
|
+
traverse(cir(),function ()
|
64
|
+
{
|
65
|
+
});
|
66
|
+
|
67
|
+
done();
|
68
|
+
});
|
69
|
+
});
|
70
|
+
|
71
|
+
it('calls the callback for every node (object or array) in the graph including the root node', function (done)
|
72
|
+
{
|
73
|
+
var cnt= 0;
|
74
|
+
|
75
|
+
traverse(cir(),function (node)
|
76
|
+
{
|
77
|
+
traverse.isNode(node).should.equal(true);
|
78
|
+
cnt++;
|
79
|
+
});
|
80
|
+
|
81
|
+
cnt.should.equal(4);
|
82
|
+
|
83
|
+
done();
|
84
|
+
});
|
85
|
+
});
|
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"name": "gson",
|
3
|
+
"version": "0.1.5",
|
4
|
+
"description": "Serialize circular javascript object graphs",
|
5
|
+
"main": "index.js",
|
6
|
+
"scripts": {
|
7
|
+
"test": "mocha"
|
8
|
+
},
|
9
|
+
"repository": {
|
10
|
+
"type": "git",
|
11
|
+
"url": "git://github.com/aaaristo/GSON.git"
|
12
|
+
},
|
13
|
+
"keywords": [
|
14
|
+
"javascript",
|
15
|
+
"object",
|
16
|
+
"circular",
|
17
|
+
"graph",
|
18
|
+
"serialize"
|
19
|
+
],
|
20
|
+
"author": {
|
21
|
+
"name": "aaaristo"
|
22
|
+
},
|
23
|
+
"license": "Apache2",
|
24
|
+
"bugs": {
|
25
|
+
"url": "https://github.com/aaaristo/GSON/issues"
|
26
|
+
},
|
27
|
+
"dependencies": {
|
28
|
+
"circularjs": "~0.1.0"
|
29
|
+
},
|
30
|
+
"devDependencies": {
|
31
|
+
"chai": "~1.9.1"
|
32
|
+
},
|
33
|
+
"_id": "gson@0.1.5",
|
34
|
+
"dist": {
|
35
|
+
"shasum": "97728c7a4521aa23b379c691e6ad90a3d548aee0",
|
36
|
+
"tarball": "http://registry.npmjs.org/gson/-/gson-0.1.5.tgz"
|
37
|
+
},
|
38
|
+
"_from": "gson@*",
|
39
|
+
"_npmVersion": "1.3.11",
|
40
|
+
"_npmUser": {
|
41
|
+
"name": "aaaristo",
|
42
|
+
"email": "andrea.gariboldi@gmail.com"
|
43
|
+
},
|
44
|
+
"maintainers": [
|
45
|
+
{
|
46
|
+
"name": "aaaristo",
|
47
|
+
"email": "andrea.gariboldi@gmail.com"
|
48
|
+
}
|
49
|
+
],
|
50
|
+
"directories": {},
|
51
|
+
"_shasum": "97728c7a4521aa23b379c691e6ad90a3d548aee0",
|
52
|
+
"_resolved": "https://registry.npmjs.org/gson/-/gson-0.1.5.tgz"
|
53
|
+
}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
var should= require('chai').should(),
|
2
|
+
assert= require('chai').assert,
|
3
|
+
GSON= require('../index.js');
|
4
|
+
|
5
|
+
var cir= function ()
|
6
|
+
{
|
7
|
+
var a= { nome: 'Andrea' },
|
8
|
+
e= { nome: 'Elena' };
|
9
|
+
|
10
|
+
a.figlia= e;
|
11
|
+
a.figlia2= e;
|
12
|
+
e.papa= a;
|
13
|
+
|
14
|
+
return [a,3,[e,a]];
|
15
|
+
},
|
16
|
+
clone= function (o,fn)
|
17
|
+
{
|
18
|
+
return GSON.parse(GSON.stringify(o),fn);
|
19
|
+
};
|
20
|
+
|
21
|
+
describe('GSON',function ()
|
22
|
+
{
|
23
|
+
it('exits a circular structure', function (done)
|
24
|
+
{
|
25
|
+
process.nextTick(function ()
|
26
|
+
{
|
27
|
+
clone(cir());
|
28
|
+
done();
|
29
|
+
});
|
30
|
+
});
|
31
|
+
|
32
|
+
it('should clone nodes', function (done)
|
33
|
+
{
|
34
|
+
var orig= cir(), _clone= clone(orig);
|
35
|
+
|
36
|
+
_clone.should.not.equal(orig);
|
37
|
+
_clone[0].should.not.equal(orig[0]);
|
38
|
+
_clone[0].figlia.should.not.equal(orig[0].figlia);
|
39
|
+
_clone[2].should.not.equal(orig[2]);
|
40
|
+
done();
|
41
|
+
});
|
42
|
+
|
43
|
+
it('should leave scalars equal', function (done)
|
44
|
+
{
|
45
|
+
var orig= cir(), _clone= clone(orig);
|
46
|
+
|
47
|
+
_clone[1].should.equal(orig[1]);
|
48
|
+
_clone[0].nome.should.equal(orig[0].nome);
|
49
|
+
_clone[0].figlia.nome.should.equal(orig[0].figlia.nome);
|
50
|
+
done();
|
51
|
+
});
|
52
|
+
|
53
|
+
it('should replicate the same structure', function (done)
|
54
|
+
{
|
55
|
+
var orig= cir(), _clone= clone(orig);
|
56
|
+
|
57
|
+
_clone.length.should.equal(orig.length);
|
58
|
+
_clone[2].length.should.equal(orig[2].length);
|
59
|
+
_clone[0].should.equal(_clone[2][1]);
|
60
|
+
_clone[2][0].should.equal(_clone[0].figlia);
|
61
|
+
_clone[2][0].should.equal(_clone[0].figlia2);
|
62
|
+
_clone[2][0].papa.should.equal(_clone[0]);
|
63
|
+
done();
|
64
|
+
});
|
65
|
+
|
66
|
+
it('should call eachNode callback for each node', function (done)
|
67
|
+
{
|
68
|
+
var n= 0, orig= cir(), _clone= clone(orig,function (node) { should.exist(node); n++; });
|
69
|
+
|
70
|
+
n.should.equal(4);
|
71
|
+
done();
|
72
|
+
});
|
73
|
+
});
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env node
|
2
|
+
|
3
|
+
// Reads GSON from stdin and spits out decoded value to stdout
|
4
|
+
|
5
|
+
var gson = require('gson');
|
6
|
+
var stdin = process.stdin,
|
7
|
+
stdout = process.stdout,
|
8
|
+
input = '';
|
9
|
+
|
10
|
+
process.stdin.resume();
|
11
|
+
stdin.setEncoding('utf8');
|
12
|
+
|
13
|
+
process.stdin.on('data', function(buf) {
|
14
|
+
input += buf.toString();
|
15
|
+
});
|
16
|
+
|
17
|
+
process.stdin.on('end', function() {
|
18
|
+
input = input.replace(/^\)\]\}\'/, '');
|
19
|
+
parsed = gson.parse(input);
|
20
|
+
stdout.write(parsed[2]);
|
21
|
+
stdout.write('\n');
|
22
|
+
});
|
metadata
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gson_parser
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Carl Mercier
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-11-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Simple GSON parser for Ruby
|
56
|
+
email:
|
57
|
+
- carl@carlmercier.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
65
|
+
- Gemfile
|
66
|
+
- LICENSE.txt
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- bin/console
|
70
|
+
- bin/setup
|
71
|
+
- gson_parser.gemspec
|
72
|
+
- lib/gson_parser.rb
|
73
|
+
- lib/gson_parser/ruby_node_js
|
74
|
+
- lib/gson_parser/version.rb
|
75
|
+
- lib/node_js.rb
|
76
|
+
- lib/nodejs/node_modules/gson/.npmignore
|
77
|
+
- lib/nodejs/node_modules/gson/LICENSE
|
78
|
+
- lib/nodejs/node_modules/gson/README.md
|
79
|
+
- lib/nodejs/node_modules/gson/index.js
|
80
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/.npmignore
|
81
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/LICENSE
|
82
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/README.md
|
83
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/index.js
|
84
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/LICENSE
|
85
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/README.md
|
86
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/package.json
|
87
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/underscore-min.js
|
88
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/node_modules/underscore/underscore.js
|
89
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/package.json
|
90
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/test/circular.test.js
|
91
|
+
- lib/nodejs/node_modules/gson/node_modules/circularjs/test/mocha.opts
|
92
|
+
- lib/nodejs/node_modules/gson/package.json
|
93
|
+
- lib/nodejs/node_modules/gson/test/mocha.opts
|
94
|
+
- lib/nodejs/node_modules/gson/test/serialize.test.js
|
95
|
+
- lib/nodejs/parser.js
|
96
|
+
homepage: http://github.com/cmer/gson_parser
|
97
|
+
licenses:
|
98
|
+
- MIT
|
99
|
+
metadata: {}
|
100
|
+
post_install_message:
|
101
|
+
rdoc_options: []
|
102
|
+
require_paths:
|
103
|
+
- lib
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
requirements: []
|
115
|
+
rubyforge_project:
|
116
|
+
rubygems_version: 2.4.5
|
117
|
+
signing_key:
|
118
|
+
specification_version: 4
|
119
|
+
summary: Simple GSON parser for Ruby
|
120
|
+
test_files: []
|
121
|
+
has_rdoc:
|