lib/haku/eventable.rb in haku-1.3.1 vs lib/haku/eventable.rb in haku-1.4.0

- old
+ new

@@ -45,30 +45,46 @@ end end def haku_event_data_base(data) Haku.event_properties.each do |property| - data[property] = send(property) if respond_to?(property) + haku_event_data_base_value_for_property(data, property) end end - def haku_process_value(value) - if value.respond_to?(:call) - instance_exec(&value) - else - value.is_a?(Symbol) ? send(value) : value + def haku_event_data_base_value_for_property(data, property) + if instance_variable_defined?("@event_#{property}") + data[property] = instance_variable_get("@event_#{property}") + elsif respond_to?("event_#{property}", true) + data[property] = send("event_#{property}") + elsif instance_variable_defined?("@#{property}") + data[property] = instance_variable_get("@#{property}") + elsif respond_to?(property, true) + data[property] = send(property) end end def haku_event_data_name(data, evt) key = Haku.event_property_for_name.to_sym - data[key] = evt[key] || haku_process_value(Haku.event_name) + data[key] = haku_process_value(evt[key] || Haku.event_name) end def haku_event_data_values(data, evt) evt.except(Haku.event_property_for_name.to_sym).each_pair do |key, value| data[key] = haku_process_value(value) end + end + + def haku_process_value(value) + if value.respond_to?(:call) + instance_exec(&value) + else + value.is_a?(Symbol) ? haku_process_symbol_value(value) : value + end + end + + def haku_process_symbol_value(value) + instance_variable_defined?("@#{value}") ? instance_variable_get("@#{value}") : send(value) end def haku_create_event(data) Haku.event_model.safe_constantize&.create(data) end