Class: Eco::Language::Models::ParserSerializer
- Inherits:
-
Object
- Object
- Eco::Language::Models::ParserSerializer
- Defined in:
- lib/eco/language/models/parser_serializer.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#attr ⇒ Object
readonly
Returns the value of attribute attr.
Instance Method Summary collapse
-
#def_parser {|source_data, dependencies| ... } ⇒ Object
Defines the parser of the attribute.
-
#def_serializer {|source_data, dependencies| ... } ⇒ Object
Defines the serializer of the attribute.
-
#initialize(attr, dependencies: {}) ⇒ ParserSerializer
constructor
Parser/seralizer.
-
#parse(source, dependencies: {}) ⇒ Object
Calls the
parserof this attribute by passingsourceand resolved dependencies. -
#serialize(object, dependencies: {}) ⇒ Object
Calls the
serializerof this attribute by passingobjectand resolved dependencies.
Constructor Details
#initialize(attr, dependencies: {}) ⇒ ParserSerializer
Parser/seralizer. parsing or serializing functions.
13 14 15 16 |
# File 'lib/eco/language/models/parser_serializer.rb', line 13 def initialize(attr, dependencies: {}) @attr = attr @dependencies = dependencies end |
Instance Attribute Details
#attr ⇒ Object (readonly)
Returns the value of attribute attr.
7 8 9 |
# File 'lib/eco/language/models/parser_serializer.rb', line 7 def attr @attr end |
Instance Method Details
#def_parser {|source_data, dependencies| ... } ⇒ Object
Note:
- the block should expect one or two parameters.
- the final dependencies is a merge of default dependencies with
parsecall dependencies.
Defines the parser of the attribute.
25 26 27 28 |
# File 'lib/eco/language/models/parser_serializer.rb', line 25 def def_parser(&block) @parser = block self end |
#def_serializer {|source_data, dependencies| ... } ⇒ Object
Note:
- the block should expect one or two parameters.
- the final dependencies is a merge of default dependencies with
serializecall dependencies.
Defines the serializer of the attribute.
37 38 39 40 |
# File 'lib/eco/language/models/parser_serializer.rb', line 37 def def_serializer(&block) @serializer = block self end |
#parse(source, dependencies: {}) ⇒ Object
Note:
- the method depenencies override keys of the default dependencies.
Calls the parser of this attribute by passing source and resolved dependencies.
48 49 50 51 |
# File 'lib/eco/language/models/parser_serializer.rb', line 48 def parse(source, dependencies: {}) raise "There is no parser for this attribue '#{attr}'" if !@parser @parser.call(source, @dependencies.merge(dependencies), attr) end |
#serialize(object, dependencies: {}) ⇒ Object
Note:
- the method depenencies override keys of the default dependencies.
Calls the serializer of this attribute by passing object and resolved dependencies.
59 60 61 62 |
# File 'lib/eco/language/models/parser_serializer.rb', line 59 def serialize(object, dependencies: {}) raise "There is no serializer for this attribue '#{attr}'" if !@serializer @serializer.call(object, @dependencies.merge(dependencies), attr) end |