material 0.2.21 → 0.2.22
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/lib/material/base.rb +11 -4
- data/lib/material/concerns/collection.rb +1 -1
- data/lib/material/list.rb +17 -3
- data/lib/material/version.rb +1 -1
- data/lib/material.rb +1 -2
- metadata +9 -38
- data/lib/material/concerns/for.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1c068082b23728d7529c57e25c8219de1622454fc4c0fb3d003d5edc579620b
|
4
|
+
data.tar.gz: 63289acc7d4808c010117e421b59c8503dc409ad212d3affc33da6296bf50bd2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68a519e6a5af1e0bb0bbdaaa83267de587bdfca0d4c65415e77ed3f68823eab5720f0e59694079a91fcf3eb1d56d02c07e66dfb431062892df908f99418c26d2
|
7
|
+
data.tar.gz: 7b54cf5e1fc6ac7daec66628bcd23cb6954611031ec933bc14633abb6cdeeb573f3dcb5c6503aa2ee9ad6cb0bd456bbc63abd80af66406d8f2c9e0d49d7864fc
|
data/lib/material/base.rb
CHANGED
@@ -4,20 +4,27 @@ module Material
|
|
4
4
|
class Base < Spicerack::AttributeObject
|
5
5
|
extend ActiveSupport::NumberHelper
|
6
6
|
|
7
|
+
include Conjunction::Junction
|
8
|
+
suffixed_with "Material"
|
9
|
+
|
7
10
|
include Material::Components
|
8
11
|
include Material::Core
|
9
12
|
include Material::Display
|
10
13
|
include Material::Text
|
11
14
|
include Material::Site
|
12
|
-
include Material::For
|
13
15
|
include Material::Format
|
14
16
|
include Material::Attributes
|
15
17
|
|
16
18
|
register_component :list_item_style
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
class << self
|
21
|
+
def for(object)
|
22
|
+
for_class(object)&.new(object)
|
23
|
+
end
|
24
|
+
|
25
|
+
def for_class(object)
|
26
|
+
object.try(:conjugate!, self)
|
27
|
+
end
|
21
28
|
end
|
22
29
|
|
23
30
|
def to_source_model
|
@@ -30,7 +30,7 @@ module Material
|
|
30
30
|
ary = super
|
31
31
|
return ary if ary.empty?
|
32
32
|
|
33
|
-
material_class =
|
33
|
+
material_class = ary.first.try(:conjugate, Material::Base)
|
34
34
|
material_class.nil? ? ary : ary.map(&material_class.method(:new))
|
35
35
|
end
|
36
36
|
end
|
data/lib/material/list.rb
CHANGED
@@ -2,11 +2,13 @@
|
|
2
2
|
|
3
3
|
module Material
|
4
4
|
class List < Collectible::CollectionBase
|
5
|
+
include Conjunction::Junction
|
6
|
+
suffixed_with "List"
|
7
|
+
|
5
8
|
include Material::Components
|
6
9
|
include Material::Display
|
7
10
|
include Material::Text
|
8
11
|
include Material::Site
|
9
|
-
include Material::For
|
10
12
|
include Material::Pagination
|
11
13
|
include Material::Mount
|
12
14
|
include Material::Collection
|
@@ -14,8 +16,20 @@ module Material
|
|
14
16
|
|
15
17
|
class << self
|
16
18
|
def for(object)
|
17
|
-
|
18
|
-
|
19
|
+
klass = for_class(object.respond_to?(:first) ? object.first : object)
|
20
|
+
materialize(object, klass) if klass.present?
|
21
|
+
end
|
22
|
+
|
23
|
+
def for_class(object)
|
24
|
+
object.try(:conjugate!, self)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def materialize(object, klass)
|
30
|
+
return klass.new(object) if object.present? && !object.is_a?(Class)
|
31
|
+
|
32
|
+
klass.new
|
19
33
|
end
|
20
34
|
end
|
21
35
|
|
data/lib/material/version.rb
CHANGED
data/lib/material.rb
CHANGED
@@ -4,14 +4,13 @@ require "active_support"
|
|
4
4
|
require "active_support/core_ext"
|
5
5
|
require "active_support/number_helper"
|
6
6
|
|
7
|
-
require "
|
7
|
+
require "spicery"
|
8
8
|
|
9
9
|
require_relative "material/concerns/components"
|
10
10
|
require_relative "material/concerns/core"
|
11
11
|
require_relative "material/concerns/display"
|
12
12
|
require_relative "material/concerns/text"
|
13
13
|
require_relative "material/concerns/site"
|
14
|
-
require_relative "material/concerns/for"
|
15
14
|
require_relative "material/concerns/pagination"
|
16
15
|
require_relative "material/concerns/mount"
|
17
16
|
require_relative "material/concerns/collection"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: material
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Garside
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -25,12 +25,12 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 5.2.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: spicery
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.20.4
|
34
34
|
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: '1.0'
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirements:
|
41
41
|
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.
|
43
|
+
version: 0.20.4
|
44
44
|
- - "<"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '1.0'
|
@@ -58,20 +58,6 @@ dependencies:
|
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: 2.0.1
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: faker
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '1.8'
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '1.8'
|
75
61
|
- !ruby/object:Gem::Dependency
|
76
62
|
name: pry-byebug
|
77
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,20 +86,6 @@ dependencies:
|
|
100
86
|
- - "~>"
|
101
87
|
- !ruby/object:Gem::Version
|
102
88
|
version: '10.0'
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: rspec
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '3.0'
|
110
|
-
type: :development
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - "~>"
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: '3.0'
|
117
89
|
- !ruby/object:Gem::Dependency
|
118
90
|
name: simplecov
|
119
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,7 +120,7 @@ dependencies:
|
|
148
120
|
requirements:
|
149
121
|
- - ">="
|
150
122
|
- !ruby/object:Gem::Version
|
151
|
-
version: 0.
|
123
|
+
version: 0.20.4
|
152
124
|
- - "<"
|
153
125
|
- !ruby/object:Gem::Version
|
154
126
|
version: '1.0'
|
@@ -158,7 +130,7 @@ dependencies:
|
|
158
130
|
requirements:
|
159
131
|
- - ">="
|
160
132
|
- !ruby/object:Gem::Version
|
161
|
-
version: 0.
|
133
|
+
version: 0.20.4
|
162
134
|
- - "<"
|
163
135
|
- !ruby/object:Gem::Version
|
164
136
|
version: '1.0'
|
@@ -168,7 +140,7 @@ dependencies:
|
|
168
140
|
requirements:
|
169
141
|
- - ">="
|
170
142
|
- !ruby/object:Gem::Version
|
171
|
-
version: 0.
|
143
|
+
version: 0.20.4
|
172
144
|
- - "<"
|
173
145
|
- !ruby/object:Gem::Version
|
174
146
|
version: '1.0'
|
@@ -178,7 +150,7 @@ dependencies:
|
|
178
150
|
requirements:
|
179
151
|
- - ">="
|
180
152
|
- !ruby/object:Gem::Version
|
181
|
-
version: 0.
|
153
|
+
version: 0.20.4
|
182
154
|
- - "<"
|
183
155
|
- !ruby/object:Gem::Version
|
184
156
|
version: '1.0'
|
@@ -213,7 +185,6 @@ files:
|
|
213
185
|
- lib/material/concerns/components.rb
|
214
186
|
- lib/material/concerns/core.rb
|
215
187
|
- lib/material/concerns/display.rb
|
216
|
-
- lib/material/concerns/for.rb
|
217
188
|
- lib/material/concerns/format.rb
|
218
189
|
- lib/material/concerns/mount.rb
|
219
190
|
- lib/material/concerns/pagination.rb
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Build materials from objects based either an explicit definition or an optimistic lookup
|
4
|
-
module Material
|
5
|
-
module For
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
class_methods do
|
9
|
-
def material_class_for(object, subtype)
|
10
|
-
method = "#{subtype.downcase}_class".to_sym
|
11
|
-
object_class = object.is_a?(Class) ? object : object.class
|
12
|
-
lookup(object, method) || lookup(object_class, method) || "#{object_class.name}#{subtype}".safe_constantize
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def lookup(object, lookup_name)
|
18
|
-
object.public_send(lookup_name) if object.respond_to?(lookup_name)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|