immutabler 0.2.6 → 0.3.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/GETTING_STARTED.md +3 -53
- data/immutabler.gemspec +2 -2
- data/lib/immutabler/dsl/group.rb +11 -5
- data/lib/immutabler/dsl/model.rb +2 -3
- data/lib/immutabler/dsl/model_attributes_builder.rb +1 -7
- data/lib/immutabler/dsl/module_import.rb +12 -0
- data/lib/immutabler/template/body_template.rb +3 -23
- data/lib/immutabler/template/builder.rb +4 -42
- data/lib/immutabler/template/header_template.rb +19 -3
- data/lib/immutabler/version.rb +1 -1
- data/templates/body_template.hbs +2 -36
- data/templates/header_template.hbs +4 -2
- metadata +19 -19
- data/lib/immutabler/dsl/dict_mappings_builder.rb +0 -19
- data/lib/immutabler/dsl/mapping.rb +0 -29
- data/lib/immutabler/dsl/mappings_builder.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6efd29613b37bd063481ee957519b7a55fca3102
|
4
|
+
data.tar.gz: fafe01bc2de0c9e32d2fcd540a10675d144c7fc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69c1109152fae2905d062d3669eda0cc2879ee5d91f3a3495bdfc6ed34bc2801e4d2031e83c79ea9624da5cb9693d3948de6c6bff9aec04fb4c4c4a4a5c0fdc4
|
7
|
+
data.tar.gz: 42950c0b7077fbf0fd589c1c70cd66da87d5df92d06d02f7c48d6e1f224cc0affaefaca236257c8be50d452fc09c464202cef9a9427044f852a27df9e4b73f60
|
data/GETTING_STARTED.md
CHANGED
@@ -122,48 +122,6 @@ Example:
|
|
122
122
|
end
|
123
123
|
```
|
124
124
|
|
125
|
-
## Mappings
|
126
|
-
|
127
|
-
All mappings are describing in `mapping` block
|
128
|
-
```ruby
|
129
|
-
mapping do
|
130
|
-
|
131
|
-
end
|
132
|
-
```
|
133
|
-
|
134
|
-
### Simple mapping
|
135
|
-
|
136
|
-
Simple mappings are describing wih `map`:
|
137
|
-
|
138
|
-
```ruby
|
139
|
-
map :json_field_name, :classFieldName
|
140
|
-
```
|
141
|
-
|
142
|
-
You can specify custom transformer class using `with` option:
|
143
|
-
|
144
|
-
```ruby
|
145
|
-
map :phone, :phoneNumber, with: :CustomPhoneTransformer
|
146
|
-
```
|
147
|
-
|
148
|
-
### Array mapping
|
149
|
-
|
150
|
-
You can describe mapping array of records using `array`:
|
151
|
-
|
152
|
-
```ruby
|
153
|
-
array :json_field_name, :classFieldName, :ClassName
|
154
|
-
```
|
155
|
-
|
156
|
-
### Dict mapping
|
157
|
-
|
158
|
-
You can describe mapping json field to custom value (e.g. into enum) with `dict`:
|
159
|
-
|
160
|
-
```ruby
|
161
|
-
dict :json_state, :modelState do
|
162
|
-
map :active, :TEServiceStateActive
|
163
|
-
map :archived, :TEServiceStateArchived
|
164
|
-
end
|
165
|
-
```
|
166
|
-
|
167
125
|
# Full example
|
168
126
|
```ruby
|
169
127
|
require 'immutabler'
|
@@ -174,7 +132,9 @@ Immutabler.group :TESalonModels do
|
|
174
132
|
|
175
133
|
output_dir(gen_path)
|
176
134
|
prefix('TE')
|
177
|
-
|
135
|
+
link_to :TEState # #import "TEState.h"
|
136
|
+
module_link_to :Mantle, :MTLModel # #import <Mantle/MTLModel.h>
|
137
|
+
base_model('MTLModel') # Default base model for group
|
178
138
|
|
179
139
|
enum :ServiceState do
|
180
140
|
attr :Archived
|
@@ -192,16 +152,6 @@ Immutabler.group :TESalonModels do
|
|
192
152
|
prop :workingDays, :dict
|
193
153
|
prop :state, :TEState, ref: :weak, prefix: '*'
|
194
154
|
end
|
195
|
-
|
196
|
-
mapping do
|
197
|
-
map :id, :modelId
|
198
|
-
map :phone, :phone, with: :CustomPhoneTransformer
|
199
|
-
array :walk_ins, :walkIns, :TEWalkIn
|
200
|
-
dict :state, :state do
|
201
|
-
map :active, :TEServiceStateActive
|
202
|
-
map :archived, :TEServiceStateArchived
|
203
|
-
end
|
204
|
-
end
|
205
155
|
end
|
206
156
|
```
|
207
157
|
|
data/immutabler.gemspec
CHANGED
@@ -6,8 +6,8 @@ require 'immutabler/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'immutabler'
|
8
8
|
spec.version = Immutabler::VERSION
|
9
|
-
spec.authors = ['Serhij Korochanskyj', 'Sergey Zenchenko', 'Petro Korienev']
|
10
|
-
spec.email = ['serge.k@techery.io', 'serge.z@techery.io', 'soxjke@gmail.com']
|
9
|
+
spec.authors = ['Serhij Korochanskyj', 'Sergey Zenchenko', 'Petro Korienev', 'Alexey Faizullov']
|
10
|
+
spec.email = ['serge.k@techery.io', 'serge.z@techery.io', 'soxjke@gmail.com', 'alex.fuzza@gmail.com']
|
11
11
|
|
12
12
|
spec.summary = 'Generator of Objective-C immutable models'
|
13
13
|
spec.description = 'Generator of Objective-C immutable models'
|
data/lib/immutabler/dsl/group.rb
CHANGED
@@ -2,11 +2,12 @@ require_relative 'enum'
|
|
2
2
|
require_relative 'model'
|
3
3
|
require_relative 'model_attributes_builder'
|
4
4
|
require_relative 'enum_attributes_builder'
|
5
|
+
require_relative 'module_import'
|
5
6
|
|
6
7
|
module Immutabler
|
7
8
|
module DSL
|
8
9
|
class Group
|
9
|
-
attr_accessor :name, :models, :enums, :prefix, :links, :output_directory
|
10
|
+
attr_accessor :name, :models, :enums, :prefix, :links, :module_links, :output_directory
|
10
11
|
|
11
12
|
def initialize(name)
|
12
13
|
@prefix = ''
|
@@ -15,6 +16,7 @@ module Immutabler
|
|
15
16
|
@models = []
|
16
17
|
@enums = []
|
17
18
|
@links = []
|
19
|
+
@module_links = []
|
18
20
|
end
|
19
21
|
|
20
22
|
def prefix(prefix)
|
@@ -25,6 +27,10 @@ module Immutabler
|
|
25
27
|
links << model_group_name
|
26
28
|
end
|
27
29
|
|
30
|
+
def module_link_to(module_name, file_name)
|
31
|
+
module_links << ModuleImport.new(module_name, file_name)
|
32
|
+
end
|
33
|
+
|
28
34
|
def output_dir(dir)
|
29
35
|
self.output_directory = dir
|
30
36
|
end
|
@@ -46,10 +52,9 @@ module Immutabler
|
|
46
52
|
base_immutable = options.fetch(:base_immutable, false)
|
47
53
|
builder_base = options.fetch(:builder_base, base).to_s
|
48
54
|
props = []
|
49
|
-
|
50
|
-
ModelAttributesBuilder.new(props, mappings, &block)
|
55
|
+
ModelAttributesBuilder.new(props, &block)
|
51
56
|
|
52
|
-
model = Model.new(prefix, base, base_immutable, builder_base, props
|
57
|
+
model = Model.new(prefix, base, base_immutable, builder_base, props)
|
53
58
|
|
54
59
|
models << model
|
55
60
|
end
|
@@ -59,7 +64,8 @@ module Immutabler
|
|
59
64
|
name: name,
|
60
65
|
models: models,
|
61
66
|
links: links,
|
62
|
-
|
67
|
+
module_links: module_links,
|
68
|
+
enums: enums,
|
63
69
|
}
|
64
70
|
end
|
65
71
|
end
|
data/lib/immutabler/dsl/model.rb
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
module Immutabler
|
2
2
|
module DSL
|
3
3
|
class Model
|
4
|
-
attr_accessor :name, :base, :base_immutable, :builder_base, :props
|
4
|
+
attr_accessor :name, :base, :base_immutable, :builder_base, :props
|
5
5
|
|
6
|
-
def initialize(name, base, base_immutable, builder_base, props
|
6
|
+
def initialize(name, base, base_immutable, builder_base, props)
|
7
7
|
@name = name
|
8
8
|
@base = base
|
9
9
|
@base_immutable = base_immutable
|
10
10
|
@builder_base = builder_base
|
11
11
|
@props = props
|
12
|
-
@mappings = mappings
|
13
12
|
end
|
14
13
|
end
|
15
14
|
end
|
@@ -1,22 +1,16 @@
|
|
1
1
|
require_relative 'props_builder'
|
2
|
-
require_relative 'mappings_builder'
|
3
2
|
|
4
3
|
module Immutabler
|
5
4
|
module DSL
|
6
5
|
class ModelAttributesBuilder
|
7
|
-
def initialize(props,
|
6
|
+
def initialize(props, &block)
|
8
7
|
@props = props
|
9
|
-
@mappings = mappings
|
10
8
|
instance_eval(&block)
|
11
9
|
end
|
12
10
|
|
13
11
|
def fields(&block)
|
14
12
|
PropsBuilder.new(@props, &block)
|
15
13
|
end
|
16
|
-
|
17
|
-
def mapping(&block)
|
18
|
-
MappingsBuilder.new(@mappings, &block)
|
19
|
-
end
|
20
14
|
end
|
21
15
|
end
|
22
16
|
end
|
@@ -10,26 +10,6 @@ module Immutabler
|
|
10
10
|
self.name = name
|
11
11
|
self.models = models
|
12
12
|
|
13
|
-
helper(:dict) do |context, arg, block|
|
14
|
-
body = "@{\n"
|
15
|
-
|
16
|
-
if arg
|
17
|
-
body << arg.map { |m| "@\"#{m.destination_name}\" : @\"#{m.origin_name}\"" }.join(",\n")
|
18
|
-
end
|
19
|
-
|
20
|
-
body << "\n};"
|
21
|
-
end
|
22
|
-
|
23
|
-
helper(:enum_mapping_dict) do |context, arg, block|
|
24
|
-
body = "@{\n"
|
25
|
-
|
26
|
-
if arg
|
27
|
-
body << arg.map { |m| "@\"#{m.origin_name}\" : @(#{m.destination_name})" }.join(",\n")
|
28
|
-
end
|
29
|
-
|
30
|
-
body << "\n};"
|
31
|
-
end
|
32
|
-
|
33
13
|
helper(:init_with_builder) do |context, arg, block|
|
34
14
|
if arg[:base_immutable]
|
35
15
|
" self = [super initWithBuilder:builder modelVersion:modelVersion];\n"
|
@@ -57,7 +37,7 @@ module Immutabler
|
|
57
37
|
when 'double'
|
58
38
|
decode_template(arg.name, 'Double')
|
59
39
|
else
|
60
|
-
if !arg.is_ref
|
40
|
+
if !arg.is_ref
|
61
41
|
decode_int(arg.name)
|
62
42
|
else
|
63
43
|
decode_template(arg.name, 'Object')
|
@@ -76,7 +56,7 @@ module Immutabler
|
|
76
56
|
when 'double'
|
77
57
|
encode_template(arg.name, 'Double')
|
78
58
|
else
|
79
|
-
if !arg.is_ref
|
59
|
+
if !arg.is_ref
|
80
60
|
encode_int(arg.name)
|
81
61
|
else
|
82
62
|
encode_template(arg.name, 'Object')
|
@@ -129,4 +109,4 @@ module Immutabler
|
|
129
109
|
end
|
130
110
|
end
|
131
111
|
end
|
132
|
-
end
|
112
|
+
end
|
@@ -24,20 +24,16 @@ module Immutabler
|
|
24
24
|
base_immutable: model.base_immutable,
|
25
25
|
builder_base_class: model.builder_base,
|
26
26
|
props: build_props(model.props),
|
27
|
-
any_mappings: model.mappings.any?,
|
28
|
-
array_mappings: model.mappings.select(&:array?),
|
29
|
-
dict_mappings: build_dict_mappings(model.mappings),
|
30
|
-
custom_mappers: build_custom_mappers(model.mappings),
|
31
|
-
mappings: build_mappings(model.mappings)
|
32
27
|
}
|
33
28
|
end
|
34
29
|
|
35
30
|
links = defs[:links]
|
31
|
+
module_links = defs[:module_links]
|
36
32
|
enums = defs[:enums]
|
37
33
|
|
38
34
|
FileUtils.mkdir_p(group.output_directory)
|
39
35
|
|
40
|
-
build_head(group_name, models, links, enums)
|
36
|
+
build_head(group_name, models, links, module_links, enums)
|
41
37
|
build_body(group_name, models)
|
42
38
|
end
|
43
39
|
|
@@ -49,40 +45,6 @@ module Immutabler
|
|
49
45
|
end
|
50
46
|
end
|
51
47
|
|
52
|
-
def build_dict_mappings(mappings)
|
53
|
-
mappings.select(&:dict?).map do |mapping|
|
54
|
-
attributes = mapping.dict_mappings.map do |dict_mapping|
|
55
|
-
{
|
56
|
-
origin_name: dict_mapping[:origin_name],
|
57
|
-
destination_name: dict_mapping[:destination_name]
|
58
|
-
}
|
59
|
-
end
|
60
|
-
|
61
|
-
{
|
62
|
-
name: mapping.destination_name,
|
63
|
-
attributes: attributes
|
64
|
-
}
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def build_mappings(mappings)
|
69
|
-
mappings.map do |mapping|
|
70
|
-
{
|
71
|
-
origin_name: mapping.origin_name,
|
72
|
-
destination_name: mapping.destination_name
|
73
|
-
}
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def build_custom_mappers(mappings)
|
78
|
-
mappings.select(&:custom?).map do |mapping|
|
79
|
-
{
|
80
|
-
origin_name: mapping.origin_name,
|
81
|
-
transformer_name: mapping.custom_transformer
|
82
|
-
}
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
48
|
def build_body(group_name, models)
|
87
49
|
body_template = Immutabler::Template::BodyTemplate.new(group_name, models)
|
88
50
|
body_content = body_template.render
|
@@ -90,8 +52,8 @@ module Immutabler
|
|
90
52
|
File.write(body_path, body_content)
|
91
53
|
end
|
92
54
|
|
93
|
-
def build_head(group_name, models, links, enums)
|
94
|
-
header_template = Immutabler::Template::HeaderTemplate.new(models, links, enums)
|
55
|
+
def build_head(group_name, models, links, module_links, enums)
|
56
|
+
header_template = Immutabler::Template::HeaderTemplate.new(models, links, module_links, enums)
|
95
57
|
header_content = header_template.render
|
96
58
|
header_path = "#{group.output_directory}/#{group_name}.h"
|
97
59
|
File.write(header_path, header_content)
|
@@ -3,11 +3,12 @@ require_relative 'template'
|
|
3
3
|
module Immutabler
|
4
4
|
module Template
|
5
5
|
class HeaderTemplate < BaseTemplate
|
6
|
-
attr_accessor :models, :links, :enums
|
6
|
+
attr_accessor :models, :links, :module_links, :enums
|
7
7
|
|
8
|
-
def initialize(models, links, enums)
|
8
|
+
def initialize(models, links, module_links, enums)
|
9
9
|
self.template_file = File.expand_path("#{__dir__}/../../../templates/header_template.hbs")
|
10
10
|
self.links = links
|
11
|
+
self.module_links = build_module_imports(module_links)
|
11
12
|
self.models = models
|
12
13
|
self.enums = build_enums(enums)
|
13
14
|
|
@@ -41,6 +42,21 @@ module Immutabler
|
|
41
42
|
"} #{arg[:name]};",
|
42
43
|
].join("\n")
|
43
44
|
end
|
45
|
+
|
46
|
+
helper(:module_import) do |context, arg, block|
|
47
|
+
[
|
48
|
+
"#import <#{arg[:module_name]}/#{arg[:class_name]}.h>\n"
|
49
|
+
].join("\n")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def build_module_imports(module_links)
|
54
|
+
module_links.map do |module_link|
|
55
|
+
dict_mapping = {
|
56
|
+
module_name: module_link.module_name,
|
57
|
+
class_name: module_link.class_name,
|
58
|
+
}
|
59
|
+
end
|
44
60
|
end
|
45
61
|
|
46
62
|
def build_enums(enums)
|
@@ -55,7 +71,7 @@ module Immutabler
|
|
55
71
|
end
|
56
72
|
|
57
73
|
def render
|
58
|
-
template.call(models: models, links: links, enums: enums)
|
74
|
+
template.call(models: models, links: links, module_links:module_links, enums: enums)
|
59
75
|
end
|
60
76
|
end
|
61
77
|
end
|
data/lib/immutabler/version.rb
CHANGED
data/templates/body_template.hbs
CHANGED
@@ -13,35 +13,6 @@
|
|
13
13
|
NSInteger __modelVersion;
|
14
14
|
}
|
15
15
|
|
16
|
-
{{#any_mappings}}
|
17
|
-
+ (NSDictionary *)JSONKeyPathsByPropertyKey {
|
18
|
-
return {{#dict mappings}}{{/dict}}
|
19
|
-
}
|
20
|
-
{{/any_mappings}}
|
21
|
-
|
22
|
-
{{#custom_mappers}}
|
23
|
-
+ (NSValueTransformer *){{origin_name}}JSONTransformer {
|
24
|
-
return [ [{{transformer_name}} alloc] init];
|
25
|
-
}
|
26
|
-
{{/custom_mappers}}
|
27
|
-
|
28
|
-
{{#array_mappings}}
|
29
|
-
+ (NSValueTransformer *){{destination_name}}JSONTransformer {
|
30
|
-
return [MTLJSONAdapter arrayTransformerWithModelClass:[{{type}} class]];
|
31
|
-
}
|
32
|
-
{{/array_mappings}}
|
33
|
-
|
34
|
-
{{#dict_mappings}}
|
35
|
-
+ (NSValueTransformer *){{name}}JSONTransformer {
|
36
|
-
NSDictionary *dict = {{#enum_mapping_dict attributes}}{{/enum_mapping_dict}}
|
37
|
-
return [MTLValueTransformer transformerUsingForwardBlock:^NSNumber *(NSString *string, BOOL *success, NSError *__autoreleasing *error) {
|
38
|
-
return dict[string];
|
39
|
-
} reverseBlock:^NSString *(NSNumber *number, BOOL *success, NSError *__autoreleasing *error) {
|
40
|
-
return [dict allKeysForObject:number].firstObject;
|
41
|
-
}];
|
42
|
-
}
|
43
|
-
{{/dict_mappings}}
|
44
|
-
|
45
16
|
+ ({{name}}*)create:(void(^)({{name}}Builder *builder))builderBlock
|
46
17
|
{
|
47
18
|
{{name}}Builder *builder = [{{name}}Builder new];
|
@@ -139,7 +110,7 @@
|
|
139
110
|
{{#init_with_coder .}}
|
140
111
|
{{/init_with_coder}}
|
141
112
|
if (self) {
|
142
|
-
{{#props}}
|
113
|
+
{{#props}}
|
143
114
|
{{#decodeProperty this}}{{/decodeProperty}}
|
144
115
|
{{/props}}
|
145
116
|
__modelVersion = [coder decodeIntegerForKey:@"__modelVersion"];
|
@@ -149,7 +120,7 @@
|
|
149
120
|
}
|
150
121
|
|
151
122
|
- (void)encodeWithCoder:(NSCoder *)coder {
|
152
|
-
{{#props}}
|
123
|
+
{{#props}}
|
153
124
|
{{#encodeProperty this}}{{/encodeProperty}}
|
154
125
|
{{/props}}
|
155
126
|
[coder encodeInteger:__modelVersion forKey:@"__modelVersion"];
|
@@ -172,11 +143,6 @@
|
|
172
143
|
@end
|
173
144
|
|
174
145
|
@implementation {{name}}Builder
|
175
|
-
|
176
|
-
+ (NSDictionary *)JSONKeyPathsByPropertyKey {
|
177
|
-
return @{};
|
178
|
-
}
|
179
|
-
|
180
146
|
@end
|
181
147
|
|
182
148
|
{{/models}}
|
metadata
CHANGED
@@ -1,71 +1,72 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: immutabler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Serhij Korochanskyj
|
8
8
|
- Sergey Zenchenko
|
9
9
|
- Petro Korienev
|
10
|
+
- Alexey Faizullov
|
10
11
|
autorequire:
|
11
12
|
bindir: exe
|
12
13
|
cert_chain: []
|
13
|
-
date: 2016-
|
14
|
+
date: 2016-11-14 00:00:00.000000000 Z
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: handlebars
|
17
18
|
requirement: !ruby/object:Gem::Requirement
|
18
19
|
requirements:
|
19
|
-
- - ~>
|
20
|
+
- - "~>"
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: '0.7'
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
25
|
version_requirements: !ruby/object:Gem::Requirement
|
25
26
|
requirements:
|
26
|
-
- - ~>
|
27
|
+
- - "~>"
|
27
28
|
- !ruby/object:Gem::Version
|
28
29
|
version: '0.7'
|
29
30
|
- !ruby/object:Gem::Dependency
|
30
31
|
name: bundler
|
31
32
|
requirement: !ruby/object:Gem::Requirement
|
32
33
|
requirements:
|
33
|
-
- - ~>
|
34
|
+
- - "~>"
|
34
35
|
- !ruby/object:Gem::Version
|
35
36
|
version: '1.10'
|
36
37
|
type: :development
|
37
38
|
prerelease: false
|
38
39
|
version_requirements: !ruby/object:Gem::Requirement
|
39
40
|
requirements:
|
40
|
-
- - ~>
|
41
|
+
- - "~>"
|
41
42
|
- !ruby/object:Gem::Version
|
42
43
|
version: '1.10'
|
43
44
|
- !ruby/object:Gem::Dependency
|
44
45
|
name: rake
|
45
46
|
requirement: !ruby/object:Gem::Requirement
|
46
47
|
requirements:
|
47
|
-
- - ~>
|
48
|
+
- - "~>"
|
48
49
|
- !ruby/object:Gem::Version
|
49
50
|
version: '10.0'
|
50
51
|
type: :development
|
51
52
|
prerelease: false
|
52
53
|
version_requirements: !ruby/object:Gem::Requirement
|
53
54
|
requirements:
|
54
|
-
- - ~>
|
55
|
+
- - "~>"
|
55
56
|
- !ruby/object:Gem::Version
|
56
57
|
version: '10.0'
|
57
58
|
- !ruby/object:Gem::Dependency
|
58
59
|
name: rspec
|
59
60
|
requirement: !ruby/object:Gem::Requirement
|
60
61
|
requirements:
|
61
|
-
- -
|
62
|
+
- - ">="
|
62
63
|
- !ruby/object:Gem::Version
|
63
64
|
version: '0'
|
64
65
|
type: :development
|
65
66
|
prerelease: false
|
66
67
|
version_requirements: !ruby/object:Gem::Requirement
|
67
68
|
requirements:
|
68
|
-
- -
|
69
|
+
- - ">="
|
69
70
|
- !ruby/object:Gem::Version
|
70
71
|
version: '0'
|
71
72
|
description: Generator of Objective-C immutable models
|
@@ -73,13 +74,14 @@ email:
|
|
73
74
|
- serge.k@techery.io
|
74
75
|
- serge.z@techery.io
|
75
76
|
- soxjke@gmail.com
|
77
|
+
- alex.fuzza@gmail.com
|
76
78
|
executables: []
|
77
79
|
extensions: []
|
78
80
|
extra_rdoc_files: []
|
79
81
|
files:
|
80
|
-
- .gitignore
|
81
|
-
- .rspec
|
82
|
-
- .travis.yml
|
82
|
+
- ".gitignore"
|
83
|
+
- ".rspec"
|
84
|
+
- ".travis.yml"
|
83
85
|
- GETTING_STARTED.md
|
84
86
|
- Gemfile
|
85
87
|
- LICENSE.txt
|
@@ -90,15 +92,13 @@ files:
|
|
90
92
|
- immutabler.gemspec
|
91
93
|
- lib/immutabler.rb
|
92
94
|
- lib/immutabler/core.rb
|
93
|
-
- lib/immutabler/dsl/dict_mappings_builder.rb
|
94
95
|
- lib/immutabler/dsl/enum.rb
|
95
96
|
- lib/immutabler/dsl/enum_attribute.rb
|
96
97
|
- lib/immutabler/dsl/enum_attributes_builder.rb
|
97
98
|
- lib/immutabler/dsl/group.rb
|
98
|
-
- lib/immutabler/dsl/mapping.rb
|
99
|
-
- lib/immutabler/dsl/mappings_builder.rb
|
100
99
|
- lib/immutabler/dsl/model.rb
|
101
100
|
- lib/immutabler/dsl/model_attributes_builder.rb
|
101
|
+
- lib/immutabler/dsl/module_import.rb
|
102
102
|
- lib/immutabler/dsl/prop.rb
|
103
103
|
- lib/immutabler/dsl/props_builder.rb
|
104
104
|
- lib/immutabler/template/body_template.rb
|
@@ -119,17 +119,17 @@ require_paths:
|
|
119
119
|
- lib
|
120
120
|
required_ruby_version: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
126
|
requirements:
|
127
|
-
- -
|
127
|
+
- - ">="
|
128
128
|
- !ruby/object:Gem::Version
|
129
129
|
version: '0'
|
130
130
|
requirements: []
|
131
131
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.
|
132
|
+
rubygems_version: 2.5.1
|
133
133
|
signing_key:
|
134
134
|
specification_version: 4
|
135
135
|
summary: Generator of Objective-C immutable models
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Immutabler
|
2
|
-
module DSL
|
3
|
-
class DictMappingsBuilder
|
4
|
-
def initialize(dict_mappings, &block)
|
5
|
-
@dict_mappings = dict_mappings
|
6
|
-
instance_eval(&block)
|
7
|
-
end
|
8
|
-
|
9
|
-
def map(origin_name, destination_name)
|
10
|
-
dict_mapping =
|
11
|
-
{
|
12
|
-
origin_name: origin_name.to_s,
|
13
|
-
destination_name: destination_name.to_s
|
14
|
-
}
|
15
|
-
@dict_mappings << dict_mapping
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Immutabler
|
2
|
-
module DSL
|
3
|
-
class Mapping
|
4
|
-
attr_accessor :origin_name, :destination_name, :type, :dict_mappings, :custom_transformer
|
5
|
-
|
6
|
-
def initialize(origin_name, destination_name, options = {})
|
7
|
-
@origin_name = origin_name
|
8
|
-
@destination_name = destination_name
|
9
|
-
@type = options[:type]
|
10
|
-
@is_array = options.fetch(:array, false)
|
11
|
-
@is_dict = options.fetch(:dict, false)
|
12
|
-
@custom_transformer = options[:with]
|
13
|
-
@dict_mappings = []
|
14
|
-
end
|
15
|
-
|
16
|
-
def array?
|
17
|
-
@is_array
|
18
|
-
end
|
19
|
-
|
20
|
-
def dict?
|
21
|
-
@is_dict
|
22
|
-
end
|
23
|
-
|
24
|
-
def custom?
|
25
|
-
!custom_transformer.nil?
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require_relative 'mapping'
|
2
|
-
require_relative 'dict_mappings_builder'
|
3
|
-
|
4
|
-
module Immutabler
|
5
|
-
module DSL
|
6
|
-
class MappingsBuilder
|
7
|
-
def initialize(mappings, &block)
|
8
|
-
@mappings = mappings
|
9
|
-
instance_eval(&block)
|
10
|
-
end
|
11
|
-
|
12
|
-
def map(origin_name, destination_name, options = {})
|
13
|
-
@mappings << Mapping.new(origin_name.to_s, destination_name.to_s, options)
|
14
|
-
end
|
15
|
-
|
16
|
-
def array(origin_name, destination_name, type)
|
17
|
-
options = {
|
18
|
-
type: type.to_s,
|
19
|
-
array: true
|
20
|
-
}
|
21
|
-
@mappings << Mapping.new(origin_name.to_s, destination_name.to_s, options)
|
22
|
-
end
|
23
|
-
|
24
|
-
def dict(origin_name, destination_name, &block)
|
25
|
-
mapping = Mapping.new(origin_name.to_s, destination_name.to_s, dict: true)
|
26
|
-
DictMappingsBuilder.new(mapping.dict_mappings, &block)
|
27
|
-
@mappings << mapping
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|