Class: Eluvia::Fieldset::RestField
- Defined in:
- lib/eluvia/fieldset/rest_field.rb
Instance Attribute Summary collapse
-
#fieldset ⇒ Object
Returns the value of attribute fieldset.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #&(other) ⇒ Object
- #==(other) ⇒ Object
- #deep_dup ⇒ Object
-
#initialize(name, fieldset = nil) ⇒ RestField
constructor
A new instance of RestField.
- #intersection(rest_field) ⇒ Object
- #join(rest_field) ⇒ Object
- #left_intersection(rest_field) ⇒ Object
- #to_s ⇒ Object
- #|(other) ⇒ Object
Constructor Details
#initialize(name, fieldset = nil) ⇒ RestField
Returns a new instance of RestField.
11 12 13 14 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 11 def initialize(name, fieldset = nil) @name = name @fieldset = fieldset end |
Instance Attribute Details
#fieldset ⇒ Object
Returns the value of attribute fieldset.
9 10 11 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 9 def fieldset @fieldset end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
8 9 10 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 8 def name @name end |
Class Method Details
.create_from_string(field_string, default_fieldset_string: nil) ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 16 def self.create_from_string(field_string, default_fieldset_string: nil) if FIELDSET_PATTERN.match?(field_string) name, subfields_string = field_string[0..-2].split('(', 2) fieldset = RestFieldset.create_from_string(subfields_string, default_field_fieldset_string: default_fieldset_string) else name = field_string fieldset = default_fieldset_string.present? ? RestFieldset.create_from_string(default_fieldset_string) : nil end new(name, fieldset) end |
Instance Method Details
#&(other) ⇒ Object
69 70 71 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 69 def &(other) intersection(other) end |
#==(other) ⇒ Object
77 78 79 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 77 def ==(other) other.is_a?(RestField) && name == other.name && fieldset == other.fieldset end |
#deep_dup ⇒ Object
27 28 29 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 27 def deep_dup self.class.new(name, fieldset&.deep_dup) end |
#intersection(rest_field) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 43 def intersection(rest_field) raise ArgumentError, "name mismatch ('#{name}' != '#{rest_field.name}')" unless name == rest_field.name field = deep_dup if field.fieldset.present? && rest_field.fieldset.present? field.fieldset = field.fieldset.intersection(rest_field.fieldset) elsif rest_field.fieldset.present? field.fieldset = rest_field.fieldset.deep_dup end field end |
#join(rest_field) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 31 def join(rest_field) raise ArgumentError, "name mismatch ('#{name}' != '#{rest_field.name}')" unless name == rest_field.name field = deep_dup if field.fieldset.present? && rest_field.fieldset.present? field.fieldset = field.fieldset.join(rest_field.fieldset) elsif rest_field.fieldset.present? field.fieldset = field.fieldset&.deep_dup end field end |
#left_intersection(rest_field) ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 55 def left_intersection(rest_field) raise ArgumentError, "name mismatch ('#{name}' != '#{rest_field.name}')" unless name == rest_field.name field = deep_dup if field.fieldset.present? && rest_field.fieldset.present? field.fieldset = field.fieldset.left_intersection(rest_field.fieldset) end field end |
#to_s ⇒ Object
73 74 75 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 73 def to_s fieldset.present? ? "#{name}(#{fieldset})" : name end |
#|(other) ⇒ Object
65 66 67 |
# File 'lib/eluvia/fieldset/rest_field.rb', line 65 def |(other) join(other) end |