kontent-delivery-sdk-ruby 2.0.6 → 2.0.7

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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +21 -21
  3. data/README.md +511 -511
  4. data/bin/console +14 -14
  5. data/bin/setup +8 -8
  6. data/lib/delivery/builders/image_transformation_builder.rb +271 -271
  7. data/lib/delivery/builders/url_builder.rb +117 -117
  8. data/lib/delivery/client/delivery_client.rb +155 -155
  9. data/lib/delivery/client/delivery_query.rb +249 -249
  10. data/lib/delivery/client/request_manager.rb +107 -107
  11. data/lib/delivery/models/content_item.rb +153 -153
  12. data/lib/delivery/models/content_type.rb +41 -41
  13. data/lib/delivery/models/pagination.rb +21 -21
  14. data/lib/delivery/models/taxonomy_group.rb +39 -39
  15. data/lib/delivery/query_parameters/filters.rb +158 -158
  16. data/lib/delivery/query_parameters/parameter_base.rb +44 -44
  17. data/lib/delivery/query_parameters/query_string.rb +78 -78
  18. data/lib/delivery/resolvers/content_link_resolver.rb +102 -102
  19. data/lib/delivery/resolvers/inline_content_item_resolver.rb +75 -75
  20. data/lib/delivery/resolvers/linked_item_resolver.rb +37 -37
  21. data/lib/delivery/responses/delivery_element_response.rb +33 -33
  22. data/lib/delivery/responses/delivery_item_listing_response.rb +53 -53
  23. data/lib/delivery/responses/delivery_item_response.rb +39 -39
  24. data/lib/delivery/responses/delivery_taxonomy_listing_response.rb +46 -46
  25. data/lib/delivery/responses/delivery_taxonomy_response.rb +32 -32
  26. data/lib/delivery/responses/delivery_type_listing_response.rb +45 -45
  27. data/lib/delivery/responses/delivery_type_response.rb +31 -31
  28. data/lib/delivery/responses/response_base.rb +36 -36
  29. data/lib/delivery/tests/401.json +5 -5
  30. data/lib/delivery/tests/fake_responder.rb +67 -67
  31. data/lib/delivery/tests/filtering/items_gt.json +565 -565
  32. data/lib/delivery/tests/filtering/multiple.json +282 -282
  33. data/lib/delivery/tests/filtering/pagination_about_us.json +646 -646
  34. data/lib/delivery/tests/generic/items/about_us.json +227 -227
  35. data/lib/delivery/tests/generic/items/aeropress_filters.json +138 -138
  36. data/lib/delivery/tests/generic/items/coffee_processing_techniques.json +168 -168
  37. data/lib/delivery/tests/generic/items/where_does_coffee_come_from_.json +620 -620
  38. data/lib/delivery/tests/generic/items.json +4984 -4984
  39. data/lib/delivery/tests/generic/taxonomies.json +126 -126
  40. data/lib/delivery/tests/generic/types/brewer/elements/product_status.json +5 -5
  41. data/lib/delivery/tests/generic/types.json +780 -780
  42. data/lib/delivery/version.rb +7 -7
  43. data/lib/kontent-delivery-sdk-ruby.rb +19 -19
  44. metadata +12 -13
