ios_analytics_cli 1.0.0 → 1.1.0

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
  SHA256:
3
- metadata.gz: 742e4b9954f42b271ec0246bac1e78f631e1dacf42842bfb4ac546a78de0b671
4
- data.tar.gz: cacdf2b27199979a425b8ef9d258154dfdbba9d04d095e0c05eaef38b3e86a57
3
+ metadata.gz: 226df51f12f74d23073d582bc4956e17e25263cc71aa03cbec6f645bc83d65a2
4
+ data.tar.gz: 928dc2da2653834f98fc91264620c007d86d875752869705490a3d8942d1e5cd
5
5
  SHA512:
6
- metadata.gz: 27ef1d26da04b88563c1688609c6ba47b4306cec0e92d0900cf7a0625aff6530094b8f7e101c40ec613e1c0b13418ad1b438093d6c1ff71c2d9792fb8b222d10
7
- data.tar.gz: 75abaae748ef29ffb3bc33a97a2fc83d0f01468d79fd1ae138eb45eea4ba33472fd264076328f9f81aab9484343a8f559c3769984249cae126e92cfe4bf58d92
6
+ metadata.gz: 6b16786b2873cf5f4826cb029bc2c30e33c9f8e47ea390e9e0f5521649981188775450d1c307c8eff0bc841ae4349b14ceeb5d5297e6369dfc699d9e07fb3888
7
+ data.tar.gz: 3eb2372f3fe295e7f9a3ba0dae3feafc03109915bfe1790840870ee5815e392beb21ad41e54309e6481bb12ee2665be9014f9b4a7f0f4b648c040c53c7df449a
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ios_analytics_cli (1.0.0)
4
+ ios_analytics_cli (1.1.0)
5
5
  commander (~> 4.5.2)
6
6
  tty-prompt (~> 0.21.0)
7
7
 
data/README.md CHANGED
@@ -16,7 +16,7 @@ This will ask you which programming language You're using & where do You want to
16
16
  Results will be stored in `analytics.yml` file.
17
17
 
18
18
 
19
- After that, place Your JSON file in the directory that You provided when running `analytics init`. If You're not sure where it is, check `analytics.yml` file for `sourcePath` field.
19
+ After that, place Your JSON file in the directory that you provided when running `analytics init`. If You're not sure where it is, check `analytics.yml` file for `sourcePath` field.
20
20
 
21
21
  After You prepared the JSON file, run
22
22
 
@@ -7,7 +7,7 @@ module Analytics
7
7
 
8
8
  def self.description
9
9
  <<-Desc
10
- This gem is develop in order to reduce the time needed to even start with the implementation of Analytics in iOS apps,
10
+ This gem is developed in order to reduce the time needed to even start with the implementation of Analytics in iOS apps,
11
11
  by generating files, classes, methods & everything else that\'s required to call a specific event, change a user property,
12
12
  or even track an open screen. By calling just 2 commands, analytics init & analytics generate,
13
13
  all of these are generated for You from the appropriately configured JSON file.
@@ -3,19 +3,21 @@ require 'tty-prompt'
3
3
  module Analytics
4
4
  module Interactor
5
5
  class Event
6
- # Returns all properties, from all events, which uses an enum as the value.
7
6
  def self.all_enum_properties(events)
8
7
  events
9
- .reject { |event| event['properties'].nil? }
10
- .flat_map { |event| event['properties'] }
11
- .reject { |property| property['values'].nil? }
8
+ .map { |event| event.dup }
9
+ .reject { |event| event['properties'].nil? }
10
+ .each do | event|
11
+ event['properties'] = event['properties'].reject { |property| property['values'].nil? }
12
+ end
12
13
  end
13
14
 
14
15
  def self.enum_properties_from_event(event)
15
- properties = event['properties']
16
- return nil if properties.nil?
16
+ event_copy = event.dup
17
+ return nil if event_copy['properties'].nil?
17
18
 
18
- properties.reject { |property| property['values'].nil? }
19
+ event_copy['properties'] = event_copy['properties'].reject { |property| property['values'].nil? }
20
+ event_copy
19
21
  end
20
22
  end
21
23
  end
