Module: Weft::DSL::Inclusions::ClassMethods
- Defined in:
- lib/weft/dsl/inclusions.rb
Constant Summary collapse
- WHEN_VALUES =
Contexts a
when:filter may name. Only :transferred ships today; the vocabulary grows deliberately. %i[transferred].freeze
Instance Method Summary collapse
-
#includes(component_class, on: nil, **options, &block) ⇒ Object
Declare that another component should be OOB-swapped alongside this component's responses.
-
#inclusions ⇒ Object
All declared inclusions (own + inherited).
Instance Method Details
#includes(component_class, on: nil, **options, &block) ⇒ Object
Declare that another component should be OOB-swapped alongside this component's responses.
includes OrderHeader # every response
includes OrderHeader, on: :advance # own action(s) only
includes OrderHeader, on: %i[advance retreat]
includes OrderHeader, when: :transferred # transfer arrivals only
includes OrderHeader, on: :save, when: :transferred # union: either
includes OrderHeader do |params| # companion delta
{ order_id: params.order_id, compact: true }
end
Unfiltered inclusions ride every response this component renders in:
its own actions, SSE pushes, and transfer arrivals. Filters
enumerate contexts — on: names this component's OWN actions
(never a transferring component's), when: :transferred fires when
this component renders as a transfer target; declaring both is a
union. The block's return is a DELTA overlaid on the request for
this companion alone; blockless is exactly an empty delta.
(when rides **options because it's a Ruby reserved word — call
sites are unaffected, only this signature is.)
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/weft/dsl/inclusions.rb', line 43 def includes(component_class, on: nil, **, &block) when_filter = .delete(:when) raise ArgumentError, "unknown keywords: #{.keys.inspect}" unless .empty? site = caller_locations(1, 1).first own_inclusions << { component_class: component_class, on: on.nil? ? nil : Array(on), when: validated_when(when_filter), block: block, source_location: [site.path, site.lineno] } end |
#inclusions ⇒ Object
All declared inclusions (own + inherited).
56 57 58 59 60 61 62 |
# File 'lib/weft/dsl/inclusions.rb', line 56 def inclusions if superclass.respond_to?(:inclusions) superclass.inclusions + own_inclusions else own_inclusions.dup end end |