foxpage 0.2.2 → 0.2.3

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