supa 0.2.3 → 0.3.0

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