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.
-
#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.
56 57 58 59 60 61 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 56 def active_when_all?(*attrs) Proc.new 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.
48 49 50 51 52 53 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 48 def active_when_any?(*attrs) Proc.new 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.
19 20 21 22 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 19 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
26 27 28 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 26 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.
34 35 36 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 34 def parser_active?(source_data, phase = :any) (phase == :any || parser_category?(phase)) && @active_when.call(source_data) end |
#serializer_active?(phase = :any) ⇒ Boolean
Determines a serializer should be active or not.
42 43 44 |
# File 'lib/eco/api/common/people/person_attribute_parser.rb', line 42 def serializer_active?(phase = :any) (phase == :any) || serializer_category?(phase) end |