Module: Vident::Stimulus

Defined in:
lib/vident/stimulus.rb,
lib/vident/stimulus/naming.rb,
lib/vident/stimulus/primitive.rb

Defined Under Namespace

Modules: Naming Classes: KeyedPrimitive, PositionalPrimitive, Primitive

Constant Summary collapse

PRIMITIVES =

Registry of primitive kinds. Add an entry (paired with a Value/Collection class pair) to extend; plural parsers, mutators, and the data-attribute builder pick it up. Array order = data attribute emission order.

[
  PositionalPrimitive.new(:controllers, StimulusController, StimulusControllerCollection),
  PositionalPrimitive.new(:actions, StimulusAction, StimulusActionCollection),
  PositionalPrimitive.new(:targets, StimulusTarget, StimulusTargetCollection),
  KeyedPrimitive.new(:outlets, StimulusOutlet, StimulusOutletCollection),
  KeyedPrimitive.new(:values, StimulusValue, StimulusValueCollection),
  KeyedPrimitive.new(:params, StimulusParam, StimulusParamCollection),
  KeyedPrimitive.new(:classes, StimulusClass, StimulusClassCollection)
].freeze
PRIMITIVES_BY_NAME =
PRIMITIVES.to_h { |primitive| [primitive.name, primitive] }.freeze

Class Method Summary collapse

Class Method Details

.each(&block) ⇒ Object



26
# File 'lib/vident/stimulus.rb', line 26

def each(&block) = PRIMITIVES.each(&block)

.namesObject



28
# File 'lib/vident/stimulus.rb', line 28

def names = PRIMITIVES.map(&:name)

.primitive(name) ⇒ Object



21
22
23
24
# File 'lib/vident/stimulus.rb', line 21

def primitive(name)
  PRIMITIVES_BY_NAME[name] or
    raise ArgumentError, "Unknown stimulus primitive #{name.inspect}; valid: #{PRIMITIVES_BY_NAME.keys.inspect}"
end