foxpage 0.2.2 → 0.2.3
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/Gemfile.lock +23 -23
- data/lib/fox_page/builders/pages.rb +10 -3
- data/lib/fox_page/controller.rb +7 -1
- data/lib/fox_page/model.rb +7 -1
- data/lib/fox_page/router.rb +13 -5
- data/lib/fox_page/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e093d627bdcf6c0c28b6a5894f26c48550ea4ac365fba4686510158427c1cf24
|
4
|
+
data.tar.gz: 537350679cd49f185d1a5b6c19af93e1028846f477025f8cc579714f2afc59c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46abc20157e01f95c80a8b20b21a2239a4875e7af66d568146f2588e178adbdd7ff22e9cbda236d4675985512015b31d49dfa91f2d5c5b7d00131a0b69b250de
|
7
|
+
data.tar.gz: 85df91b9704b9e1d32f265469e4e5aa20a8f939fd1daff77db0faa75c222238a818a29403d1b3e2fa80e6e0da1f1f68db82a75dc8f12b5eb2cff1b1920e74f74
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
foxpage (0.2.
|
4
|
+
foxpage (0.2.3)
|
5
5
|
haml (~> 5.1)
|
6
6
|
listen (~> 3.1)
|
7
7
|
sassc (~> 2.0)
|
@@ -17,36 +17,36 @@ GEM
|
|
17
17
|
ast (2.4.0)
|
18
18
|
concurrent-ruby (1.1.5)
|
19
19
|
diff-lcs (1.3)
|
20
|
-
ffi (1.11.
|
20
|
+
ffi (1.11.3)
|
21
21
|
haml (5.1.2)
|
22
22
|
temple (>= 0.8.0)
|
23
23
|
tilt
|
24
|
-
jaro_winkler (1.5.
|
25
|
-
listen (3.2.
|
24
|
+
jaro_winkler (1.5.4)
|
25
|
+
listen (3.2.1)
|
26
26
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
27
27
|
rb-inotify (~> 0.9, >= 0.9.10)
|
28
|
-
parallel (1.
|
29
|
-
parser (2.
|
28
|
+
parallel (1.19.1)
|
29
|
+
parser (2.7.0.1)
|
30
30
|
ast (~> 2.4.0)
|
31
|
-
rack (2.0.
|
31
|
+
rack (2.0.8)
|
32
32
|
rainbow (3.0.0)
|
33
|
-
rake (12.3.
|
33
|
+
rake (12.3.3)
|
34
34
|
rb-fsevent (0.10.3)
|
35
|
-
rb-inotify (0.10.
|
35
|
+
rb-inotify (0.10.1)
|
36
36
|
ffi (~> 1.0)
|
37
|
-
rspec (3.
|
38
|
-
rspec-core (~> 3.
|
39
|
-
rspec-expectations (~> 3.
|
40
|
-
rspec-mocks (~> 3.
|
41
|
-
rspec-core (3.
|
42
|
-
rspec-support (~> 3.
|
43
|
-
rspec-expectations (3.
|
37
|
+
rspec (3.9.0)
|
38
|
+
rspec-core (~> 3.9.0)
|
39
|
+
rspec-expectations (~> 3.9.0)
|
40
|
+
rspec-mocks (~> 3.9.0)
|
41
|
+
rspec-core (3.9.1)
|
42
|
+
rspec-support (~> 3.9.1)
|
43
|
+
rspec-expectations (3.9.0)
|
44
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
45
|
-
rspec-support (~> 3.
|
46
|
-
rspec-mocks (3.
|
45
|
+
rspec-support (~> 3.9.0)
|
46
|
+
rspec-mocks (3.9.1)
|
47
47
|
diff-lcs (>= 1.2.0, < 2.0)
|
48
|
-
rspec-support (~> 3.
|
49
|
-
rspec-support (3.
|
48
|
+
rspec-support (~> 3.9.0)
|
49
|
+
rspec-support (3.9.2)
|
50
50
|
rubocop (0.68.1)
|
51
51
|
jaro_winkler (~> 1.5.1)
|
52
52
|
parallel (~> 1.10)
|
@@ -64,8 +64,8 @@ GEM
|
|
64
64
|
thor (0.20.3)
|
65
65
|
tilt (2.0.10)
|
66
66
|
unicode-display_width (1.5.0)
|
67
|
-
webrick (1.
|
68
|
-
zeitwerk (2.2.
|
67
|
+
webrick (1.6.0)
|
68
|
+
zeitwerk (2.2.2)
|
69
69
|
|
70
70
|
PLATFORMS
|
71
71
|
ruby
|
@@ -78,4 +78,4 @@ DEPENDENCIES
|
|
78
78
|
rubocop (~> 0.68.1)
|
79
79
|
|
80
80
|
BUNDLED WITH
|
81
|
-
2.
|
81
|
+
2.1.2
|
@@ -30,9 +30,16 @@ module FoxPage
|
|
30
30
|
end
|
31
31
|
|
32
32
|
enumerable.each_with_index do |item, index|
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
if route.generate_all_ids
|
34
|
+
# generate_all returns ids
|
35
|
+
id = enumerable.at(index)
|
36
|
+
target_path = format(path, id: id)
|
37
|
+
else
|
38
|
+
id = (item.respond_to?(:id) && item.id) || index
|
39
|
+
# have page numbers start with 1
|
40
|
+
target_path = format(path, id: id == index ? id + 1 : id)
|
41
|
+
end
|
42
|
+
|
36
43
|
build_single_page(target_path, route, id: id)
|
37
44
|
end
|
38
45
|
end
|
data/lib/fox_page/controller.rb
CHANGED
@@ -21,14 +21,20 @@ module FoxPage
|
|
21
21
|
@__generate_all = model
|
22
22
|
end
|
23
23
|
|
24
|
+
# Set this to true if `generate_all` returns IDs (i.e. urls)
|
25
|
+
def self.generate_all_ids(generate_all_ids)
|
26
|
+
@__generate_all_ids = generate_all_ids
|
27
|
+
end
|
28
|
+
|
24
29
|
def self.use_layout(layout)
|
25
30
|
@__use_layout = layout
|
26
31
|
end
|
27
32
|
|
28
33
|
def self.method_added(method_name)
|
29
|
-
return unless @__generate_all.nil? || @__use_layout.nil?
|
34
|
+
return unless @__generate_all.nil? || @__use_layout.nil? || @__generate_all_ids.nil?
|
30
35
|
|
31
36
|
set_method_option(method_name, "generate_all")
|
37
|
+
set_method_option(method_name, "generate_all_ids")
|
32
38
|
set_method_option(method_name, "use_layout")
|
33
39
|
end
|
34
40
|
|
data/lib/fox_page/model.rb
CHANGED
@@ -155,7 +155,13 @@ module FoxPage
|
|
155
155
|
value_key_name = "__#{key}_value"
|
156
156
|
key = value_key_name if object.respond_to?(value_key_name)
|
157
157
|
|
158
|
-
object.public_send(key)
|
158
|
+
returned_value = object.public_send(key)
|
159
|
+
case returned_value
|
160
|
+
when Array
|
161
|
+
returned_value.include?(value)
|
162
|
+
else
|
163
|
+
returned_value == value
|
164
|
+
end
|
159
165
|
end
|
160
166
|
end
|
161
167
|
end
|
data/lib/fox_page/router.rb
CHANGED
@@ -40,7 +40,7 @@ module FoxPage
|
|
40
40
|
base_path = "/#{path}"
|
41
41
|
|
42
42
|
# insert a route with id 0 as index if generate_all was specified, but without the /id in the path
|
43
|
-
if actions.
|
43
|
+
if actions.include?(:index)
|
44
44
|
validate_controller_method(controller, :index)
|
45
45
|
|
46
46
|
routes[base_path] = make_target(
|
@@ -48,7 +48,8 @@ module FoxPage
|
|
48
48
|
controller: controller,
|
49
49
|
method_name: :index,
|
50
50
|
params: { id: 0 },
|
51
|
-
generate_all: nil
|
51
|
+
generate_all: nil,
|
52
|
+
generate_all_ids: false
|
52
53
|
)
|
53
54
|
end
|
54
55
|
|
@@ -57,11 +58,16 @@ module FoxPage
|
|
57
58
|
validate_controller_method(controller, method_name)
|
58
59
|
|
59
60
|
generate_all = controller.instance_variable_get(:@__generate_all_for)&.[](method_name)
|
61
|
+
generate_all_ids = controller.instance_variable_get(:@__generate_all_ids_for)&.[](method_name)
|
60
62
|
|
61
63
|
route_path = method_name == :index ? base_path : "#{base_path}/#{method_name}"
|
62
64
|
if generate_all
|
63
65
|
# :show gets a pretty id, whereas :index (and others) get it prefixed with /page
|
64
|
-
route_path =
|
66
|
+
route_path = if generate_all_ids
|
67
|
+
"#{base_path}/%<id>s"
|
68
|
+
else
|
69
|
+
method_name == :show ? "#{base_path}/%<id>s" : "#{route_path}/page/%<id>s"
|
70
|
+
end
|
65
71
|
end
|
66
72
|
|
67
73
|
routes[route_path] ||= make_target(
|
@@ -69,7 +75,8 @@ module FoxPage
|
|
69
75
|
controller: controller,
|
70
76
|
method_name: method_name,
|
71
77
|
params: {},
|
72
|
-
generate_all: generate_all
|
78
|
+
generate_all: generate_all,
|
79
|
+
generate_all_ids: generate_all_ids
|
73
80
|
)
|
74
81
|
end
|
75
82
|
end
|
@@ -102,13 +109,14 @@ module FoxPage
|
|
102
109
|
raise ArgumentError, "#{controller} does not define ##{method_name}"
|
103
110
|
end
|
104
111
|
|
105
|
-
def make_target(base_name:, controller:, method_name:, params: {}, generate_all: nil, single_file: false)
|
112
|
+
def make_target(base_name:, controller:, method_name:, params: {}, generate_all: nil, generate_all_ids: false, single_file: false)
|
106
113
|
OpenStruct.new(
|
107
114
|
base_name: base_name,
|
108
115
|
controller: controller,
|
109
116
|
method_name: method_name,
|
110
117
|
params: OpenStruct.new(params),
|
111
118
|
generate_all: generate_all,
|
119
|
+
generate_all_ids: generate_all_ids,
|
112
120
|
single_file: single_file
|
113
121
|
)
|
114
122
|
end
|
data/lib/fox_page/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foxpage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Georg Gadinger
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|