json_data 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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: []