easol-canvas 3.1.1 → 3.3.0

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: 02a735325d86666992a3673a94898fd3ad6800e11c4efbe74b34eb7126b349cf
4
- data.tar.gz: e86117c8bcc022a091448f90f4107aa9b07bc51c8d895e15937643ce0fe9502f
3
+ metadata.gz: dba3808e67ba544e61935e149356057b6a757454f3b1dbe2b4da9f85035a8edf
4
+ data.tar.gz: f89ba9a8687bf7ef413a19892892ca2c80482482bb8774e5c3e73030c133b220
5
5
  SHA512:
6
- metadata.gz: c2ed2183d3766d3aa7daccfb40f35685739940e9e48cb419efd511d81e232e01f4865f58a06a0b07edd33786ab841ac6a6586331d874381a2722cfaf7e4dc4cb
7
- data.tar.gz: 2deb9d2f391b9e47f76c5ceac8691e1786769992f684ed6ff11d4f9f6ce9a5a51ad98d40c6c968f87407d9775f1cdf01147e853aad5632fd57ff90b784728403
6
+ metadata.gz: aca6441038d4dd7ddfed0f8d94e7641131cb4972607f7e313ac1c448218553e003850604df4635c07a0afa6cc796e576fea4250c847eb74aad711ff6e6ff7cc5
7
+ data.tar.gz: 1fa803e9cd5d217c6309ec7b20b0719ac7e27cb9bee9cc8713bc88d3961abd47a25e071242dfb151aa630f2b1d882f63a3dded9641b971ec054f9f476a15aed3
@@ -12,20 +12,34 @@ module Canvas
12
12
  ].freeze
13
13
 
14
14
  PRIMITIVE_TYPES = %w[
15
+ boolean
16
+ color
15
17
  image
16
- product
17
- post
18
- page
19
18
  link
20
- text
21
- string
22
- boolean
23
19
  number
24
- color
25
- select
26
- range
20
+ page
21
+ post
22
+ product
27
23
  radio
24
+ range
25
+ select
26
+ string
27
+ text
28
28
  variant
29
29
  ].freeze
30
+
31
+ # These are types where the value is stored as a primitive type, e.g. string, integer.
32
+ # As opposed to values such as product IDs, color hashes, etc.
33
+ # This constant is currently used to determine whether it is safe to preserve
34
+ # a value when a variable changes type.
35
+ TYPES_WITH_PRIMITIVE_VALUE = %w[
36
+ boolean
37
+ number
38
+ radio
39
+ range
40
+ select
41
+ string
42
+ text
43
+ ]
30
44
  end
31
45
  end
@@ -7,10 +7,12 @@ module Canvas
7
7
  # Attribute validations specific to product-type variables.
8
8
  class Product < Base
9
9
  ALLOWED_DEFAULT_VALUES = %w[random].freeze
10
+ ALLOWED_RESTRICTIONS = %w[experiences accommodations extras].freeze
10
11
 
11
12
  def validate
12
13
  super &&
13
- ensure_default_values_are_valid
14
+ ensure_default_values_are_valid &&
15
+ ensure_only_values_are_valid
14
16
  end
15
17
 
16
18
  private
@@ -23,6 +25,10 @@ module Canvas
23
25
  end
24
26
  end
25
27
 
28
+ def optional_keys
29
+ super.merge("only" => Array)
30
+ end
31
+
26
32
  def ensure_default_values_are_valid
27
33
  return true unless attribute.key?("default")
28
34
 
@@ -33,11 +39,27 @@ module Canvas
33
39
  end
34
40
  end
35
41
 
42
+ def ensure_only_values_are_valid
43
+ return true unless attribute.key?("only")
44
+
45
+ if attribute["only"].empty?
46
+ @errors << %["only" cannot be empty]
47
+ return false
48
+ end
49
+
50
+ unsupported_entries = attribute["only"] - ALLOWED_RESTRICTIONS
51
+ if unsupported_entries.any?
52
+ @errors << %["only" for product-type variables must be one of: #{ALLOWED_RESTRICTIONS.join(', ')}]
53
+ return false
54
+ end
55
+
56
+ true
57
+ end
58
+
36
59
  def default_value_is_valid?(value)
37
60
  value = value.downcase
38
61
  if !ALLOWED_DEFAULT_VALUES.include?(value)
39
- @errors << "\"default\" for product-type variables must be "\
40
- "one of: #{ALLOWED_DEFAULT_VALUES.join(', ')}"
62
+ @errors << %["default" for product-type variables must be one of: #{ALLOWED_DEFAULT_VALUES.join(', ')}]
41
63
  false
42
64
  else
43
65
  true
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Canvas
4
- VERSION = "3.1.1"
4
+ VERSION = "3.3.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easol-canvas
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Byrne
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-12-14 00:00:00.000000000 Z
12
+ date: 2023-03-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -171,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
171
  - !ruby/object:Gem::Version
172
172
  version: '0'
173
173
  requirements: []
174
- rubygems_version: 3.3.7
174
+ rubygems_version: 3.3.26
175
175
  signing_key:
176
176
  specification_version: 4
177
177
  summary: CLI to help with building themes for Easol