immutabler 0.1.9 → 0.2.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: ace3e3c55f66f5b67df37dd9d007cf732d825856
4
- data.tar.gz: 7dde795173390f9effdd177460e5eadd6f1e1508
3
+ metadata.gz: b988c688568544db5349c6927ef6dec0d6aeb2be
4
+ data.tar.gz: 19e97a7fc6dbe1c67bbeabca39ed07b80e6b3515
5
5
  SHA512:
6
- metadata.gz: 4ee9685bbbb3b98d05e18598549cf7d81317e1cc49647289dfea3e9889a09b140c5f4954f936886f2bd8c8c4ea9a017845a98cbbe1998db276d9e68ce2144b1e
7
- data.tar.gz: 7637a1fb3fb94959ddffd6a9aedbb2ea6f97a0f77565ec64cf1ac393f4b4119ca2858f3e56ae15480f2dd528e19b438afe53afa51f15441d8b73e27a1a40b604
6
+ metadata.gz: c04672fd825c54996958301afb89873ac121468585b722e9ce3259b030ec4a5969e04a4f1b9ee220ee958903037719139240738897cc59f80c9a30bc3467d1be
7
+ data.tar.gz: b80e1c70e72d7087005ee2d6dca60466cffde2175927d69dc5b257135a3229e57a60ca1a0455d5682247a7264a392fd7a8a28eb40b17d84b3c806b97dce77a6e
data/GETTING_STARTED.md CHANGED
@@ -88,24 +88,27 @@ end
88
88
  Each field is defining by
89
89
 
90
90
  ```ruby
91
- prop :fieldName, :fieldType
91
+ prop :fieldName, :fieldType, :name_prefix => your_custom_prefix(string, optional), :is_ref => true or false(optional), :ref_type => 'assign', 'weak', 'strong'(optional), :is_id => true or false(optional)
92
92
  ```
93
93
 
94
94
  There are predefined types:
95
- * int
96
- * float
97
- * bool
98
- * string
99
- * array
100
- * dict
101
- * id
95
+ * int -> NSInteger in Objective-C
96
+ * float -> CGFloat in Objective-C
97
+ * double -> double in Objective-C
98
+ * bool -> BOOL in Objective-C
99
+ * string -> NSString* in Objective-C
100
+ * array -> NSArray* in Objective-C
101
+ * dict -> NSDictionary* in Objective-C
102
+ * id -> id in Objective-C
102
103
 
103
104
  When you use custom type and it will be transformed into the same.
104
105
 
105
106
  You can pass additional parameters for prop:
106
107
 
