immutabler 0.2.6 → 0.3.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
  SHA1:
3
- metadata.gz: 6aa7996e400b82ef598a2d8db5661b55001accde
4
- data.tar.gz: 7d7bb998f7e13c5328aa08c5ff74f7c4d60915de
3
+ metadata.gz: 6efd29613b37bd063481ee957519b7a55fca3102
4
+ data.tar.gz: fafe01bc2de0c9e32d2fcd540a10675d144c7fc3
5
5
  SHA512:
6
- metadata.gz: db79646d8ad25518ac6391aad63aac1c79740c57c291bc9df6586405f0686b8c5e56241124f2317cc3641eb431494bf84b58ea359e598e271d9cb015f92f7866
7
- data.tar.gz: fcdeec34297e87cd0fbd124974e5b66216ec05187a556b2f5f1b8db8662cb83902ca8b9eb1c620a209e917f139a1ec00b04bf66fa36ff8dea8b54fa3808475d7
6
+ metadata.gz: 69c1109152fae2905d062d3669eda0cc2879ee5d91f3a3495bdfc6ed34bc2801e4d2031e83c79ea9624da5cb9693d3948de6c6bff9aec04fb4c4c4a4a5c0fdc4
7
+ data.tar.gz: 42950c0b7077fbf0fd589c1c70cd66da87d5df92d06d02f7c48d6e1f224cc0affaefaca236257c8be50d452fc09c464202cef9a9427044f852a27df9e4b73f60
@@ -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
- base_model('MTLModel<MTLJSONSerializing>') # Default base model for group
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
 
@@ -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'
@@ -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
- mappings = []
50
- ModelAttributesBuilder.new(props, mappings, &block)
55
+ ModelAttributesBuilder.new(props, &block)
51
56
 
52
- model = Model.new(prefix, base, base_immutable, builder_base, props, mappings)
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
- enums: enums
67
+ module_links: module_links,
68
+ enums: enums,
63
69
  }
64
70
  end
65
71
  end
@@ -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, :mappings
4
+ attr_accessor :name, :base, :base_immutable, :builder_base, :props
5
5
 
6
- def initialize(name, base, base_immutable, builder_base, props, mappings)
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, mappings, &block)
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
@@ -0,0 +1,12 @@
1
+ module Immutabler
2
+ module DSL
3
+ class ModuleImport
4
+ attr_accessor :module_name, :class_name
5
+
6
+ def initialize(module_name, class_name)
7
+ @module_name = module_name
8
+ @class_name = class_name
9
+ end
10
+ end
11
+ end
12
+ 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
@@ -1,3 +1,3 @@
1
1
  module Immutabler
2
- VERSION = '0.2.6'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -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}}
@@ -1,6 +1,8 @@
1
1
  #import <Foundation/Foundation.h>
2
- #import <Mantle/Mantle.h>
3
-
2
+ {{#module_links}}
3
+ {{#module_import .}}
4
+ {{/module_import}}
5
+ {{/module_links}}
4
6
  {{#links}}
5
7
  #import "{{.}}.h"
6
8
  {{/links}}
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.2.6
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-09-01 00:00:00.000000000 Z
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.0.14.1
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