@@ -5,7 +5,9 @@ module Analytics
5
5
  class UserProperty
6
6
  # Returns all user properties which uses an enum as the value.
7
7
  def self.all_enum_user_properties(user_properties)
8
- user_properties.reject { |up| up['values'].nil? }
8
+ user_properties
9
+ .map { |up| up.dup }
10
+ .reject { |up| up['values'].nil? }
9
11
  end
10
12
  end
11
13
  end
@@ -33,8 +33,9 @@ module Analytics
33
33
  NS_ASSUME_NONNULL_BEGIN
34
34
 
35
35
  #pragma mark - Analytics Event Enums (AE)
36
- <% Interactor::Event.all_enum_properties(@src['events']).each do |property| -%>
37
- <% @enum_name = 'AE' + property['name'].pascal_case -%>
36
+ <% Interactor::Event.all_enum_properties(@src['events']).each do |event| -%>
37
+ <% event['properties'].each do |property| -%>
38
+ <% @enum_name = 'AE' + event['name'].pascal_case + property['name'].pascal_case -%>
38
39
 
39
40
  __swift_unavailable("This enum is only available in ObjC.")
40
41
  typedef NS_CLOSED_ENUM(NSInteger, <%= @enum_name %>) {
@@ -43,7 +44,7 @@ module Analytics
43
44
  <% end -%>
44
45
  };
45
46
  <% end -%>
46
-
47
+ <% end -%>
47
48
 
48
49
  #pragma mark - Analytics User Property Enums (AUP)
49
50
  <% Interactor::UserProperty.all_enum_user_properties(@src['userProperties']).each do |property| -%>
@@ -54,7 +54,7 @@ module Analytics
54
54
  <% event['properties'].each do |property| -%>
55
55
  /// @param <%= property['name'].camel_case %> <%= property['description'] %>
56
56
  <% end -%>
57
- + (instancetype)<%= event["name"].camel_case -%><%= format_method_params(event['properties']) %>;
57
+ + (instancetype)<%= event['name'].camel_case -%><%= format_method_params(event) %>;
58
58
  <% end %>
59
59
  <% end -%>
60
60
  @end
@@ -93,13 +93,13 @@ module Analytics
93
93
  return [[self alloc] initWithName:@"<%= event['name'] %>" properties: nil];
94
94
  }
95
95
  <% else -%>
