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