supa 0.2.3 → 0.3.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.
@@ -1,16 +1,8 @@
1
- require 'supa/command'
2
-
3
1
  module Supa
4
2
  module Commands
5
- class Append < Supa::Command
6
- def represent
7
- tree[name] ||= []
8
-
9
- Array(dynamic_value).each do |element|
10
- tree[name] << {}
11
-
12
- Supa::Builder.new(representer: representer, context: element, tree: tree[name][-1]).instance_exec(&block)
13
- end
3
+ class Append < Commands::Collection
4
+ def define_tree
5
+ @tree[@name] ||= !value ? nil : []
14
6
  end
15
7
  end
16
8
  end
@@ -1,10 +1,8 @@
1
- require 'supa/command'
2
-
3
1
  module Supa
4
2
  module Commands
5
3
  class Attribute < Supa::Command
6
4
  def represent
7
- tree[name] = dynamic_value
5
+ @tree[@name] = value
8
6
  end
9
7
  end
10
8
  end
@@ -1,17 +1,37 @@
1
- require 'supa/command'
2
-
3
1
  module Supa
4
2
  module Commands
5
3
  class Collection < Supa::Command
6
4
  def represent
7
- tree[name] = []
5
+ return if hide?
6
+
7
+ define_tree
8
+ return unless value
8
9
 
9
- Array(dynamic_value).each do |element|
10
- tree[name] << {}
10
+ value.each do |element|
11
+ @tree[@name] << {}
11
12
 
12
- Supa::Builder.new(representer: representer, context: element, tree: tree[name][-1]).instance_exec(&block)
13
+ Supa::Builder.new(element,
14
+ representer: @representer, tree: @tree[@name][-1]).instance_exec(&@block)
13
15
  end
14
16
  end
17
+
18
+ private
19
+
20
+ def apply_render_flags(val)
21
+ return [] if !val && empty_when_nil?
22
+ val
23
+ end
24
+
25
+ def hide?
26
+ return hide_when_empty? unless value
27
+ return false unless value.is_a?(Array)
28
+
29
+ value.any? ? false : hide_when_empty?
30
+ end
31
+
32
+ def define_tree
33
+ @tree[@name] = !value ? nil : []
34
+ end
15
35
  end
16
36
  end
17
37
  end
@@ -1,15 +1,11 @@
1
- require 'supa/command'
2
-
3
1
  module Supa
4
2
  module Commands
5
3
  class Namespace < Supa::Command
6
4
  def represent
7
- tree[name] = {}
5
+ @tree[@name] = {}
8
6
 
9
- Supa::Builder.new(representer: representer, context: context, tree: tree[name]).instance_exec(&block)
7
+ Supa::Builder.new(@subject, representer: @representer, tree: @tree[@name]).instance_exec(&@block)
10
8
  end
11
9
  end
12
10
  end
13
11
  end
14
-
15
-
@@ -1,12 +1,31 @@
1
- require 'supa/command'
2
-
3
1
  module Supa
4
2
  module Commands
5
3
  class Object < Supa::Command
6
4
  def represent
7
- tree[name] = {}
5
+ return @tree[@name] = nil unless value || hide?
6
+ return if hide?
7
+
8
+ @tree[@name] = {}
9
+
10
+ Supa::Builder.new(
11
+ value,
12
+ representer: @representer,
13
+ tree: @tree[@name]
14
+ ).instance_exec(&@block)
15
+ end
16
+
17
+ private
18
+
19
+ def apply_render_flags(val)
20
+ return {} if !val && empty_when_nil?
21
+ val
22
+ end
23
+
24
+ def hide?
25
+ return hide_when_empty? unless value
26
+ return false unless value.is_a?(Hash)
8
27
 
9
- Supa::Builder.new(representer: representer, context: dynamic_value, tree: tree[name]).instance_exec(&block)
28
+ value.empty? ? hide_when_empty? : false
10
29
  end
11
30
  end
12
31
  end
@@ -1,10 +1,14 @@
1
- require 'supa/command'
2
-
3
1
  module Supa
4
2
  module Commands
5
3
  class Virtual < Supa::Command
6
4
  def represent
7
- tree[name] = static_value
5
+ @tree[@name] = value
6
+ end
7
+
8
+ private
9
+
10
+ def raw_value
11
+ getter
8
12
  end
9
13
  end
10
14
  end
@@ -11,7 +11,7 @@ module Supa
11
11
  end
12
12
 
13
13
  def to_hash
14
- Supa::Builder.new(representer: self, context: representee, tree: {}).tap do |builder|
14
+ Supa::Builder.new(representee, representer: self, tree: {}).tap do |builder|
15
15
  builder.instance_exec(&self.class.definition)
16
16
  end.to_hash
17
17
  end
data/lib/supa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Supa
2
- VERSION = '0.2.3'
2
+ VERSION = '0.3.0'.freeze
3
3
  end
data/supa.gemspec CHANGED
@@ -4,27 +4,36 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'supa/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "supa"
7
+ spec.name = 'supa'
8
8
  spec.version = Supa::VERSION
9
9
  spec.platform = Gem::Platform::RUBY
