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