Class: Ibex::Configuration::Value
- Inherits:
-
Object
- Object
- Ibex::Configuration::Value
- Defined in:
- lib/ibex/configuration.rb,
sig/ibex/configuration.rbs
Overview
A typed effective value plus the evidence needed to explain it.
Instance Attribute Summary collapse
- #canonical ⇒ Boolean readonly
- #declared_value ⇒ config_value readonly
- #explicit ⇒ Boolean readonly
- #key ⇒ Key readonly
- #origin ⇒ Origin readonly
- #value ⇒ config_value readonly
Instance Method Summary collapse
-
#initialize(key, value, origin:, explicit:, canonical:, declared_value: DECLARED_VALUE_UNSET) ⇒ Value
constructor
A new instance of Value.
- #json_value(value) ⇒ String, ...
- #to_h ⇒ Hash[String, json_value]
- #validate_canonical_origin!(key, origin, canonical) ⇒ void
- #validate_declared_evidence!(canonical, declared_value) ⇒ void
- #validate_explicitness!(origin, explicit) ⇒ void
- #validate_owner_source!(key, origin) ⇒ void
- #validate_provenance!(key, origin, explicit, canonical, declared_value) ⇒ void
Constructor Details
#initialize(key, value, origin:, explicit:, canonical:, declared_value: DECLARED_VALUE_UNSET) ⇒ Value
Returns a new instance of Value.
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/ibex/configuration.rb', line 169 def initialize(key, value, origin:, explicit:, canonical:, declared_value: DECLARED_VALUE_UNSET) raise ArgumentError, "configuration value key must be a Configuration::Key" unless key.is_a?(Key) raise ArgumentError, "configuration value origin must be a Configuration::Origin" unless origin.is_a?(Origin) raise ArgumentError, "explicit must be boolean" unless BOOLEAN_VALUES.include?(explicit) raise ArgumentError, "canonical must be boolean" unless BOOLEAN_VALUES.include?(canonical) validate_provenance!(key, origin, explicit, canonical, declared_value) @key = key @value = key.validate(value) @origin = origin @explicit = explicit @canonical = canonical declared = declared_value #: config_value @declared_value = declared.equal?(DECLARED_VALUE_UNSET) ? nil : key.validate(declared) freeze end |
Instance Attribute Details
#canonical ⇒ Boolean (readonly)
164 165 166 |
# File 'lib/ibex/configuration.rb', line 164 def canonical @canonical end |
#declared_value ⇒ config_value (readonly)
165 166 167 |
# File 'lib/ibex/configuration.rb', line 165 def declared_value @declared_value end |
#explicit ⇒ Boolean (readonly)
163 164 165 |
# File 'lib/ibex/configuration.rb', line 163 def explicit @explicit end |
#origin ⇒ Origin (readonly)
162 163 164 |
# File 'lib/ibex/configuration.rb', line 162 def origin @origin end |
#value ⇒ config_value (readonly)
161 162 163 |
# File 'lib/ibex/configuration.rb', line 161 def value @value end |
Instance Method Details
#json_value(value) ⇒ String, ...
257 258 259 |
# File 'lib/ibex/configuration.rb', line 257 def json_value(value) value.is_a?(Symbol) ? value.to_s : value end |
#to_h ⇒ Hash[String, json_value]
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/ibex/configuration.rb', line 189 def to_h result = { "key" => @key.name, "value" => json_value(@value), "owner" => @key.owner_name, "policy" => @key.policy.to_s, "origin" => @origin.to_h, "explicit" => @explicit, "canonical" => @canonical } #: Hash[String, json_value] unless @canonical result["analysis"] = { "declared" => json_value(@declared_value), "selected" => json_value(@value), "override" => true, "canonical_generation" => false } end result end |
#validate_canonical_origin!(key, origin, canonical) ⇒ void
This method returns an undefined value.
221 222 223 224 225 226 227 228 229 |
# File 'lib/ibex/configuration.rb', line 221 def validate_canonical_origin!(key, origin, canonical) analysis_override = origin.kind == :analysis_override unless analysis_override == !canonical raise ArgumentError, "analysis_override origin must identify a noncanonical selection" end return if canonical || key.policy == :fixed raise ArgumentError, "noncanonical selections are only valid for fixed configuration" end |
#validate_declared_evidence!(canonical, declared_value) ⇒ void
This method returns an undefined value.
248 249 250 251 252 253 254 |
# File 'lib/ibex/configuration.rb', line 248 def validate_declared_evidence!(canonical, declared_value) declared = !declared_value.equal?(DECLARED_VALUE_UNSET) raise ArgumentError, "canonical selections cannot carry declared evidence" if canonical && declared return if canonical || declared raise ArgumentError, "noncanonical selections require declared evidence" end |
#validate_explicitness!(origin, explicit) ⇒ void
This method returns an undefined value.
242 243 244 245 |
# File 'lib/ibex/configuration.rb', line 242 def validate_explicitness!(origin, explicit) raise ArgumentError, "builtin configuration cannot be explicit" if origin.kind == :builtin && explicit raise ArgumentError, "non-builtin configuration must be explicit" if origin.kind != :builtin && !explicit end |
#validate_owner_source!(key, origin) ⇒ void
This method returns an undefined value.
232 233 234 235 236 237 238 239 |
# File 'lib/ibex/configuration.rb', line 232 def validate_owner_source!(key, origin) if origin.kind == :grammar && !%i[fixed minimum].include?(key.policy) raise ArgumentError, "#{key.name} is #{key.policy} configuration and cannot be grammar-owned" end return unless origin.kind == :project && key.policy == :invocation raise ArgumentError, "#{key.name} is invocation configuration and cannot be project-owned" end |
#validate_provenance!(key, origin, explicit, canonical, declared_value) ⇒ void
This method returns an undefined value.
213 214 215 216 217 218 |
# File 'lib/ibex/configuration.rb', line 213 def validate_provenance!(key, origin, explicit, canonical, declared_value) validate_canonical_origin!(key, origin, canonical) validate_owner_source!(key, origin) validate_explicitness!(origin, explicit) validate_declared_evidence!(canonical, declared_value) end |