10
- spec.authors = ["Das"]
11
- spec.email = [""]
10
+ spec.authors = ['dasnotme', 'Jan Rietema', 'Jakub Gorzelak', 'Damir Mukimov']
11
+ spec.email = %w(
12
+ info@distribusion.com
13
+ jan.rietema@distribusion.com
14
+ jakub.gorzelak@distribusion.com
15
+ damir.mukimov@distribusion.com
16
+ )
12
17
 
13
- spec.summary = "Ruby object → JSON serialization."
14
- spec.description = "Ruby object → JSON serialization."
15
- spec.homepage = "https://github.com/dasnotme/supa"
16
- spec.license = "MIT"
18
+ spec.summary = 'Ruby object → JSON serialization.'
19
+ spec.description = 'Ruby object → JSON serialization.'
20
+ spec.homepage = 'https://github.com/distribusion/supa'
21
+ spec.license = 'MIT'
17
22
 
18
23
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
24
  f.match(%r{^(test|spec|features)/})
20
25
  end
21
- spec.bindir = "exe"
26
+ spec.bindir = 'exe'
22
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
- spec.require_paths = ["lib"]
28
+ spec.require_paths = ['lib']
24
29
 
25
- spec.add_development_dependency "bundler", "~> 1.13"
26
- spec.add_development_dependency "rake", "~> 10.0"
27
- spec.add_development_dependency "minitest", "~> 5.0"
28
- spec.add_development_dependency "simplecov", "~> 0.12"
29
- spec.add_development_dependency "codeclimate-test-reporter", "~> 1.0.0"
30
+ spec.add_development_dependency 'bundler', '~> 1.13'
31
+ spec.add_development_dependency 'rake', '~> 10.0'
32
+ spec.add_development_dependency 'rspec', '~> 3.0'
33
+ spec.add_development_dependency 'rspec-benchmark', '~> 0.2.0'
34
+ spec.add_development_dependency 'rubocop', '~> 0.45.0'
35
+ spec.add_development_dependency 'reek', '~> 4.5.0'
36
+ spec.add_development_dependency 'simplecov', '~> 0.12'
37
+ spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0.0'
38
+ spec.add_development_dependency 'pry-byebug', '~> 3.4.0'
30
39
  end
metadata CHANGED
@@ -1,14 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - Das
7
+ - dasnotme
8
+ - Jan Rietema
9
+ - Jakub Gorzelak
10
+ - Damir Mukimov
8
11
  autorequire:
9
12
  bindir: exe
10
13
  cert_chain: []
11
- date: 2017-01-13 00:00:00.000000000 Z
14
+ date: 2017-01-26 00:00:00.000000000 Z
12
15
  dependencies:
13
16
  - !ruby/object:Gem::Dependency
14
17
  name: bundler
@@ -39,19 +42,61 @@ dependencies:
39
42
  - !ruby/object:Gem::Version
40
43
  version: '10.0'
41
44
  - !ruby/object:Gem::Dependency
42
- name: minitest
45
+ name: rspec
43
46
  requirement: !ruby/object:Gem::Requirement
44
47
  requirements:
45
48
  - - "~>"
46
49
  - !ruby/object:Gem::Version
47
- version: '5.0'
50
+ version: '3.0'
48
51
  type: :development
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
55
  - - "~>"
53
56
  - !ruby/object:Gem::Version
54
- version: '5.0'
57
+ version: '3.0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec-benchmark
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: 0.2.0
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: 0.2.0
72
+ - !ruby/object:Gem::Dependency
73
+ name: rubocop
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - "~>"
77
+ - !ruby/object:Gem::Version
78
+ version: 0.45.0
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: 0.45.0
86
+ - !ruby/object:Gem::Dependency
87
+ name: reek
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: 4.5.0
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: 4.5.0
55
100
  - !ruby/object:Gem::Dependency
56
101
  name: simplecov
57
102
  requirement: !ruby/object:Gem::Requirement
@@ -80,15 +125,34 @@ dependencies:
80
125
  - - "~>"
81
126
  - !ruby/object:Gem::Version
82
127
  version: 1.0.0
128
+ - !ruby/object:Gem::Dependency
129
+ name: pry-byebug
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: 3.4.0
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: 3.4.0
83
142
  description: Ruby object → JSON serialization.
84
143
  email:
85
- - ''
144
+ - info@distribusion.com
145
+ - jan.rietema@distribusion.com
146
+ - jakub.gorzelak@distribusion.com
147
+ - damir.mukimov@distribusion.com
86
148
  executables: []
87
149
  extensions: []
88
150
  extra_rdoc_files: []
89
151
  files:
90
152
  - ".codeclimate.yml"
91
153
  - ".gitignore"
154
+ - ".reek"
155
+ - ".rspec"
92
156
  - ".rubocop.yml"
93
157
  - ".travis.yml"
94
158
  - CODE_OF_CONDUCT.md
@@ -110,7 +174,7 @@ files:
110
174
  - lib/supa/representable.rb
111
175
  - lib/supa/version.rb
112
176
  - supa.gemspec
113
- homepage: https://github.com/dasnotme/supa
177
+ homepage: https://github.com/distribusion/supa
114
178
  licenses:
115
179
  - MIT
116
180
  metadata: {}
@@ -130,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
194
  version: '0'
131
195
  requirements: []
132
196
  rubyforge_project:
133
- rubygems_version: 2.5.1
197
+ rubygems_version: 2.4.6
134
198
  signing_key:
135
199
  specification_version: 4
136
200
  summary: Ruby object → JSON serialization.