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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb97d0f1d8232f0bd8be466a5bb44d0d6969d620
4
- data.tar.gz: eafd1e8f81baa14886ba4fcb466ea18b59f9b199
3
+ metadata.gz: 90dd43b0fdd3169aa137cf665a8c592693b9d686
4
+ data.tar.gz: 12649831ed616d714b7357c3fdff9d1cd7cf41ea
5
5
  SHA512:
6
- metadata.gz: 6f35827bcadcc08b17693f45d7b5106c75fddb277df50f837eb38e8ab10e06612d53ee550a37ad173e85ffa9e830a5b4debb2136c361dff0e4335c15054449b7
7
- data.tar.gz: eec447eb9229129b08415d30382e23fcab70b354a6512e906d756fe7c87ef734011fe2ba4da7cc09706ac00bcd2310e6047698f36e5eaafcb3be2d9521b9ef0d
6
+ metadata.gz: 9d043c714969d7d188026015fe15d0ef3a6d0be113d05593c53624e4af1a63f755800bcfab407d35b4512fd00045791ea59085cc6cc918163faae540222dbd5c
7
+ data.tar.gz: ec753ef63337efd78777711e1e2b62b46956a3c44ef699d50d2f9761ff54a9f82cec7124527cf774ca5c95fbae6a3a90785d2d9702bcf0396525dabfc692b2aa
@@ -1,4 +1,7 @@
1
1
  # Change Log
2
+ ## [0.1.4.2] - 2018-02-14
3
+ - Replaces Swift headers
4
+
2
5
  ## [0.1.4.1] - 2018-02-08
3
6
  - DRYs methods in swift event generation
4
7
 
@@ -1,52 +1,33 @@
1
1
  module Evva
2
2
  class SwiftGenerator
3
- SWIFT_EVENT_HEADER =
4
- "import CoreLocation\n"\
5
- "import Foundation\n"\
6
- "import SharedCode\n\n"\
7
- "@objc class MixpanelHelper: NSObject {\n\n"\
8
- "\tprivate struct EventData {\n"\
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 = SWIFT_EVENT_HEADER
13
+ event_file = EXTENSION_HEADER
14
+ event_file += "\tenum Event {\n\n"
35
15
  bundle.each do |event|
36
- event_file += swift_case(event)
16
+ event_file += event_case(event)
37
17
  end
38
- event_file += SWIFT_EVENT_DATA_HEADER
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 += swift_event_data(event)
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}\n"
45
- event_file += "}\n"
24
+ event_file += "\t\t}\n\n"
25
+ event_file += "\t}"
26
+ event_file += EXTENSION_FOOTER
46
27
  end
47
28
 
48
- def swift_case(event_data)
49
- function_name = 'track' + titleize(event_data.event_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 swift_event_data(event_data)
59
- function_name = 'track' + titleize(event_data.event_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 = SWIFT_PEOPLE_HEADER
80
- properties += people_bundle.map { |prop| swift_people_const(prop) }.join('')
81
- properties + "\n" + SWIFT_INCREMENT_FUNCTION + "\n}\n"
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 = "import Foundation\n\n"
86
- enum_body += "enum #{enum.enum_name}: String {\n"
87
- enum_body += enum.values.map { |vals| "\tcase #{vals.tr(' ', '_')} = \"#{vals}\"\n" }.join('')
88
- enum_body + "} \n"
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 swift_people_const(prop)
123
- "\tcase #{titleize(prop)} = \"#{prop}\"\n"
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
@@ -1,4 +1,4 @@
1
1
  module Evva
2
- VERSION = '0.1.4.1'.freeze
3
- VERSION_UPDATED_AT = '2018-02-08'.freeze
2
+ VERSION = '0.1.4.2'.freeze
3
+ VERSION_UPDATED_AT = '2018-02-14'.freeze
4
4
  end
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.1
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-08 00:00:00.000000000 Z
11
+ date: 2018-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: safe_yaml