Class: Evva::SwiftGenerator
- Inherits:
-
Object
- Object
- Evva::SwiftGenerator
- Defined in:
- lib/evva/swift_generator.rb
Constant Summary collapse
- EXTENSION_HEADER =
"\nimport Foundation\n\n"\ "extension Analytics {\n\n".freeze
- EXTENSION_FOOTER =
"\n\n}\n"- NATIVE_TYPES =
%w[Int String Double Float Bool].freeze
Instance Method Summary collapse
- #event_case(event_data) ⇒ Object
- #event_data(event_data) ⇒ Object
- #event_enum(enum, file_name) ⇒ Object
- #events(bundle, file_name) ⇒ Object
- #people_properties(people_bundle, file_name) ⇒ Object
- #special_property_enums(enums) ⇒ Object
Instance Method Details
#event_case(event_data) ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/evva/swift_generator.rb', line 26 def event_case(event_data) function_name = camelize(event_data.event_name) if event_data.properties.empty? "\t\tcase #{function_name}" else trimmed_properties = event_data.properties.map { |k, v| k.to_s + ': ' + native_type(v) }.join(", ") "\t\tcase #{function_name}(#{trimmed_properties})" end end |
#event_data(event_data) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/evva/swift_generator.rb', line 36 def event_data(event_data) function_name = camelize(event_data.event_name) if event_data.properties.empty? function_body = "\t\t\tcase .#{function_name}:\n" \ "\t\t\t\treturn EventData(name: \"#{event_data.event_name}\")" else function_header = prepend_let(event_data.properties) function_arguments = dictionary_pairs(event_data.properties) function_body = "\t\t\tcase .#{function_name}(#{function_header}):\n"\ "\t\t\t\treturn EventData(name: \"#{event_data.event_name}\", properties: [\n"\ "\t\t\t\t\t#{function_arguments.join(",\n\t\t\t\t\t")} ]\n"\ "\t\t\t\t)" end function_body end |
#event_enum(enum, file_name) ⇒ Object
52 53 54 |
# File 'lib/evva/swift_generator.rb', line 52 def event_enum(enum, file_name) # empty end |
#events(bundle, file_name) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/evva/swift_generator.rb', line 12 def events(bundle, file_name) do """\tenum Event { #{bundle.map { |e| event_case(e) }.join("\n")} \t\tvar data: EventData { \t\t\tswitch self { #{bundle.map { |e| event_data(e) }.join("\n\n")} \t\t\t} \t\t} \t}""" end end |
#people_properties(people_bundle, file_name) ⇒ Object
56 57 58 59 60 61 62 63 64 |
# File 'lib/evva/swift_generator.rb', line 56 def people_properties(people_bundle, file_name) do props = "\tenum Property: String {\n" people_bundle.each do |prop| props << "\t\tcase #{camelize(prop)} = \"#{prop}\"\n" end props << "\t}" end end |
#special_property_enums(enums) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/evva/swift_generator.rb', line 66 def special_property_enums(enums) do enums.map do |enum| body = "\tenum #{enum.enum_name}: String {\n" enum.values.each do |value| body << "\t\tcase #{camelize(value)} = \"#{value}\"\n" end body << "\t}" end.join("\n\n") end end |