easol-canvas 3.1.1 → 3.3.0

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: 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