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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/lib/ios_analytics_cli/info.rb +1 -1
- data/lib/ios_analytics_cli/interactors/event.rb +9 -7
- data/lib/ios_analytics_cli/interactors/user_property.rb +3 -1
- data/lib/ios_analytics_cli/serializers/objc/enums.rb +4 -3
- data/lib/ios_analytics_cli/serializers/objc/event.rb +9 -9
- data/lib/ios_analytics_cli/serializers/swift/event.rb +11 -9
- data/lib/ios_analytics_cli/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 226df51f12f74d23073d582bc4956e17e25263cc71aa03cbec6f645bc83d65a2
|
4
|
+
data.tar.gz: 928dc2da2653834f98fc91264620c007d86d875752869705490a3d8942d1e5cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b16786b2873cf5f4826cb029bc2c30e33c9f8e47ea390e9e0f5521649981188775450d1c307c8eff0bc841ae4349b14ceeb5d5297e6369dfc699d9e07fb3888
|
7
|
+
data.tar.gz: 3eb2372f3fe295e7f9a3ba0dae3feafc03109915bfe1790840870ee5815e392beb21ad41e54309e6481bb12ee2665be9014f9b4a7f0f4b648c040c53c7df449a
|
data/Gemfile.lock
CHANGED
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
|
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
|
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
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
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
|
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 |
|
37
|
-
<%
|
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[
|
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
|
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(
|
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}:(#{
|
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
|
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[
|
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 |
|
65
|
+
<% Interactor::Event.all_enum_properties(@src['events']).each do |event| -%>
|
66
|
+
<% event['properties'].each do |property| -%>
|
66
67
|
|
67
|
-
/// <%= property[
|
68
|
-
enum <%= property[
|
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(
|
82
|
-
result = properties.map do |property|
|
83
|
-
"#{property['name'].camel_case}: #{
|
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
|
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
|
|
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.
|
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-
|
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
|
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.
|