evva 0.1.4.1 → 0.1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/changelog.md +3 -0
- data/lib/evva/swift_generator.rb +39 -50
- data/lib/evva/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90dd43b0fdd3169aa137cf665a8c592693b9d686
|
4
|
+
data.tar.gz: 12649831ed616d714b7357c3fdff9d1cd7cf41ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d043c714969d7d188026015fe15d0ef3a6d0be113d05593c53624e4af1a63f755800bcfab407d35b4512fd00045791ea59085cc6cc918163faae540222dbd5c
|
7
|
+
data.tar.gz: ec753ef63337efd78777711e1e2b62b46956a3c44ef699d50d2f9761ff54a9f82cec7124527cf774ca5c95fbae6a3a90785d2d9702bcf0396525dabfc692b2aa
|
data/changelog.md
CHANGED
data/lib/evva/swift_generator.rb
CHANGED
@@ -1,52 +1,33 @@
|
|
1
1
|
module Evva
|
2
2
|
class SwiftGenerator
|
3
|
-
|
4
|
-
"
|
5
|
-
"
|
6
|
-
|
7
|
-
|
8
|
-
"\
|
9
|
-
"\t\tlet name: String\n"\
|
10
|
-
"\t\tlet properties: [String: Any]?\n"\
|
11
|
-
"\t\tlet timeEvent: Bool\n\n"\
|
12
|
-
"\t\tinit(name: String, properties: [String: Any]? = nil, timeEvent: Bool = false) {\n"\
|
13
|
-
"\t\t\tself.name = name\n"\
|
14
|
-
"\t\t\tself.properties = properties\n"\
|
15
|
-
"\t\t\tself.timeEvent = timeEvent\n"\
|
16
|
-
"\t\t}\n"\
|
17
|
-
"\t}\n\n"\
|
18
|
-
"\tenum Event {\n".freeze
|
19
|
-
|
20
|
-
SWIFT_EVENT_DATA_HEADER =
|
21
|
-
"\t\tprivate var data: EventData {\n"\
|
22
|
-
"\t\t\tswitch self {\n".freeze
|
23
|
-
|
24
|
-
SWIFT_PEOPLE_HEADER = "fileprivate enum Counter: String {\n".freeze
|
25
|
-
|
26
|
-
SWIFT_INCREMENT_FUNCTION =
|
27
|
-
"\tfunc increment(times: Int = 1) {\n"\
|
28
|
-
"\t\tMixpanelAPI.instance.incrementCounter(rawValue, times: times)\n"\
|
29
|
-
"\t}".freeze
|
3
|
+
EXTENSION_HEADER =
|
4
|
+
"\nimport Foundation\n\n"\
|
5
|
+
"extension Analytics {\n\n".freeze
|
6
|
+
|
7
|
+
EXTENSION_FOOTER =
|
8
|
+
"\n\n}\n"
|
30
9
|
|
31
10
|
NATIVE_TYPES = %w[Int String Double Float Bool].freeze
|
32
11
|
|
33
12
|
def events(bundle, file_name)
|
34
|
-
event_file =
|
13
|
+
event_file = EXTENSION_HEADER
|
14
|
+
event_file += "\tenum Event {\n\n"
|
35
15
|
bundle.each do |event|
|
36
|
-
event_file +=
|
16
|
+
event_file += event_case(event)
|
37
17
|
end
|
38
|
-
event_file +=
|
18
|
+
event_file += "\n\t\tvar data: EventData {\n"
|
19
|
+
event_file += "\t\t\tswitch self {\n"
|
39
20
|
bundle.each do |event|
|
40
|
-
event_file +=
|
21
|
+
event_file += event_data(event)
|
41
22
|
end
|
42
23
|
event_file += "\t\t\t}\n"
|
43
|
-
event_file += "\t\t}\n"
|
44
|
-
event_file += "\t}
|
45
|
-
event_file +=
|
24
|
+
event_file += "\t\t}\n\n"
|
25
|
+
event_file += "\t}"
|
26
|
+
event_file += EXTENSION_FOOTER
|
46
27
|
end
|
47
28
|
|
48
|
-
def
|
49
|
-
function_name =
|
29
|
+
def event_case(event_data)
|
30
|
+
function_name = camelize(event_data.event_name)
|
50
31
|
if event_data.properties.empty?
|
51
32
|
"\t\tcase #{function_name}\n"
|
52
33
|
else
|
@@ -55,8 +36,8 @@ module Evva
|
|
55
36
|
end
|
56
37
|
end
|
57
38
|
|
58
|
-
def
|
59
|
-
function_name =
|
39
|
+
def event_data(event_data)
|
40
|
+
function_name = camelize(event_data.event_name)
|
60
41
|
if event_data.properties.empty?
|
61
42
|
function_body = "\t\t\tcase .#{function_name}:\n" \
|
62
43
|
"\t\t\t\treturn EventData(name: \"#{event_data.event_name}\")\n\n"
|
@@ -76,16 +57,23 @@ module Evva
|
|
76
57
|
end
|
77
58
|
|
78
59
|
def people_properties(people_bundle, file_name)
|
79
|
-
properties =
|
80
|
-
properties +=
|
81
|
-
|
60
|
+
properties = EXTENSION_HEADER
|
61
|
+
properties += "\tenum Property: String {\n"
|
62
|
+
people_bundle.each do |prop|
|
63
|
+
properties += "\t\tcase #{camelize(prop)} = \"#{prop}\"\n"
|
64
|
+
end
|
65
|
+
properties += "\t}"
|
66
|
+
properties += EXTENSION_FOOTER
|
82
67
|
end
|
83
68
|
|
84
69
|
def special_property_enum(enum)
|
85
|
-
enum_body =
|
86
|
-
enum_body += "
|
87
|
-
|
88
|
-
|
70
|
+
enum_body = EXTENSION_HEADER
|
71
|
+
enum_body += "\tenum #{enum.enum_name}: String {\n"
|
72
|
+
enum.values.map do |val|
|
73
|
+
enum_body += "\t\tcase #{val.tr(' ', '_')} = \"#{val}\"\n"
|
74
|
+
end
|
75
|
+
enum_body += "\t}"
|
76
|
+
enum_body += EXTENSION_FOOTER
|
89
77
|
end
|
90
78
|
|
91
79
|
def dictionary_pairs(props)
|
@@ -119,12 +107,13 @@ module Evva
|
|
119
107
|
props.map { |k, v| "let #{k}" }.join(', ')
|
120
108
|
end
|
121
109
|
|
122
|
-
def
|
123
|
-
|
110
|
+
def camelize(term)
|
111
|
+
string = term.to_s
|
112
|
+
string = string.sub(/^(?:#{@acronym_regex}(?=\b|[A-Z_])|\w)/) { |match| match.downcase }
|
113
|
+
string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" }
|
114
|
+
string.gsub!("/".freeze, "::".freeze)
|
115
|
+
string
|
124
116
|
end
|
125
117
|
|
126
|
-
def titleize(str)
|
127
|
-
str.split('_').collect(&:capitalize).join
|
128
|
-
end
|
129
118
|
end
|
130
119
|
end
|
data/lib/evva/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evva
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.4.
|
4
|
+
version: 0.1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RicardoTrindade
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: safe_yaml
|