data/bin/console CHANGED
@@ -1,14 +1,14 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "delivery"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "delivery"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -1,271 +1,271 @@
1
- require 'delivery/query_parameters/query_string'
2
-
3
- module Kentico
4
- module Kontent
5
- module Delivery
6
- module Builders
7
- # Provides methods for manipulating the URL of an asset to adjust the image's
8
- # size, cropping behavior, background color, output format, and quality.
9
- #
10
- # See https://developer.kenticocloud.com/v1/reference#image-transformation and
11
- # https://github.com/Kentico/kontent-delivery-sdk-ruby#image-transformation.
12
- class ImageTransformationBuilder
13
- FIT_MODE_CLIP = 'clip'.freeze
14
- FIT_MODE_SCALE = 'scale'.freeze
15
- FIT_MODE_CROP = 'crop'.freeze
16
- FORMAT_GIF = 'gif'.freeze
17
- FORMAT_PNG = 'png'.freeze
18
- FORMAT_PNG8 = 'png8'.freeze
19
- FORMAT_JPG = 'jpg'.freeze
20
- FORMAT_PJPG = 'pjpg'.freeze
21
- FORMAT_WEBP = 'webp'.freeze
22
-
23
- class << self
24
- def transform(url)
25
- AssetURL.new url
26
- end
27
- end
28
- end
29
-
30
- class AssetURL
31
- INVALID_PARAMS = 'One or more of the parameters is invalid. '\
32
- 'See https://developer.kenticocloud.com/v1/reference#focal-point-crop'\
33
- 'for more information.'.freeze
34
- ONE_TO_100 = 'Quality parameter must be between 1 and 100.'.freeze
35
- BOOLEAN_PARAM = 'The parameter must be a boolean, 0, or 1.'.freeze
36
-
37
- # Constructor. Generally, you obtain an +AssetURL+ object by calling
38
- # Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder.transform
39
- # instead of using this constructor.
40
- def initialize(url)
41
- @url = url
42
- @query_string = Kentico::Kontent::Delivery::QueryParameters::QueryString.new
43
- end
44
-
45
- # Applies all transformation options to the asset URL.
46
- #
47
- # * *Returns*:
48
- # - +string+ The full URL to the asset with all query string parameters set
49
- def url
50
- @url + @query_string.to_s
51
- end
52
-
53
- # Sets the width of the image
54
- #
55
- # * *Args*:
56
- # - *width*
57
- # - +integer+ Width in pixels, between 1 and 8192.
58
- # - +float+ Width in percentage, between 0 and 1.
59
- #
60
- # * *Returns*:
61
- # - +self+
62
- def with_width(width)
63
- @query_string.set_param 'w', width
64
- self
65
- end
66
-
67
- # Sets the height of the image
68
- #
69
- # * *Args*:
70
- # - *height*
71
- # - +integer+ Height in pixels, between 1 and 8192.
72
- # - +float+ Height in percentage, between 0 and 1.
73
- #
74
- # * *Returns* :
75
- # - +self+
76
- def with_height(height)
77
- @query_string.set_param 'h', height
78
- self
79
- end
80
-
81
- # Sets the device pixel ratio. Either width or height
82
- # (or both) must be set.
83
- #
84
- # * *Args*:
85
- # - *dpr* (+float+) Pixel ratio between 0 and 5.
86
- #
87
- # * *Returns*:
88
- # - +self+
89
- def with_pixel_ratio(dpr)
90
- @query_string.set_param 'dpr', dpr
91
- self
92
- end
93
-
94
- # Defines how the image is constrained while resizing. Either width
95
- # or height (or both) must be set.
96
- #
97
- # * *Args*:
98
- # - *fit* (+string+) Use constants from Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder
99
- #
100
- # * *Returns*:
101
- # - +self+
102
- def with_fit_mode(fit)
103
- @query_string.set_param 'fit', fit
104
- self
105
- end
106
-
107
- # Selects a region of the image to perform transformations on.
108
- # Setting this will remove focal point cropping from the image,
109
- # as the two options are incompatible.
110
- #
111
- # * *Args*:
112
- # - *x*
113
- # - +integer+ The left border of the rect in pixels
114
- # - +float+ The left border of the rect as a percentage between 0 and 1
115
- # - *y*
116
- # - +integer+ The top border of the rect in pixels
117
- # - +float+ The top border of the rect as a percentage between 0 and 1
118
- # - *width*
119
- # - +integer+ The width of the rect in pixels
120
- # - +float+ The width of the rect as a percentage between 0 and 1
121
- # - *height*
122
- # - +integer+ The height of the rect in pixels
123
- # - +float+ The height of the rect as a percentage between 0 and 1
124
- #
125
- # * *Returns*:
126
- # - +self+
127
- def with_rect(x, y, width, height)
128
- @query_string.remove_param 'fp-x'
129
- @query_string.remove_param 'fp-y'
130
- @query_string.remove_param 'fp-z'
131
- @query_string.remove_param 'crop'
132
- @query_string.set_param 'rect', "#{x},#{y},#{width},#{height}"
133
- self
134
- end
135
-
136
- # Sets the point of interest when cropping the image.
137
- # Setting this will remove the source rectangle region,
138
- # as the two options are incompatible. It also automatically sets the
139
- # crop to "focalpoint" and fit to "crop"
140
- #
141
- # * *Args*:
142
- # - *x* (+float+) Percentage of the image's width between 0 and 1
143
- # - *y* (+float+) Percentage of the image's height between 0 and 1
144
- # - *z* (+integer+) Amount of zoom to apply. A value of 1 is the default zoom, and each step represents 100% additional zoom.
145
- #
146
- # * *Returns*:
147
- # - +self+
148
- def with_focal_point(x, y, z)
149
- raise ArgumentError, INVALID_PARAMS unless valid_dims?(x, y, z)
150
-
151
- @query_string.remove_param 'rect'
152
- @query_string.set_param 'fp-x', x
153
- @query_string.set_param 'fp-y', y
154
- @query_string.set_param 'fp-z', z
155
- @query_string.set_param 'fit', ImageTransformationBuilder::FIT_MODE_CROP
156
- @query_string.set_param 'crop', 'focalpoint'
157
- self
158
- end
159
-
160
- # Sets the background color of any transparent areas of the image.
161
- #
162
- # * *Args*:
163
- # - *color* (+string+) A valid 3, 4, 6, or 8 digit hexadecimal color, without the # symbol
164
- #
165
- # * *Returns*:
166
- # - +self+
167
- def with_background_color(color)
168
- @query_string.set_param 'bg', color
169
- self
170
- end
171
-
172
- # Sets the output format of the request for the image.
173
- #
174
- # * *Args*:
175
- # - *format* (+string+) Use constants from Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder
176
- #
177
- # * *Returns*:
178
- # - +self+
179
- def with_output_format(format)
180
- @query_string.set_param 'fm', format
181
- self
182
- end
183
-
184
- # Configure the amount of compression for lossy file formats. Lower quality
185
- # images will have a smaller file size. Only affects *jpg*, *pjpg*, and
186
- # *webp* files.
187
- #
188
- # When no quality is specified for an image transformation, the default
189
- # value of 85 is used.
190
- #
191
- # * *Args*:
192
- # - *quality* (+integer+) The quality of the image between 1 and 100
193
- #
194
- # * *Returns*:
195
- # - +self+
196
- #
197
- # * *Raises*:
198
- # - +ArgumentError+ if +quality+ is not between 1 and 100 inclusive
199
- def with_quality(quality)
200
- raise ArgumentError, ONE_TO_100 unless quality.to_i >= 1 && quality.to_i <= 100
201
-
202
- @query_string.set_param 'q', quality
203
- self
204
- end
205
-
206
- # Sets the lossless parameter. If +true+, automatically sets the format
207
- # to WebP.
208
- #
209
- # * *Args*:
210
- # - *lossless*
211
- # - +integer+ Either 1 or 0
212
- # - +bool+ Either +true+ or +false+
213
- # - +string+ Either 'true' or 'false'
214
- #
215
- # * *Returns*:
216
- # - +self+
217
- #
218
- # * *Raises*:
219
- # - +ArgumentError+ if +lossless+ cannot be parsed as a boolean
220
- def with_lossless(lossless)
221
- lossless = lossless.to_s.downcase
222
- raise ArgumentError, BOOLEAN_PARAM unless bool? lossless
223
-
224
- @query_string.set_param 'lossless', lossless
225
- @query_string.set_param 'fm', Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder::FORMAT_WEBP if %w[true 1].include? lossless
226
- self
227
- end
228
-
229
- # Enables or disables automatic format selection. If enabled, it will
230
- # override the format parameter and deliver WebP instead. If the browser
231
- # does not support WebP, the value of the format parameter will be used.
232
- #
233
- # * *Args*:
234
- # - *auto*
235
- # - +integer+ Either 1 or 0
236
- # - +bool+ Either +true+ or +false+
237
- # - +string+ Either 'true' or 'false'
238
- #
239
- # * *Returns*:
240
- # - +self+
241
- #
242
- # * *Raises*:
243
- # - +ArgumentError+ if +auto+ cannot be parsed as a boolean
244
- def with_auto_format_selection(auto)
245
- auto = auto.to_s.downcase
246
- raise ArgumentError, BOOLEAN_PARAM unless bool? auto
247
-
248
- if %w[true 1].include? auto
249
- @query_string.set_param 'auto', 'format'
250
- else
251
- @query_string.remove_param 'auto'
252
- end
253
- self
254
- end
255
-
256
- private
257
-
258
- def valid_dims?(x, y, z)
259
- (x.to_f >= 0.0 && x.to_f <= 1.0) &&
260
- (y.to_f >= 0.0 && y.to_f <= 1.0) &&
261
- (z.to_i >= 1)
262
- end
263
-
264
- def bool?(value)
265
- %w[true false 0 1].include? value
266
- end
267
- end
268
- end
269
- end
270
- end
271
- end
1
+ require 'delivery/query_parameters/query_string'
2
+
3
+ module Kentico
4
+ module Kontent
5
+ module Delivery
6
+ module Builders
7
+ # Provides methods for manipulating the URL of an asset to adjust the image's
8
+ # size, cropping behavior, background color, output format, and quality.
9
+ #
10
+ # See https://developer.kenticocloud.com/v1/reference#image-transformation and
11
+ # https://github.com/Kentico/kontent-delivery-sdk-ruby#image-transformation.
12
+ class ImageTransformationBuilder
13
+ FIT_MODE_CLIP = 'clip'.freeze
14
+ FIT_MODE_SCALE = 'scale'.freeze
15
+ FIT_MODE_CROP = 'crop'.freeze
16
+ FORMAT_GIF = 'gif'.freeze
17
+ FORMAT_PNG = 'png'.freeze
18
+ FORMAT_PNG8 = 'png8'.freeze
19
+ FORMAT_JPG = 'jpg'.freeze
20
+ FORMAT_PJPG = 'pjpg'.freeze
21
+ FORMAT_WEBP = 'webp'.freeze
22
+
23
+ class << self
24
+ def transform(url)
25
+ AssetURL.new url
26
+ end
27
+ end
28
+ end
29
+
30
+ class AssetURL
31
+ INVALID_PARAMS = 'One or more of the parameters is invalid. '\
32
+ 'See https://developer.kenticocloud.com/v1/reference#focal-point-crop'\
33
+ 'for more information.'.freeze
34
+ ONE_TO_100 = 'Quality parameter must be between 1 and 100.'.freeze
35
+ BOOLEAN_PARAM = 'The parameter must be a boolean, 0, or 1.'.freeze
36
+
37
+ # Constructor. Generally, you obtain an +AssetURL+ object by calling
38
+ # Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder.transform
39
+ # instead of using this constructor.
40
+ def initialize(url)
41
+ @url = url
42
+ @query_string = Kentico::Kontent::Delivery::QueryParameters::QueryString.new
43
+ end
44
+
45
+ # Applies all transformation options to the asset URL.
46
+ #
47
+ # * *Returns*:
48
+ # - +string+ The full URL to the asset with all query string parameters set
49
+ def url
50
+ @url + @query_string.to_s
51
+ end
52
+
53
+ # Sets the width of the image
54
+ #
55
+ # * *Args*:
56
+ # - *width*
57
+ # - +integer+ Width in pixels, between 1 and 8192.
58
+ # - +float+ Width in percentage, between 0 and 1.
59
+ #
60
+ # * *Returns*:
61
+ # - +self+
62
+ def with_width(width)
63
+ @query_string.set_param 'w', width
64
+ self
65
+ end
66
+
67
+ # Sets the height of the image
68
+ #
69
+ # * *Args*:
70
+ # - *height*
71
+ # - +integer+ Height in pixels, between 1 and 8192.
72
+ # - +float+ Height in percentage, between 0 and 1.
73
+ #
74
+ # * *Returns* :
75
+ # - +self+
76
+ def with_height(height)
77
+ @query_string.set_param 'h', height
78
+ self
79
+ end
80
+
81
+ # Sets the device pixel ratio. Either width or height
82
+ # (or both) must be set.
83
+ #
84
+ # * *Args*:
85
+ # - *dpr* (+float+) Pixel ratio between 0 and 5.
86
+ #
87
+ # * *Returns*:
88
+ # - +self+
89
+ def with_pixel_ratio(dpr)
90
+ @query_string.set_param 'dpr', dpr
91
+ self
92
+ end
93
+
94
+ # Defines how the image is constrained while resizing. Either width
95
+ # or height (or both) must be set.
96
+ #
97
+ # * *Args*:
98
+ # - *fit* (+string+) Use constants from Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder
99
+ #
100
+ # * *Returns*:
101
+ # - +self+
102
+ def with_fit_mode(fit)
103
+ @query_string.set_param 'fit', fit
104
+ self
105
+ end
106
+
107
+ # Selects a region of the image to perform transformations on.
108
+ # Setting this will remove focal point cropping from the image,
109
+ # as the two options are incompatible.
110
+ #
111
+ # * *Args*:
112
+ # - *x*
113
+ # - +integer+ The left border of the rect in pixels
114
+ # - +float+ The left border of the rect as a percentage between 0 and 1
115
+ # - *y*
116
+ # - +integer+ The top border of the rect in pixels
117
+ # - +float+ The top border of the rect as a percentage between 0 and 1
118
+ # - *width*
119
+ # - +integer+ The width of the rect in pixels
120
+ # - +float+ The width of the rect as a percentage between 0 and 1
121
+ # - *height*
122
+ # - +integer+ The height of the rect in pixels
123
+ # - +float+ The height of the rect as a percentage between 0 and 1
124
+ #
125
+ # * *Returns*:
126
+ # - +self+
127
+ def with_rect(x, y, width, height)
128
+ @query_string.remove_param 'fp-x'
129
+ @query_string.remove_param 'fp-y'
130
+ @query_string.remove_param 'fp-z'
131
+ @query_string.remove_param 'crop'
132
+ @query_string.set_param 'rect', "#{x},#{y},#{width},#{height}"
133
+ self
134
+ end
135
+
136
+ # Sets the point of interest when cropping the image.
137
+ # Setting this will remove the source rectangle region,
138
+ # as the two options are incompatible. It also automatically sets the
139
+ # crop to "focalpoint" and fit to "crop"
140
+ #
141
+ # * *Args*:
142
+ # - *x* (+float+) Percentage of the image's width between 0 and 1
143
+ # - *y* (+float+) Percentage of the image's height between 0 and 1
144
+ # - *z* (+integer+) Amount of zoom to apply. A value of 1 is the default zoom, and each step represents 100% additional zoom.
145
+ #
146
+ # * *Returns*:
147
+ # - +self+
148
+ def with_focal_point(x, y, z)
149
+ raise ArgumentError, INVALID_PARAMS unless valid_dims?(x, y, z)
150
+
151
+ @query_string.remove_param 'rect'
152
+ @query_string.set_param 'fp-x', x
153
+ @query_string.set_param 'fp-y', y
154
+ @query_string.set_param 'fp-z', z
155
+ @query_string.set_param 'fit', ImageTransformationBuilder::FIT_MODE_CROP
156
+ @query_string.set_param 'crop', 'focalpoint'
157
+ self
158
+ end
159
+
160
+ # Sets the background color of any transparent areas of the image.
161
+ #
162
+ # * *Args*:
163
+ # - *color* (+string+) A valid 3, 4, 6, or 8 digit hexadecimal color, without the # symbol
164
+ #
165
+ # * *Returns*:
166
+ # - +self+
167
+ def with_background_color(color)
168
+ @query_string.set_param 'bg', color
169
+ self
170
+ end
171
+
172
+ # Sets the output format of the request for the image.
173
+ #
174
+ # * *Args*:
175
+ # - *format* (+string+) Use constants from Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder
176
+ #
177
+ # * *Returns*:
178
+ # - +self+
179
+ def with_output_format(format)
180
+ @query_string.set_param 'fm', format
181
+ self
182
+ end
183
+
184
+ # Configure the amount of compression for lossy file formats. Lower quality
185
+ # images will have a smaller file size. Only affects *jpg*, *pjpg*, and
186
+ # *webp* files.
187
+ #
188
+ # When no quality is specified for an image transformation, the default
189
+ # value of 85 is used.
190
+ #
191
+ # * *Args*:
192
+ # - *quality* (+integer+) The quality of the image between 1 and 100
193
+ #
194
+ # * *Returns*:
195
+ # - +self+
196
+ #
197
+ # * *Raises*:
198
+ # - +ArgumentError+ if +quality+ is not between 1 and 100 inclusive
199
+ def with_quality(quality)
200
+ raise ArgumentError, ONE_TO_100 unless quality.to_i >= 1 && quality.to_i <= 100
201
+
202
+ @query_string.set_param 'q', quality
203
+ self
204
+ end
205
+
206
+ # Sets the lossless parameter. If +true+, automatically sets the format
207
+ # to WebP.
208
+ #
209
+ # * *Args*:
210
+ # - *lossless*
211
+ # - +integer+ Either 1 or 0
212
+ # - +bool+ Either +true+ or +false+
213
+ # - +string+ Either 'true' or 'false'
214
+ #
215
+ # * *Returns*:
216
+ # - +self+
217
+ #
218
+ # * *Raises*:
219
+ # - +ArgumentError+ if +lossless+ cannot be parsed as a boolean
220
+ def with_lossless(lossless)
221
+ lossless = lossless.to_s.downcase
222
+ raise ArgumentError, BOOLEAN_PARAM unless bool? lossless
223
+
224
+ @query_string.set_param 'lossless', lossless
225
+ @query_string.set_param 'fm', Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder::FORMAT_WEBP if %w[true 1].include? lossless
226
+ self
227
+ end
228
+
229
+ # Enables or disables automatic format selection. If enabled, it will
230
+ # override the format parameter and deliver WebP instead. If the browser
231
+ # does not support WebP, the value of the format parameter will be used.
232
+ #
233
+ # * *Args*:
234
+ # - *auto*
235
+ # - +integer+ Either 1 or 0
236
+ # - +bool+ Either +true+ or +false+
237
+ # - +string+ Either 'true' or 'false'
238
+ #
239
+ # * *Returns*:
240
+ # - +self+
241
+ #
242
+ # * *Raises*:
243
+ # - +ArgumentError+ if +auto+ cannot be parsed as a boolean
244
+ def with_auto_format_selection(auto)
245
+ auto = auto.to_s.downcase
246
+ raise ArgumentError, BOOLEAN_PARAM unless bool? auto
247
+
248
+ if %w[true 1].include? auto
249
+ @query_string.set_param 'auto', 'format'
250
+ else
251
+ @query_string.remove_param 'auto'
252
+ end
253
+ self
254
+ end
255
+
256
+ private
257
+
258
+ def valid_dims?(x, y, z)
259
+ (x.to_f >= 0.0 && x.to_f <= 1.0) &&
260
+ (y.to_f >= 0.0 && y.to_f <= 1.0) &&
261
+ (z.to_i >= 1)
262
+ end
263
+
264
+ def bool?(value)
265
+ %w[true false 0 1].include? value
266
+ end
267
+ end
268
+ end
269
+ end
270
+ end
271
+ end