jsdiff 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ vendor
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source :rubygems
2
+
3
+ # Specify your gem's dependencies in pretty_json/colorful_json/json_gem_circlejerk.gemspec
4
+ gemspec
@@ -0,0 +1,18 @@
1
+ # Color your JSON!
2
+
3
+ Pipe your curl output to cjson and make it both sexier and easier to
4
+ read.
5
+
6
+ ![Colorful
7
+ JSON](http://i.imgur.com/rAbJp.png)
8
+
9
+ ## Install
10
+
11
+ `sudo gem install jsdiff`
12
+
13
+ ## Usage
14
+
15
+ ```
16
+ jsdiff a.js b.js
17
+
18
+
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "jsdiff"
4
+ require "slop"
5
+
6
+ opts = Slop.parse do
7
+ on :p, :"nosyntax", "Disable syntax highlighting"
8
+ end
9
+
10
+ files = []
11
+ opts.parse do |arg|
12
+ files << arg
13
+ end
14
+
15
+ puts JSDiff::parse(files.take(2), opts)
File without changes
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "jsdiff/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "jsdiff"
7
+ s.version = JSDiff::VERSION
8
+ s.authors = ["Thomas Devol"]
9
+ s.email = ["vajrapani666@gmail.com"]
10
+ s.summary = %q{Diff two json files and fabulously display results}
11
+
12
+ s.rubyforge_project = "jsdiff"
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+
19
+ s.add_runtime_dependency "json"
20
+ s.add_runtime_dependency "pygments.rb"
21
+ s.add_runtime_dependency "active_support"
22
+ s.add_runtime_dependency "slop"
23
+
24
+ s.add_development_dependency "rspec"
25
+
26
+ end
@@ -0,0 +1,24 @@
1
+ require "jsdiff/version"
2
+ require "active_support/core_ext/hash"
3
+ require "json"
4
+ require "pygments.rb"
5
+
6
+ class JSDiff
7
+
8
+ class << self
9
+ def parse(files, opts=nil)
10
+ a_path, b_path = files.take(2)
11
+ a, b = [a_path, b_path].map do |path|
12
+ JSON.parse(File.read(path))
13
+ end
14
+
15
+ c = a.diff(b)
16
+
17
+ diff_js = JSON.pretty_generate(c)
18
+ return diff_js if opts.nosyntax?
19
+
20
+ Pygments.highlight(diff_js, :formatter => 'terminal', :lexer => 'javascript')
21
+ end
22
+ end
23
+
24
+ end
@@ -0,0 +1,3 @@
1
+ class JSDiff
2
+ VERSION = "0.9.0"
3
+ end
@@ -0,0 +1 @@
1
+ {"name": "John", "age": 22, "registered": true, "jobs": [{"title":"Cook", "company": "McDonalds", "year": 2002},{"title": "Developer", "company": "OkCupid", "year": 2002}]}
@@ -0,0 +1 @@
1
+ {"name": "John", "age": 23, "registered": true, "jobs": [{"title":"Cook", "company": "McDonalds", "year": 2002},{"title": "Developer", "company": "OkCupid", "year": 2004}]}
@@ -0,0 +1 @@
1
+ {"name": "John", "age": 22, "registered": true, "interests": ["golf", "skyrim"]}
@@ -0,0 +1 @@
1
+ {"name": "Jane", "age": 22, "registered": true, "interests": ["golf", "pizza"], "this_thing": "silly"}
@@ -0,0 +1,25 @@
1
+ require "jsdiff"
2
+
3
+ describe JSDiff do
4
+
5
+ describe "::parse" do
6
+ before do
7
+ @files = {}
8
+ Dir.glob(File.dirname(__FILE__)+"/fixtures/*.js").each do |file|
9
+ @files[File.basename(file,".js").to_sym] = {
10
+ :path => file,
11
+ :contents => JSON.parse(File.read(file))
12
+ }
13
+ end
14
+ end
15
+ it "computes simple diff" do
16
+ files = [@files[:simple_a][:path], @files[:simple_b][:path]]
17
+ opt_mock = mock("options", :nosyntax? =>true)
18
+
19
+ response = JSDiff.parse(files, opt_mock)
20
+ diff_results = JSON.parse(response)
21
+ @files[:simple_a][:contents].diff(@files[:simple_b][:contents]).should == diff_results
22
+ end
23
+ end
24
+
25
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jsdiff
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Thomas Devol
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-14 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: json
16
+ requirement: &70334406471740 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70334406471740
25
+ - !ruby/object:Gem::Dependency
26
+ name: pygments.rb
27
+ requirement: &70334406471320 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70334406471320
36
+ - !ruby/object:Gem::Dependency
37
+ name: active_support
38
+ requirement: &70334406470900 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70334406470900
47
+ - !ruby/object:Gem::Dependency
48
+ name: slop
49
+ requirement: &70334406470460 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70334406470460
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &70334406470000 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70334406470000
69
+ description:
70
+ email:
71
+ - vajrapani666@gmail.com
72
+ executables:
73
+ - jsdiff
74
+ - jsdiff.rb
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - .gitignore
79
+ - Gemfile
80
+ - README.md
81
+ - Rakefile
82
+ - bin/jsdiff
83
+ - bin/jsdiff.rb
84
+ - jsdiff.gemspec
85
+ - lib/jsdiff.rb
86
+ - lib/jsdiff/version.rb
87
+ - spec/fixtures/deep_a.js
88
+ - spec/fixtures/deep_b.js
89
+ - spec/fixtures/simple_a.js
90
+ - spec/fixtures/simple_b.js
91
+ - spec/jsdiff_spec.rb
92
+ homepage:
93
+ licenses: []
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project: jsdiff
112
+ rubygems_version: 1.8.10
113
+ signing_key:
114
+ specification_version: 3
115
+ summary: Diff two json files and fabulously display results
116
+ test_files:
117
+ - spec/fixtures/deep_a.js
118
+ - spec/fixtures/deep_b.js
119
+ - spec/fixtures/simple_a.js
120
+ - spec/fixtures/simple_b.js
121
+ - spec/jsdiff_spec.rb