Class: Eco::API::Common::People::PersonAttributeParser
- Inherits:
-
Language::Models::ParserSerializer
- Object
- Language::Models::ParserSerializer
- Eco::API::Common::People::PersonAttributeParser
- Defined in:
- lib/eco/api/common/people/person_attribute_parser.rb
Overview
Class to define a parser/serializer.
Instance Attribute Summary
Attributes inherited from Language::Models::ParserSerializer
Instance Method Summary collapse
-
#active_when_all?(*attrs) ⇒ Boolean
Helper to build the
active_when
condition. -
#active_when_any?(*attrs) ⇒ Boolean
Helper to build the
active_when
condition. -
#def_parser(phase = :internal, active_when: nil, &block) ⇒ Object
parser will be active/used.
- #def_serializer(phase = :person, &block) ⇒ Object
-
#parser_active?(source_data, phase = :any) ⇒ Boolean
Determines if for a given source data to parse, this parser should be active or not.
- #required_attrs ⇒ RequiredAttrs
-
#serializer_active?(phase = :any) ⇒ Boolean
Determines a serializer should be active or not.
Methods inherited from Language::Models::ParserSerializer
#initialize, #parse, #parser_category?, #serialize, #serializer_category?
Constructor Details
This class inherits a constructor from Eco::Language::Models::ParserSerializer
Instance Method Details
#active_when_all?(*attrs) ⇒ Boolean
Helper to build the active_when
condition.
61 62 63 64 65 66 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 61 def active_when_all?(*attrs) proc do |source_data| keys = data_keys(source_data) attrs.all? {|key| keys.include?(key)} end end |
#active_when_any?(*attrs) ⇒ Boolean
Helper to build the active_when
condition.
53 54 55 56 57 58 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 53 def active_when_any?(*attrs) proc do |source_data| keys = data_keys(source_data) attrs.any? {|key| keys.include?(key)} end end |
#def_parser(phase = :internal, active_when: nil, &block) ⇒ Object
Note:
- additionally, you can declare a callback
active:
to determine if when the
parser will be active/used.
- this is important to help avoiding to set values that are not present in the input entry.
- if you have doubts about using it or not, do not use it. By default, an attribute paraser is active if in the entry to parse the internal attribute is present.
25 26 27 28 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 25 def def_parser(phase = :internal, active_when: nil, &block) @active_when = attribute_present(active_when) super(phase, &block) end |
#def_serializer(phase = :person, &block) ⇒ Object
32 33 34 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 32 def def_serializer(phase = :person, &block) super(phase, &block) end |
#parser_active?(source_data, phase = :any) ⇒ Boolean
Determines if for a given source data to parse, this parser should be active or not.
40 41 42 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 40 def parser_active?(source_data, phase = :any) (phase == :any || parser_category?(phase)) && @active_when.call(source_data) end |
#required_attrs ⇒ RequiredAttrs
Note:
- This was introduced at a later stage and might not be available for certain org-parsers configs
10 11 12 13 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 10 def required_attrs @required_attrs ||= @dependencies[:required_attrs] #@required_attrs ||= RequiredAttrs.new(attr, :unknown, [attr]) end |
#serializer_active?(phase = :any) ⇒ Boolean
Determines a serializer should be active or not.
48 49 50 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 48 def serializer_active?(phase = :any) (phase == :any) || serializer_category?(phase) end |