Class: StimulusReflex::ReflexData

Inherits:
Object
  • Object
show all
Defined in:
lib/stimulus_reflex/reflex_data.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ ReflexData

Returns a new instance of ReflexData.



6
7
8
# File 'lib/stimulus_reflex/reflex_data.rb', line 6

def initialize(data)
  @data = data.deep_merge(data.deep_transform_keys { |k| k.to_s.underscore }).with_indifferent_access
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



4
5
6
# File 'lib/stimulus_reflex/reflex_data.rb', line 4

def data
  @data
end

Instance Method Details

#argumentsObject



30
31
32
# File 'lib/stimulus_reflex/reflex_data.rb', line 30

def arguments
  (data[:args] || []).map { |arg| object_with_indifferent_access arg } || []
end

#elementObject



38
39
40
# File 'lib/stimulus_reflex/reflex_data.rb', line 38

def element
  StimulusReflex::Element.new(data)
end

#form_dataObject



50
51
52
# File 'lib/stimulus_reflex/reflex_data.rb', line 50

def form_data
  Rack::Utils.parse_nested_query(data[:form_data])
end

#form_paramsObject



58
59
60
# File 'lib/stimulus_reflex/reflex_data.rb', line 58

def form_params
  form_data.deep_merge(data[:params] || {})
end

#idObject



66
67
68
# File 'lib/stimulus_reflex/reflex_data.rb', line 66

def id
  data[:id]
end

#method_nameObject



26
27
28
# File 'lib/stimulus_reflex/reflex_data.rb', line 26

def method_name
  target.split("#").second
end

#npm_versionObject



88
89
90
# File 'lib/stimulus_reflex/reflex_data.rb', line 88

def npm_version
  data[:version].to_s
end

#paramsObject



54
55
56
# File 'lib/stimulus_reflex/reflex_data.rb', line 54

def params
  form_params.deep_merge(url_params)
end

#permanent_attribute_nameObject



42
43
44
# File 'lib/stimulus_reflex/reflex_data.rb', line 42

def permanent_attribute_name
  data[:permanent_attribute_name]
end

#reflex_controllerObject

END TODO remove



84
85
86
# File 'lib/stimulus_reflex/reflex_data.rb', line 84

def reflex_controller
  data[:reflex_controller]
end

#reflex_nameObject



10
11
12
13
14
# File 'lib/stimulus_reflex/reflex_data.rb', line 10

def reflex_name
  reflex_name = target.split("#").first
  reflex_name = reflex_name.camelize
  reflex_name.end_with?("Reflex") ? reflex_name : "#{reflex_name}Reflex"
end

#selectorsObject



16
17
18
19
20
# File 'lib/stimulus_reflex/reflex_data.rb', line 16

def selectors
  selectors = (data[:selectors] || []).select(&:present?)
  selectors = data[:selectors] = ["body"] if selectors.blank?
  selectors
end

#suppress_loggingObject



46
47
48
# File 'lib/stimulus_reflex/reflex_data.rb', line 46

def suppress_logging
  data[:suppress_logging]
end

#tab_idObject



70
71
72
# File 'lib/stimulus_reflex/reflex_data.rb', line 70

def tab_id
  data[:tab_id]
end

#targetObject



22
23
24
# File 'lib/stimulus_reflex/reflex_data.rb', line 22

def target
  data[:target].to_s
end

#urlObject



34
35
36
# File 'lib/stimulus_reflex/reflex_data.rb', line 34

def url
  data[:url].to_s
end

#url_paramsObject



62
63
64
# File 'lib/stimulus_reflex/reflex_data.rb', line 62

def url_params
  Rack::Utils.parse_nested_query(URI.parse(url).query)
end

#versionObject



92
93
94
# File 'lib/stimulus_reflex/reflex_data.rb', line 92

def version
  npm_version.gsub("-pre", ".pre").gsub("-rc", ".rc")
end

#xpath_controllerObject

TODO: remove this in v4



75
76
77
# File 'lib/stimulus_reflex/reflex_data.rb', line 75

def xpath_controller
  data[:xpath_controller]
end

#xpath_elementObject



79
80
81
# File 'lib/stimulus_reflex/reflex_data.rb', line 79

def xpath_element
  data[:xpath_element]
end