96
- + (instancetype)<%= event['name'].camel_case -%><%= format_method_params(event['properties']) %>
96
+ + (instancetype)<%= event['name'].camel_case -%><%= format_method_params(event) %>
97
97
  {
98
- <% Interactor::Event.enum_properties_from_event(event).each do |property| -%>
98
+ <% Interactor::Event.enum_properties_from_event(event)['properties'].each do |property| -%>
99
99
  NSString *<%= property['name'].camel_case %>Value;
100
100
  switch (<%= property['name'].camel_case %>) {
101
101
  <% property['values'].each do |value| -%>
102
- case <%= 'AE' + property['name'].pascal_case + value.pascal_case %>:
102
+ case <%= 'AE' + event['name'].pascal_case + property['name'].pascal_case + value.pascal_case %>:
103
103
  <%= property['name'].camel_case %>Value = @"<%= value %>";
104
104
  break;
105
105
  <% end -%>
@@ -118,22 +118,22 @@ module Analytics
118
118
  ## Helper methods called from the ERB template
119
119
 
120
120
  # Formats the parameters in ObjC method.
121
- def format_method_params(properties)
122
- params = properties.map.with_index do |property, i|
121
+ def format_method_params(event)
122
+ params = event['properties'].map.with_index do |property, i|
123
123
  name = if i == 0
124
124
  property['name'].pascal_case # 'num_of_items' -> 'NumOfItems'
125
125
  else
126
126
  property['name'].camel_case # 'num_of_items' -> 'numOfItems'
127
127
  end
128
128
 
129
- "#{name}:(#{format_property_type(property)})#{property['name'].camel_case}"
129
+ "#{name}:(#{format_property_type_from_event(property, event)})#{property['name'].camel_case}"
130
130
  end
131
131
 
132
132
  "With#{params.join(' ')}"
133
133
  end
134
134
 
135
135
  # Maps the property type to ObjC type.
136
- def format_property_type(property)
136
+ def format_property_type_from_event(property, event)
137
137
  # if it doesn't have values, it's not an enum,
138
138
  # and if it does, we'll return capitalized property name prefixed with 'AE',
139
139
  # because an enum with the same name will be generated as well
@@ -149,7 +149,7 @@ module Analytics
149
149
  'unknown-type'
150
150
  end
151
151
  else
152
- 'AE' + property['name'].pascal_case
152
+ 'AE' + event['name'].pascal_case + property['name'].pascal_case
153
153
  end
154
154
  end
155
155
 
@@ -52,7 +52,7 @@ module Analytics
52
52
  <% event["properties"].each do |property| -%>
53
53
  /// - Parameter <%= property["name"] %>: <%= property["description"] %>
54
54
  <% end -%>
55
- static func <%= event["name"].camel_case %>(<%= format_method_params(event["properties"])-%>) -> Analytics.Event {
55
+ static func <%= event['name'].camel_case %>(<%= format_method_params(event)-%>) -> Analytics.Event {
56
56
  return .init(name: "<%= event["name"] %>", properties: <%= format_init_properties(event["properties"]) %>)
57
57
  }
58
58
  <% end -%>
@@ -62,15 +62,17 @@ module Analytics
62
62
  // MARK: - Event Property Enums
63
63
 
64
64
  extension Analytics.Event {
65
- <% Interactor::Event.all_enum_properties(@src['events']).each do |property| -%>
65
+ <% Interactor::Event.all_enum_properties(@src['events']).each do |event| -%>
66
+ <% event['properties'].each do |property| -%>
66
67
 
67
- /// <%= property["description"] %>
68
- enum <%= property["name"].pascal_case -%>: String {
68
+ /// <%= property['description'] %>
69
+ enum <%= event['name'].pascal_case + property['name'].pascal_case -%>: String {
69
70
  <% property["values"].each do |value| -%>
70
71
  case <%= value.camel_case -%> = "<%= value %>"
71
72
  <% end -%>
72
73
  }
73
74
  <% end -%>
75
+ <% end -%>
74
76
  }
75
77
  TEMPLATE
76
78
  end
@@ -78,16 +80,16 @@ module Analytics
78
80
  ## Helper methods called from the ERB template
79
81
 
80
82
  # Formats the parameters in Swift method.
81
- def format_method_params(properties)
82
- result = properties.map do |property|
83
- "#{property['name'].camel_case}: #{format_property_type(property)}"
83
+ def format_method_params(event)
84
+ result = event['properties'].map do |property|
85
+ "#{property['name'].camel_case}: #{format_property_type_from_event(property, event)}"
84
86
  end
85
87
 
86
88
  return result.join(', ')
87
89
  end
88
90
 
89
91
  # Maps the property type to Swift type.
90
- def format_property_type(property)
92
+ def format_property_type_from_event(property, event)
91
93
  # if it doesn't have values, it's not an enum,
92
94
  # and if it does, we'll return capitalized property name,
93
95
  # because an enum with the same name will be generated as well
@@ -103,7 +105,7 @@ module Analytics
103
105
  'unknown-type'
104
106
  end
105
107
  else
106
- property['name'].pascal_case
108
+ event['name'].pascal_case + property['name'].pascal_case
107
109
  end
108
110
  end
109
111
 
@@ -1,4 +1,4 @@
1
1
  module Analytics
2
2
  # Current gem's version.
3
- VERSION = '1.0.0'.freeze
3
+ VERSION = '1.1.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ios_analytics_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Galijot
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-26 00:00:00.000000000 Z
11
+ date: 2020-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.21.0
97
97
  description: |2
98
- This gem is develop in order to reduce the time needed to even start with the implementation of Analytics in iOS apps,
98
+ This gem is developed in order to reduce the time needed to even start with the implementation of Analytics in iOS apps,
99
99
  by generating files, classes, methods & everything else that's required to call a specific event, change a user property,
100
100
  or even track an open screen. By calling just 2 commands, analytics init & analytics generate,
101
101
  all of these are generated for You from the appropriately configured JSON file.