Class: Evva::AndroidGenerator
- Inherits:
-
Object
- Object
- Evva::AndroidGenerator
- Defined in:
- lib/evva/android_generator.rb
Constant Summary collapse
- KOTLIN_EVENT_HEADER =
"package com.hole19golf.hole19.analytics\n\n"\ "import com.hole19golf.hole19.analytics.Event\n"\ "import com.hole19golf.hole19.analytics.MixpanelAnalyticsMask\n"\ "import org.json.JSONObject\n\n"\ "open class MixpanelEvents(private val mixpanelMask: MixpanelAnalyticsMask) {\n".freeze
- KOTLIN_PEOPLE_HEADER =
"package com.hole19golf.hole19.analytics\n"\ "import com.hole19golf.hole19.analytics.Event\n\n"\ "enum class MixpanelProperties(val key: String) {\n".freeze
- KOTLIN_BUNDLE_HEADER =
"package com.hole19golf.hole19.analytics\n"\ "import com.hole19golf.hole19.analytics.Event\n\n"\ "enum class MixpanelEvent(override val key: String) : Event {\n".freeze
- KOTIN_PEOPLE_FUNCTIONS =
"\topen fun updateProperties(property: MixpanelProperties, value: Any) {\n"\ "\t\tmixpanelMask.updateProperties(property.key, value)"\ "\t\n} \n"\ "\topen fun incrementCounter(property: MixpanelProperties) {\n"\ "\t\tmixpanelMask.incrementCounter(property.key)"\ "\t\n} \n".freeze
- NATIVE_TYPES =
%w[Long Int String Double Float Boolean].freeze
Instance Method Summary collapse
- #event_enum(bundle) ⇒ Object
- #events(bundle) ⇒ Object
- #kotlin_function(event_data) ⇒ Object
- #people_properties(people_bundle) ⇒ Object
- #special_property_enum(enum) ⇒ Object
Instance Method Details
#event_enum(bundle) ⇒ Object
45 46 47 48 49 |
# File 'lib/evva/android_generator.rb', line 45 def event_enum(bundle) event_file = KOTLIN_BUNDLE_HEADER event_file += bundle.map { |event| "\t\t#{event.event_name.upcase}(\"#{event.event_name}\")"}.join(", \n") event_file += "\n}\n" end |
#events(bundle) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/evva/android_generator.rb', line 30 def events(bundle) event_file = KOTLIN_EVENT_HEADER bundle.each do |event| event_file += "\n#{kotlin_function(event)}" end event_file += KOTIN_PEOPLE_FUNCTIONS event_file += "\n}" end |
#kotlin_function(event_data) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/evva/android_generator.rb', line 51 def kotlin_function(event_data) function_name = 'track' + titleize(event_data.event_name) function_arguments = event_data.properties.map { |name, type| "#{name}: #{type}" }.join(', ') if !function_arguments.empty? props = json_props(event_data.properties) function_body = "open fun #{function_name}(#{function_arguments}) {"\ "#{props}"\ "\tmixpanelMask.trackEvent(MixpanelEvent.#{event_data.event_name.upcase}, properties)\n" else function_body = "open fun #{function_name}() {\n"\ "\tmixpanelMask.trackEvent(MixpanelEvent.#{event_data.event_name.upcase})\n" end function_body += "}\n" end |
#people_properties(people_bundle) ⇒ Object
39 40 41 42 43 |
# File 'lib/evva/android_generator.rb', line 39 def people_properties(people_bundle) properties = KOTLIN_PEOPLE_HEADER properties += people_bundle.map { |prop| "\t\t#{prop.upcase}(\"#{prop}\")" }.join(",\n") properties += ";\n}\n" end |
#special_property_enum(enum) ⇒ Object
68 69 70 71 72 73 |
# File 'lib/evva/android_generator.rb', line 68 def special_property_enum(enum) enum_body = "package com.hole19golf.hole19.analytics\n\n" enum_body += "enum class #{enum.enum_name}(val key: String) {\n" enum_body += enum.values.map { |vals| "\t#{vals.tr(' ', '_').upcase}(\"#{vals}\")"}.join(",\n") enum_body += "\n}\n" end |