107
- + prefix: prefix used in Objective-C code (e.g. `*` for referential types).
108
- + ref: reference type in Objective-C code (e.g. `weak`)
108
+ + name_prefix: name_prefix to include (please, don't use it for adding/supressing asterisk before property name - use `is_ref`, `is_id` instead)
109
+ + is_ref: defines whether property is reference type (pointer) or value type
110
+ + ref_type: property memory management specifier (`weak`, `strong`, `assign`, default - `strong` when `is_ref` is `true`, `assign` when `is_ref` is `false`)
111
+ + is_id: `id` is Objective-C special built-in type. Despite it's reference type, '*' is assumed implicitly and shouldn't be specified manually. Whenever you want to define something of type like `id<MyAwesomeProtocol>` don't forget to add :is_id => true to property definition to suppress asterisk
109
112
 
110
113
  Example:
111
114
  ```ruby
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']
10
- spec.email = ['serge.k@techery.io', 'serge.z@techery.io']
9
+ spec.authors = ['Serhij Korochanskyj', 'Sergey Zenchenko', 'Petro Korienev']
10
+ spec.email = ['serge.k@techery.io', 'serge.z@techery.io', 'soxjke@gmail.com']
11
11
 
12
12
  spec.summary = 'Generator of Objective-C immutable models'
13
13
  spec.description = 'Generator of Objective-C immutable models'
@@ -10,9 +10,10 @@ module Immutabler
10
10
 
11
11
  def prop(name, type, options={})
12
12
  prop_options = {}
13
- prop_options[:is_ref] = !!options[:ref] if options.key?(:ref)
14
- prop_options[:ref_type] = options[:ref] if options.key?(:ref)
15
- prop_options[:name_prefix] = options[:prefix] if options.key?(:prefix)
13
+ prop_options[:is_ref] = options[:is_ref] if options.key?(:is_ref)
14
+ prop_options[:ref_type] = options[:ref_type] if options.key?(:ref_type)
15
+ prop_options[:name_prefix] = options[:name_prefix] if options.key?(:name_prefix)
16
+ prop_options[:is_id] = options[:is_id] if options.key?(:is_id)
16
17
  @props << Prop.new(name.to_s, type.to_s, prop_options)
17
18
  end
18
19
  end
@@ -25,9 +25,11 @@ module Immutabler
25
25
  arg.map do |prop|
26
26
  options = block[:hash]
27
27
  access_type = options[:readOnly] ? 'readonly' : 'readwrite'
28
- prop_arguments = "@property(nonatomic, #{prop[:ref_type]}, #{access_type})"
29
- prop_field = "#{prop[:type]} #{prop[:name_prefix]}#{prop[:name]}"
30
-
28
+ asterisk = prop[:is_ref] && !prop[:is_id] ? '*' : ''
29
+ asterisk_and_prefix = "#{asterisk}#{prop[:name_prefix]}"
30
+ memory_management = prop[:is_ref] ? prop[:ref_type] : 'assign';
31
+ prop_arguments = "@property(nonatomic, #{memory_management}, #{access_type})"
32
+ prop_field = "#{prop[:type]} #{asterisk_and_prefix}#{prop[:name]}"
31
33
  "#{prop_arguments} #{prop_field};"
32
34
  end.join("\n")
33
35
  end
@@ -3,50 +3,42 @@ module Immutabler
3
3
  TYPE_MAPPING = {
4
4
  'int' => {
5
5
  type: 'NSInteger',
6
- is_ref: false,
7
- ref_type: 'assign',
8
- name_prefix: ''
6
+ is_ref: false
9
7
  },
10
8
  'float' => {
11
9
  type: 'CGFloat',
12
- is_ref: false,
13
- ref_type: 'assign',
14
- name_prefix: ''
10
+ is_ref: false
15
11
  },
12
+ 'double' => {
13
+ type: 'double',
14
+ is_ref: false
15
+ },
16
16
  'bool' => {
17
17
  type: 'BOOL',
18
- is_ref: false,
19
- ref_type: 'assign',
20
- name_prefix: ''
18
+ is_ref: false
21
19
  },
22
20
  'array' => {
23
21
  type: 'NSArray',
24
- is_ref: true,
25
- ref_type: 'strong',
26
- name_prefix: '*'
22
+ is_ref: true
27
23
  },
28
24
  'string' => {
29
25
  type: 'NSString',
30
- is_ref: true,
31
- ref_type: 'strong',
32
- name_prefix: '*'
26
+ is_ref: true
33
27
  },
34
28
  'dict' => {
35
29
  type: 'NSDictionary',
36
- is_ref: true,
37
- ref_type: 'strong',
38
- name_prefix: '*',
30
+ is_ref: true
39
31
  },
40
32
  'id' => {
41
33
  type: 'id',
42
34
  is_ref: true,
43
35
  ref_type: 'strong',
44
- name_prefix: ''
36
+ is_id: true
45
37
  }
46
38
  }
47
39
 
48
40
  def self.map(type, options)
49
- TYPE_MAPPING.fetch(type, default_mapping(type)).merge(options)
41
+ default_mapping(type).merge(TYPE_MAPPING.fetch(type, default_mapping(type))).merge(options)
50
42
  end
51
43
 
52
44
  private
@@ -56,7 +48,7 @@ module Immutabler
56
48
  type: type,
57
49
  is_ref: true,
58
50
  ref_type: 'strong',
59
- name_prefix: '*'
51
+ is_id: false
60
52
  }
61
53
  end
62
54
  end
@@ -1,3 +1,3 @@
1
1
  module Immutabler
2
- VERSION = '0.1.9'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: immutabler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serhij Korochanskyj
8
8
  - Sergey Zenchenko
9
+ - Petro Korienev
9
10
  autorequire:
10
11
  bindir: exe
11
12
  cert_chain: []
12
- date: 2016-01-10 00:00:00.000000000 Z
13
+ date: 2016-05-18 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: handlebars
@@ -71,6 +72,7 @@ description: Generator of Objective-C immutable models
71
72
  email:
72
73
  - serge.k@techery.io
73
74
  - serge.z@techery.io
75
+ - soxjke@gmail.com
74
76
  executables: []
75
77
  extensions: []
76
78
  extra_rdoc_files: []