json_data 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a75572f67c106e84f5f1fcbcb80417f93b68da92
4
- data.tar.gz: 1395123e9bd188e616f88c2e7bea1adf2743aa82
3
+ metadata.gz: 87589caf15788f7a136ef46ebd2b594be9a99c40
4
+ data.tar.gz: 11fa473efa6bf0c5c812a733a7198cc33e0677a2
5
5
  SHA512:
6
- metadata.gz: 8814e8be615bf7cbaf9ceed6fec19da9c496a7f3ed7ecdaafe0b7d6edcb96d4db1cbdc0162033f41f508a4777a43c0f8263a9cba6a1afe3ddc5201fa22d67149
7
- data.tar.gz: e3a55a21a93f2573fc1f0484037623d0de3c3b814367c7b2a415ef76870bdc98e77fc73a665c4301b45dc20b063fa09f4ec33528f730c2b01524c1cb7c52388d
6
+ metadata.gz: ab8e0095986c4ecd293506dad6ea46b5da953199eaedb6f4118012dc09d8a46b63276e0cfb206606b80f7faa88ac32f23a2f007749133208b9e09c9080be42c5
7
+ data.tar.gz: 830182636d9be38fd266e9ed33b24134066c3919171cdfa9d6789264765b1b61f7cfa4a1f4d1006a750c79ce92d78272310da767d68f72810f98e1c934d804ec
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # JsonData
2
+ [![Code Climate](https://codeclimate.com/github/jayjzheng/json_data/badges/gpa.svg)](https://codeclimate.com/github/jayjzheng/json_data)
2
3
 
3
4
  ## Installation
4
5
 
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
 
4
4
  Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
5
+ t.libs << 'test'
6
+ t.libs << 'lib'
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task :default => :test
10
+ task default: :test
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "json_data"
3
+ require 'bundler/setup'
4
+ require 'json_data'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
8
8
 
9
9
  # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
10
+ # require 'pry'
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start
@@ -4,21 +4,22 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'json_data/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "json_data"
8
- spec.version = JsonData::VERSION
9
- spec.authors = ["Jay Zheng"]
10
- spec.email = ["jay.j.zheng@gmail.com"]
7
+ spec.name = 'json_data'
8
+ spec.version = JSONData::VERSION
9
+ spec.authors = ['Jay Zheng']
10
+ spec.email = ['jay.j.zheng@gmail.com']
11
11
 
12
- spec.summary = %q{JSON Data}
13
- spec.homepage = "https://github.com/jayjzheng/json_data"
14
- spec.license = "MIT"
12
+ spec.summary = 'a super simple DSL to deal with JSON Data'
13
+ spec.homepage = 'https://github.com/jayjzheng/json_data'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
17
+ spec.bindir = 'exe'
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.10"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "minitest"
21
+ spec.add_development_dependency 'bundler', '~> 1.10'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'minitest', '~> 5.8', '>= 5.8.2'
24
+ spec.add_development_dependency 'simplecov', '~> 0.9.2'
24
25
  end
@@ -1,4 +1,5 @@
1
- require "json_data/version"
1
+ require 'json_data/version'
2
2
 
3
- require "json_data/data"
4
- require "json_data/collection"
3
+ require 'json_data/parser'
4
+ require 'json_data/data'
5
+ require 'json_data/collection'
@@ -1,13 +1,13 @@
1
- require 'json'
2
-
3
1
  module JSONData
4
2
  module Collection
5
3
  module ClassMethods
6
4
  def data_class(klass, options = {})
7
- formatter = options.fetch(:formatter) { lambda {|json| json} }
5
+ formatter = options.fetch(:formatter) { ->(json) { json } }
8
6
 
9
7
  define_method :create_data_objects do
10
- @data_source = formatter.call(data_source).map {|data| klass.new(data_source: data) }
8
+ @data_source = formatter.call(data_source).map do |data|
9
+ klass.new(data_source: data)
10
+ end
11
11
  end
12
12
  end
13
13
  end
@@ -18,11 +18,12 @@ module JSONData
18
18
  end
19
19
 
20
20
  def initialize(options = {})
21
+ @parser = options.fetch(:parser) { Parser.new }
21
22
  self.data_source = options.fetch(:data_source) { [] }
22
23
  end
23
24
 
24
25
  def data_source=(json)
25
- @data_source = json.is_a?(String) ? JSON.parse(json) : json
26
+ @data_source = parser.parse(json)
26
27
  create_data_objects
27
28
  end
28
29
 
@@ -31,7 +32,7 @@ module JSONData
31
32
  end
32
33
 
33
34
  def valid?
34
- !empty? && all? { |d| d.valid? }
35
+ !empty? && all?(&:valid?)
35
36
  end
36
37
 
37
38
  def empty?
@@ -40,7 +41,7 @@ module JSONData
40
41
 
41
42
  private
42
43
 
43
- attr_reader :data_source
44
+ attr_reader :data_source, :parser
44
45
 
45
46
  def create_data_objects
46
47
  end
@@ -1,5 +1,4 @@
1
1
  require 'ostruct'
2
- require 'json'
3
2
 
4
3
  module JSONData
5
4
  module Data
@@ -36,12 +35,12 @@ module JSONData
36
35
  end
37
36
 
38
37
  def initialize(options = {})
39
- self.data_source = options[:data_source]
38
+ @parser = options.fetch(:parser) { Parser.new }
39
+ self.data_source = options.fetch(:data_source) { JSON.generate({}) }
40
40
  end
41
41
 
42
42
  def data_source=(json)
43
- data_source = json.is_a?(String) ? JSON.parse(json) : json
44
- @data_source = OpenStruct.new(data_source)
43
+ @data_source = OpenStruct.new(parser.parse(json))
45
44
  end
46
45
 
47
46
  def valid?
@@ -54,6 +53,6 @@ module JSONData
54
53
 
55
54
  private
56
55
 
57
- attr_reader :data_source
56
+ attr_reader :data_source, :parser
58
57
  end
59
58
  end
@@ -0,0 +1,9 @@
1
+ require 'json'
2
+
3
+ module JSONData
4
+ class Parser
5
+ def parse(raw_json)
6
+ raw_json.is_a?(String) ? JSON.parse(raw_json) : raw_json
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
- module JsonData
2
- VERSION = "0.0.3"
1
+ module JSONData
2
+ VERSION = '0.0.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Zheng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-30 00:00:00.000000000 Z
11
+ date: 2015-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,16 +42,36 @@ dependencies:
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.8'
45
48
  - - ">="
46
49
  - !ruby/object:Gem::Version
47
- version: '0'
50
+ version: 5.8.2
48
51
  type: :development
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '5.8'
52
58
  - - ">="
53
59
  - !ruby/object:Gem::Version
54
- version: '0'
60
+ version: 5.8.2
61
+ - !ruby/object:Gem::Dependency
62
+ name: simplecov
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 0.9.2
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.9.2
55
75
  description:
56
76
  email:
57
77
  - jay.j.zheng@gmail.com
@@ -72,6 +92,7 @@ files:
72
92
  - lib/json_data.rb
73
93
  - lib/json_data/collection.rb
74
94
  - lib/json_data/data.rb
95
+ - lib/json_data/parser.rb
75
96
  - lib/json_data/version.rb
76
97
  homepage: https://github.com/jayjzheng/json_data
77
98
  licenses:
@@ -96,5 +117,5 @@ rubyforge_project:
96
117
  rubygems_version: 2.4.6
97
118
  signing_key:
98
119
  specification_version: 4
99
- summary: JSON Data
120
+ summary: a super simple DSL to deal with JSON Data
100
121
  test_files: []