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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8037f2e78043aa067766f40fff0d279c4c6b94e205656d3897ea4fa820120928
4
- data.tar.gz: c38fa73ab21a672d01ac81de9131e7855805cadbde981a46a97fc5b891f6d8c8
3
+ metadata.gz: e093d627bdcf6c0c28b6a5894f26c48550ea4ac365fba4686510158427c1cf24
4
+ data.tar.gz: 537350679cd49f185d1a5b6c19af93e1028846f477025f8cc579714f2afc59c3
5
5
  SHA512:
6
- metadata.gz: d100781bd93a0f7c5900f8f8a0fc062a0d4ff42459af50d8b36684b089ff68774a739458e492824079bf8bbd108bedf88d1d2b3aabe8118480db89ef3c7dd60e
7
- data.tar.gz: 938431d7c2787a57c3f31187b6fafc0259f6bde44e8e4e8216af2255c7ca12c2610304fbdf8648b9ed4198b6eb03c5228224994b85068f97725fd67fde1082fe
6
+ metadata.gz: 46abc20157e01f95c80a8b20b21a2239a4875e7af66d568146f2588e178adbdd7ff22e9cbda236d4675985512015b31d49dfa91f2d5c5b7d00131a0b69b250de
7
+ data.tar.gz: 85df91b9704b9e1d32f265469e4e5aa20a8f939fd1daff77db0faa75c222238a818a29403d1b3e2fa80e6e0da1f1f68db82a75dc8f12b5eb2cff1b1920e74f74
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- foxpage (0.2.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.1)
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.2)
25
- listen (3.2.0)
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.17.0)
29
- parser (2.6.3.0)
28
+ parallel (1.19.1)
29
+ parser (2.7.0.1)
30
30
  ast (~> 2.4.0)
31
- rack (2.0.7)
31
+ rack (2.0.8)
32
32
  rainbow (3.0.0)
33
- rake (12.3.2)
33
+ rake (12.3.3)
34
34
  rb-fsevent (0.10.3)
35
- rb-inotify (0.10.0)
35
+ rb-inotify (0.10.1)
36
36
  ffi (~> 1.0)
37
- rspec (3.8.0)
38
- rspec-core (~> 3.8.0)
39
- rspec-expectations (~> 3.8.0)
40
- rspec-mocks (~> 3.8.0)
41
- rspec-core (3.8.0)
42
- rspec-support (~> 3.8.0)
43
- rspec-expectations (3.8.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.8.0)
46
- rspec-mocks (3.8.0)
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.8.0)
49
- rspec-support (3.8.0)
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.5.0)
68
- zeitwerk (2.2.1)
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.0.1
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
- id = (item.respond_to?(:id) && item.id) || index
34
- # have page numbers start with 1
35
- target_path = format(path, id: id == index ? id + 1 : id)
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
@@ -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
 
@@ -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) == value
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
@@ -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.find(:index)
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 = method_name == :show ? "#{base_path}/%<id>s" : "#{route_path}/page/%<id>s"
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FoxPage
4
- VERSION = "0.2.2"
4
+ VERSION = "0.2.3"
5
5
  end
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.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: 2019-12-22 00:00:00.000000000 Z
11
+ date: 2020-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor