Class: SoberSwag::Reporting::Output::ViaMap
- Defined in:
- lib/sober_swag/reporting/output/via_map.rb
Overview
Apply a mapping function before calling a base output.
Note that this is applied before the base output.
This is different than Input::Mapped, which does the reverse.
IE, this class does call block -> pass result to base output,
while the other does call serializer -> pass result to block.
If you want to get really nerdy, this is contravariant to Mapped.
This lets you do things like making an output that serializes to strings via to_s:
ToSTextOutput = SoberSwag::Reporting::Output::ViaMap.new(
SoberSwag::Reporting::Output.text,
proc { |arg| arg.to_s }
)
class Person
def to_s
'Person'
end
end
ToSTextOutput.call(Person.new) # => 'Person'
Instance Attribute Summary collapse
-
#mapper ⇒ #call
readonly
Mapping function.
-
#output ⇒ Interface
readonly
Base output.
Instance Method Summary collapse
- #call(input) ⇒ Object
-
#initialize(output, mapper) ⇒ ViaMap
constructor
A new instance of ViaMap.
- #serialize_report(input) ⇒ Object
- #swagger_schema ⇒ Object
- #view(view) ⇒ Object
- #views ⇒ Object
Methods included from Interface
#call!, #described, #enum, #in_range, #list, #nilable, #partitioned, #referenced, #reporting?, #serialize, #via_map
Constructor Details
#initialize(output, mapper) ⇒ ViaMap
Returns a new instance of ViaMap.
32 33 34 35 |
# File 'lib/sober_swag/reporting/output/via_map.rb', line 32 def initialize(output, mapper) @output = output @mapper = mapper end |
Instance Attribute Details
#mapper ⇒ #call (readonly)
Returns mapping function.
43 44 45 |
# File 'lib/sober_swag/reporting/output/via_map.rb', line 43 def mapper @mapper end |
#output ⇒ Interface (readonly)
Returns base output.
39 40 41 |
# File 'lib/sober_swag/reporting/output/via_map.rb', line 39 def output @output end |
Instance Method Details
#call(input) ⇒ Object
45 46 47 |
# File 'lib/sober_swag/reporting/output/via_map.rb', line 45 def call(input) output.call(mapper.call(input)) end |
#serialize_report(input) ⇒ Object
49 50 51 |
# File 'lib/sober_swag/reporting/output/via_map.rb', line 49 def serialize_report(input) output.serialize_report(mapper.call(input)) end |
#swagger_schema ⇒ Object
61 62 63 |
# File 'lib/sober_swag/reporting/output/via_map.rb', line 61 def swagger_schema output.swagger_schema end |
#view(view) ⇒ Object
53 54 55 |
# File 'lib/sober_swag/reporting/output/via_map.rb', line 53 def view(view) ViaMap.new(output.view(view), mapper) end |
#views ⇒ Object
57 58 59 |
# File 'lib/sober_swag/reporting/output/via_map.rb', line 57 def views output.views end |