evva 0.1.4.1 → 0.1.4.2

Sign up to get free protection for your applications and to get access to all the features.
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