immutabler 0.2.2 → 0.2.3

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: abc6f4fb7cc071157e338539a05eed7f701a634a
4
- data.tar.gz: 001d0b3734fcee8d27f72f4083bb536a9b0395e0
3
+ metadata.gz: d5cb0ee3a96e1134941bd202ce2da8ad90b76acb
4
+ data.tar.gz: c3e8ee60cbe0909df14afa14f3e05e15ffed7b69
5
5
  SHA512:
6
- metadata.gz: e4c3e855a7325dc52b4913be8f4c93f87e52cc3f2758b634a03cf7230231278933cabbec7d76fb149dbef51b45658c5c2e52e68261b19528beae15ef6c280cdb
7
- data.tar.gz: 3f2e278f589cf15b4ffc61a1a1d78a08b290ce0d916b2549531cb3be24b9cdcd6095cfbe4160bc0b7b4d8b438fe0431d31bfff4fa4cb2da143be6ce68f52b19e
6
+ metadata.gz: 5a8a5d02027c9b93c9efc91e26af22672c17d201f926a4b0ad2b4bc2af75f7a259bd31791123b60deced0176502396203754e09d65c6d36ce87415642472508b
7
+ data.tar.gz: e7ababe5deb5ff453dba7e67ed3bd299467c29191c96ba34d83127c4037815f14a55e5908248ddf7b58253fc612f42a0594b9814e53e419ac2f0a1a5babdb9e6
@@ -49,40 +49,38 @@ module Immutabler
49
49
  helper(:decodeProperty) do |context, arg, block|
50
50
  case arg.type
51
51
  when 'BOOL'
52
- " _#{arg.name} = [coder decodeBoolForKey:@\"_#{arg.name}\"];"
52
+ decode_template(arg.name, 'Bool')
53
53
  when 'NSInteger'
54
- " if (sizeof(_#{arg.name}) < 8) {\n \
55
- _#{arg.name} = [coder decodeInt32ForKey:@\"_#{arg.name}\"];\n\
56
- }\n\
57
- else {\n\
58
- _#{arg.name} = [coder decodeInt64ForKey:@\"_#{arg.name}\"]; \n\
59
- }"
54
+ decode_int(arg.name)
60
55
  when 'CGFloat'
61
- " _#{arg.name} = [coder decodeFloatForKey:@\"_#{arg.name}\"];"
56
+ decode_template(arg.name, 'Float')
62
57
  when 'double'
63
- " _#{arg.name} = [coder decodeDoubleForKey:@\"_#{arg.name}\"];"
58
+ decode_template(arg.name, 'Double')
64
59
  else
65
- " _#{arg.name} = [coder decodeObjectForKey:@\"_#{arg.name}\"];"
60
+ if !arg.is_ref
61
+ decode_int(arg.name)
62
+ else
63
+ decode_template(arg.name, 'Object')
64
+ end
66
65
  end
67
66
  end
68
67
 
69
68
  helper(:encodeProperty) do |context, arg, block|
70
69
  case arg.type
71
70
  when 'BOOL'
72
- " [coder encodeBool:self.#{arg.name} forKey:@\"_#{arg.name}\"];"
71
+ encode_template(arg.name, 'Bool')
73
72
  when 'NSInteger'
74
- " if (sizeof(_#{arg.name}) < 8) {\n \
75
- [coder encodeInt32:self.#{arg.name} forKey:@\"_#{arg.name}\"];\n\
76
- }\n\
77
- else {\n\
78
- [coder encodeInt64:self.#{arg.name} forKey:@\"_#{arg.name}\"]; \n\
79
- }"
73
+ encode_int(arg.name)
80
74
  when 'CGFloat'
81
- " [coder encodeFloat:self.#{arg.name} forKey:@\"_#{arg.name}\"];"
75
+ encode_template(arg.name, 'Float')
82
76
  when 'double'
83
- " [coder encodeDouble:self.#{arg.name} forKey:@\"_#{arg.name}\"];"
77
+ encode_template(arg.name, 'Double')
84
78
  else
85
- " [coder encodeObject:self.#{arg.name} forKey:@\"_#{arg.name}\"];"
79
+ if !arg.is_ref
80
+ encode_int(arg.name)
81
+ else
82
+ encode_template(arg.name, 'Object')
83
+ end
86
84
  end
87
85
  end
88
86
 
@@ -105,6 +103,29 @@ module Immutabler
105
103
  def render
106
104
  template.call(models: models, name: name)
107
105
  end
106
+
107
+ def encode_template(arg_name, type, leading_spaces_count = 8)
108
+ "#{' ' * leading_spaces_count}[coder encode#{type}:self.#{arg_name} forKey:@\"_#{arg_name}\"];"
109
+ end
110
+ def encode_int(arg_name)
111
+ " if (sizeof(_#{arg_name}) < 8) {\n\
112
+ #{encode_template(arg_name, 'Int32', 0)} \n\
113
+ }\n\
114
+ else {\n\
115
+ #{encode_template(arg_name, 'Int64', 0)} \n\
116
+ }"
117
+ end
118
+ def decode_template(arg_name, type, leading_spaces_count = 8)
119
+ "#{' ' * leading_spaces_count}_#{arg_name} = [coder decode#{type}ForKey:@\"_#{arg_name}\"];"
120
+ end
121
+ def decode_int(arg_name)
122
+ " if (sizeof(_#{arg_name}) < 8) {\n\
123
+ #{decode_template(arg_name, 'Int32', 0)} \n\
124
+ }\n\
125
+ else {\n\
126
+ #{decode_template(arg_name, 'Int64', 0)} \n\
127
+ }"
128
+ end
108
129
  end
109
130
  end
110
- end
131
+ end
@@ -1,3 +1,3 @@
1
1
  module Immutabler
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: immutabler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serhij Korochanskyj
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2016-08-19 00:00:00.000000000 Z
13
+ date: 2016-08-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: handlebars