jsdiff 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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