Class: Lutaml::Model::Choice
- Inherits:
-
Object
- Object
- Lutaml::Model::Choice
- Defined in:
- lib/lutaml/model/choice.rb
Instance Attribute Summary collapse
-
#attributes ⇒ Object
readonly
Returns the value of attribute attributes.
-
#max ⇒ Object
readonly
Returns the value of attribute max.
-
#min ⇒ Object
readonly
Returns the value of attribute min.
-
#model ⇒ Object
readonly
Returns the value of attribute model.
Instance Method Summary collapse
- #==(other) ⇒ Object
- #attribute(name, type, options = {}) ⇒ Object
- #choice(min: 1, max: 1, &block) ⇒ Object
-
#initialize(model, min, max) ⇒ Choice
constructor
A new instance of Choice.
- #validate_content!(object) ⇒ Object
Constructor Details
#initialize(model, min, max) ⇒ Choice
Returns a new instance of Choice.
9 10 11 12 13 14 15 16 |
# File 'lib/lutaml/model/choice.rb', line 9 def initialize(model, min, max) @attributes = [] @model = model @min = min @max = max raise Lutaml::Model::InvalidChoiceRangeError.new(@min, @max) if @min.negative? || @max.negative? end |
Instance Attribute Details
#attributes ⇒ Object (readonly)
Returns the value of attribute attributes.
4 5 6 |
# File 'lib/lutaml/model/choice.rb', line 4 def attributes @attributes end |
#max ⇒ Object (readonly)
Returns the value of attribute max.
4 5 6 |
# File 'lib/lutaml/model/choice.rb', line 4 def max @max end |
#min ⇒ Object (readonly)
Returns the value of attribute min.
4 5 6 |
# File 'lib/lutaml/model/choice.rb', line 4 def min @min end |
#model ⇒ Object (readonly)
Returns the value of attribute model.
4 5 6 |
# File 'lib/lutaml/model/choice.rb', line 4 def model @model end |
Instance Method Details
#==(other) ⇒ Object
18 19 20 21 22 23 |
# File 'lib/lutaml/model/choice.rb', line 18 def ==(other) @attributes == other.attributes && @min == other.min && @max == other.max && @model == other.model end |
#attribute(name, type, options = {}) ⇒ Object
25 26 27 28 |
# File 'lib/lutaml/model/choice.rb', line 25 def attribute(name, type, = {}) [:choice] = self @attributes << @model.attribute(name, type, ) end |
#choice(min: 1, max: 1, &block) ⇒ Object
30 31 32 33 34 |
# File 'lib/lutaml/model/choice.rb', line 30 def choice(min: 1, max: 1, &block) @attributes << Choice.new(@model, min, max).tap do |c| c.instance_eval(&block) end end |
#validate_content!(object) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/lutaml/model/choice.rb', line 36 def validate_content!(object) validated_attributes = [] valid = valid_attributes(object, validated_attributes) raise Lutaml::Model::ChoiceUpperBoundError.new(validated_attributes, @max) if valid.count > @max raise Lutaml::Model::ChoiceLowerBoundError.new(validated_attributes, @min) if valid.count < @min end |