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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +10 -11
- data/.reek +128 -0
- data/.rspec +2 -0
- data/.rubocop.yml +1197 -1011
- data/.travis.yml +12 -4
- data/Gemfile +0 -1
- data/README.md +142 -57
- data/Rakefile +3 -11
- data/bin/console +4 -4
- data/lib/supa.rb +9 -1
- data/lib/supa/builder.rb +14 -25
- data/lib/supa/command.rb +25 -28
- data/lib/supa/commands/append.rb +3 -11
- data/lib/supa/commands/attribute.rb +1 -3
- data/lib/supa/commands/collection.rb +26 -6
- data/lib/supa/commands/namespace.rb +2 -6
- data/lib/supa/commands/object.rb +23 -4
- data/lib/supa/commands/virtual.rb +7 -3
- data/lib/supa/representable.rb +1 -1
- data/lib/supa/version.rb +1 -1
- data/supa.gemspec +23 -14
- metadata +73 -9
data/lib/supa/commands/append.rb
CHANGED
@@ -1,16 +1,8 @@
|
|
1
|
-
require 'supa/command'
|
2
|
-
|
3
1
|
module Supa
|
4
2
|
module Commands
|
5
|
-
class Append <
|
6
|
-
def
|
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,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
|
-
|
5
|
+
return if hide?
|
6
|
+
|
7
|
+
define_tree
|
8
|
+
return unless value
|
8
9
|
|
9
|
-
|
10
|
-
tree[name] << {}
|
10
|
+
value.each do |element|
|
11
|
+
@tree[@name] << {}
|
11
12
|
|
12
|
-
Supa::Builder.new(
|
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,
|
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
|
-
|
data/lib/supa/commands/object.rb
CHANGED
@@ -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
|
-
|
28
|
+
value.empty? ? hide_when_empty? : false
|
10
29
|
end
|
11
30
|
end
|
12
31
|
end
|
data/lib/supa/representable.rb
CHANGED
@@ -11,7 +11,7 @@ module Supa
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def to_hash
|
14
|
-
Supa::Builder.new(representer: self,
|
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
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 =
|
7
|
+
spec.name = 'supa'
|
8
8
|
spec.version = Supa::VERSION
|
9
9
|
spec.platform = Gem::Platform::RUBY
|
10
|
-
spec.authors = [
|
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 =
|
14
|
-
spec.description =
|
15
|
-
spec.homepage =
|
16
|
-
spec.license =
|
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 =
|
26
|
+
spec.bindir = 'exe'
|
22
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
|
-
spec.require_paths = [
|
28
|
+
spec.require_paths = ['lib']
|
24
29
|
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
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.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
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-
|
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:
|
45
|
+
name: rspec
|
43
46
|
requirement: !ruby/object:Gem::Requirement
|
44
47
|
requirements:
|
45
48
|
- - "~>"
|
46
49
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
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: '
|
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/
|
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.
|
197
|
+
rubygems_version: 2.4.6
|
134
198
|
signing_key:
|
135
199
|
specification_version: 4
|
136
200
|
summary: Ruby object → JSON serialization.
|