Class: Evva::AndroidGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/evva/android_generator.rb

Constant Summary collapse

IMPORT_EVENT =
"import packagename.Event".freeze
IMPORT_MASK =
"import packagename.MixpanelAnalyticsMask".freeze
IMPORT_JSON =
"import org.json.JSONObject".freeze
NATIVE_TYPES =
%w[Long Int String Double Float Boolean].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(package_name) ⇒ AndroidGenerator

Returns a new instance of AndroidGenerator.



5
6
7
# File 'lib/evva/android_generator.rb', line 5

def initialize(package_name)
  @package_name = package_name
end

Instance Attribute Details

#package_nameObject

Returns the value of attribute package_name.



3
4
5
# File 'lib/evva/android_generator.rb', line 3

def package_name
  @package_name
end

Instance Method Details

#event_enum(bundle, file_name) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/evva/android_generator.rb', line 40

def event_enum(bundle, file_name)
  header_footer_wrapper([IMPORT_EVENT]) do
    body = "enum class #{file_name}(override val key: String) : Event {\n"
    body << bundle.map(&:event_name).map { |prop| "\t#{prop.upcase}(\"#{prop}\")" }.join(",\n")
    body << ";\n}"
  end
end

#events(bundle, file_name) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/evva/android_generator.rb', line 15

def events(bundle, file_name)
  header_footer_wrapper([IMPORT_EVENT, IMPORT_MASK, IMPORT_JSON]) do
"""open class #{file_name}(private val mask: MixpanelAnalyticsMask) {

#{bundle.map { |e| kotlin_function(e) }.join("\n\n")}

\topen fun updateProperties(property: MixpanelProperties, value: Any) {
\t\tmask.updateProperties(property.key, value)
\t}

\topen fun incrementCounter(property: MixpanelProperties) {
\t\tmask.incrementCounter(property.key)
\t}
}"""
  end
end

#people_properties(people_bundle, file_name) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/evva/android_generator.rb', line 32

def people_properties(people_bundle, file_name)
  header_footer_wrapper do
    body = "enum class MixpanelProperties(val key: String) {\n"
    body << people_bundle.map { |prop| "\t#{prop.upcase}(\"#{prop}\")" }.join(",\n")
    body << ";\n}"
  end
end

#special_property_enums(enums) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/evva/android_generator.rb', line 48

def special_property_enums(enums)
  header_footer_wrapper do
    enums.map do |enum|
      body = "enum class #{enum.enum_name}(val key: String) {\n"
      body << enum.values.map { |vals| "\t#{vals.tr(' ', '_').upcase}(\"#{vals}\")"}.join(",\n")
      body << ";\n}"
    end.join("\n\n")
  end
end