ios_analytics_cli 1.0.0 → 1.1.0

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
  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.