Class: ROM::Processor::Transproc
- Inherits:
-
ROM::Processor
- Object
- ROM::Processor
- ROM::Processor::Transproc
- Includes:
- Transproc::Composer
- Defined in:
- core/lib/rom/processor/transproc.rb
Overview
Data mapping transformer builder using Transproc
This builds a transproc function that is used to map a whole relation
Defined Under Namespace
Modules: Functions
Instance Attribute Summary collapse
-
#header ⇒ Header
readonly
private
Header from a mapper.
-
#mapper ⇒ Mapper
readonly
private
Mapper that this processor belongs to.
-
#mapping ⇒ Hash
readonly
private
Header's attribute mapping.
-
#model ⇒ Class
readonly
private
Model class from a mapper.
-
#row_proc ⇒ Proc
readonly
private
Row-processing proc.
Class Method Summary collapse
-
.build(mapper, header) ⇒ Transproc::Function
private
Build a transproc function from the header.
Instance Method Summary collapse
-
#initialize(mapper, header) ⇒ Transproc
constructor
private
A new instance of Transproc.
-
#to_transproc ⇒ Transproc::Function
private
Coerce mapper header to a transproc data mapping function.
Constructor Details
#initialize(mapper, header) ⇒ Transproc
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Transproc.
86 87 88 89 90 91 92 |
# File 'core/lib/rom/processor/transproc.rb', line 86 def initialize(mapper, header) @mapper = mapper @header = header @model = header.model @mapping = header.mapping initialize_row_proc end |
Instance Attribute Details
#header ⇒ Header (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns header from a mapper.
57 58 59 |
# File 'core/lib/rom/processor/transproc.rb', line 57 def header @header end |
#mapper ⇒ Mapper (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns mapper that this processor belongs to.
52 53 54 |
# File 'core/lib/rom/processor/transproc.rb', line 52 def mapper @mapper end |
#mapping ⇒ Hash (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns header's attribute mapping.
67 68 69 |
# File 'core/lib/rom/processor/transproc.rb', line 67 def mapping @mapping end |
#model ⇒ Class (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns model class from a mapper.
62 63 64 |
# File 'core/lib/rom/processor/transproc.rb', line 62 def model @model end |
#row_proc ⇒ Proc (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns row-processing proc.
72 73 74 |
# File 'core/lib/rom/processor/transproc.rb', line 72 def row_proc @row_proc end |
Class Method Details
.build(mapper, header) ⇒ Transproc::Function
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Build a transproc function from the header
81 82 83 |
# File 'core/lib/rom/processor/transproc.rb', line 81 def self.build(mapper, header) new(mapper, header).to_transproc end |
Instance Method Details
#to_transproc ⇒ Transproc::Function
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Coerce mapper header to a transproc data mapping function
99 100 101 102 103 104 105 106 107 |
# File 'core/lib/rom/processor/transproc.rb', line 99 def to_transproc compose(t(:identity)) do |ops| combined = header.combined ops << t(:combine, combined.map(&method(:combined_args))) if combined.any? ops << header.preprocessed.map { |attr| visit(attr, true) } ops << t(:map_array, row_proc) if row_proc ops << header.postprocessed.map { |attr| visit(attr, true) } end end |