sugarcube 1.4.3 → 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sugarcube (1.4.3)
4
+ sugarcube (1.4.4)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,3 +1,3 @@
1
1
  module SugarCube
2
- Version = '1.4.3'
2
+ Version = '1.4.4'
3
3
  end
@@ -11,22 +11,38 @@ module SugarCube
11
11
  # obj = {
12
12
  # 'first_name': 'Katsuyoshi', # strings
13
13
  # company: 'Ito Soft Design', # and symbols are supported
14
+ # great: true,
14
15
  # }.to_object
15
16
  #
16
17
  # obj.first_name
17
18
  # # => 'Katsuyoshi'
18
19
  # obj.company
19
20
  # # => 'Ito Soft Design'
21
+ # # adding a '?' will return true/false
22
+ # obj.great?
23
+ # # => true
24
+ # obj.great
25
+ # # => true
26
+ #
20
27
  # obj.bla # => raises NoMethodError
21
28
  # obj.bla = 'bla' # => raises NoMethodError
22
29
  class Anonymous < Hash
23
30
 
24
31
  def method_missing(symbol, *args)
25
32
  if args.size == 0
33
+ if symbol.to_s[-1] == '?'
34
+ symbol = symbol.to_s[0...-1].to_sym
35
+ return_bool = true
36
+ else
37
+ return_bool = false
38
+ end
26
39
  key = symbol
27
40
  key = symbol.to_s unless self.include? key
28
41
  if self.include?(key)
29
42
  self[key] = self[key].to_object
43
+ if return_bool
44
+ return !! self[key]
45
+ end
30
46
  return self[key]
31
47
  end
32
48
  elsif args.size == 1 && /(.*)=$/ =~ symbol.to_s
@@ -45,7 +61,7 @@ module SugarCube
45
61
 
46
62
  # replace enumerable methods
47
63
  alias :anonymous_each :each
48
-
64
+
49
65
  def each
50
66
  anonymous_each {|k,v| yield k, v.to_object}
51
67
  end
@@ -29,13 +29,13 @@ class NSString
29
29
  end
30
30
 
31
31
  def file_exists?
32
- path = self.hasPrefix('/') ? self : self.document
32
+ path = self.hasPrefix('/') ? self : self.document_path
33
33
  NSFileManager.defaultManager.fileExistsAtPath(path)
34
34
  end
35
35
 
36
36
  def remove_file!
37
37
  ptr = Pointer.new(:id)
38
- path = self.hasPrefix('/') ? self : self.document
38
+ path = self.hasPrefix('/') ? self : self.document_path
39
39
  NSFileManager.defaultManager.removeItemAtPath(path, error:ptr)
40
40
  ptr[0]
41
41
  end
@@ -1,7 +1,7 @@
1
1
  describe "SugarCube::Anonymous" do
2
2
 
3
3
  before do
4
- @h = SugarCube::Anonymous[{ foo: 'FOO', "bar" => 'BAR' }]
4
+ @h = SugarCube::Anonymous[{ foo: 'FOO', "bar" => 'BAR', falsey: nil, 'truthy' => 'yes!' }]
5
5
  end
6
6
 
7
7
  describe "NSDictionary#to_object" do
@@ -30,6 +30,14 @@ describe "SugarCube::Anonymous" do
30
30
  @h.bar.should == 'BAR'
31
31
  end
32
32
 
33
+ it 'should have an #truthy? method, and return true' do
34
+ @h.truthy?.should == true
35
+ end
36
+
37
+ it 'should have an #falsey? method, and return false' do
38
+ @h.falsey?.should == false
39
+ end
40
+
33
41
  it 'should raise NoMethodError on non-existing keys' do
34
42
  should.raise(NoMethodError) {
35
43
  @h.hoge
@@ -50,6 +58,18 @@ describe "SugarCube::Anonymous" do
50
58
  @h.bar.should == 'Bar'
51
59
  end
52
60
 
61
+ it 'should have a #truthy= method, and return "True" and true' do
62
+ @h.truthy = 'True'
63
+ @h.truthy.should == 'True'
64
+ @h.truthy?.should == true
65
+ end
66
+
67
+ it 'should have a #falsey= method, and return nil and false' do
68
+ @h.falsey = nil
69
+ @h.falsey.should == nil
70
+ @h.falsey?.should == false
71
+ end
72
+
53
73
  it 'should raise NoMethodError on non-existing keys' do
54
74
  should.raise(NoMethodError) {
55
75
  @h.hoge.should == 'Hoge'
@@ -71,50 +91,50 @@ describe "SugarCube::Anonymous nested case" do
71
91
  }
72
92
  ]
73
93
  end
74
-
94
+
75
95
  describe "dictionary" do
76
-
96
+
77
97
  it 'should return an instance of SugarCube::Anonymous' do
78
98
  @h.dictionary.class.should == SugarCube::Anonymous
79
99
  end
80
-
100
+
81
101
  it 'should return a hash which contains a string and an array' do
82
102
  @h.dictionary.should == { foo: 'FOO', array: [ { is_fine: 'is_fine' } ] }
83
103
  end
84
-
104
+
85
105
  it 'should not copy again' do
86
106
  @h.dictionary.object_id.should == @h.dictionary.object_id
87
107
  end
88
-
108
+
89
109
  it 'should return is_fine' do
90
110
  @h.dictionary.array[0].is_fine.should == 'is_fine'
91
111
  end
92
-
112
+
93
113
  describe "Enumerable" do
94
114
 
95
115
  describe "each" do
96
-
116
+
97
117
  it 'should return an instance of [SugarCube::Anonymous, SugarCube::AnonymousArray]' do
98
118
  a = []
99
119
  @h.each{|k,v| a << v.class}
100
120
  a[0].should == SugarCube::Anonymous
101
121
  a[1].should == SugarCube::AnonymousArray
102
122
  end
103
-
123
+
104
124
  end
105
125
 
106
126
  describe "map" do
107
-
127
+
108
128
  it 'should return an instance of [SugarCube::Anonymous, SugarCube::AnonymousArray]' do
109
129
  a = @h.map{|k,v| v.class}
110
130
  a[0].should == SugarCube::Anonymous
111
131
  a[1].should == SugarCube::AnonymousArray
112
132
  end
113
-
133
+
114
134
  end
115
-
135
+
116
136
  describe "collect" do
117
-
137
+
118
138
  it 'should return an instance of [SugarCube::Anonymous, SugarCube::AnonymousArray]' do
119
139
  a = @h.collect{|k,v| v.class}
120
140
  a[0].should == SugarCube::Anonymous
@@ -122,98 +142,98 @@ describe "SugarCube::Anonymous nested case" do
122
142
  end
123
143
 
124
144
  end
125
-
145
+
126
146
  end
127
-
147
+
128
148
  end
129
149
 
130
150
  describe "array" do
131
-
151
+
132
152
  it 'should return an instance of SugarCube::AnonymousArray' do
133
153
  @h.array.class.should == SugarCube::AnonymousArray
134
154
  end
135
-
155
+
136
156
  it 'should not copy again' do
137
157
  @h.array.object_id.should == @h.array.object_id
138
158
  end
139
-
159
+
140
160
  describe "inner object" do
141
-
161
+
142
162
  it 'should return an instance of SugarCube::Anonymous' do
143
163
  @h.array[0].class.should == SugarCube::Anonymous
144
164
  end
145
-
165
+
146
166
  it 'should return an instance of SugarCube::Anonymous' do
147
167
  @h.array.first.class.should == SugarCube::Anonymous
148
168
  end
149
-
169
+
150
170
  it 'should return an instance of SugarCube::AnonymousArray' do
151
171
  @h.array[1].class.should == SugarCube::AnonymousArray
152
172
  end
153
-
173
+
154
174
  it 'should return an instance of SugarCube::AnonymousArray' do
155
175
  @h.array.last.class.should == SugarCube::AnonymousArray
156
176
  end
157
-
177
+
158
178
  end
159
-
179
+
160
180
  describe "Enumerable" do
161
181
 
162
182
  describe "each" do
163
-
183
+
164
184
  it 'should return an instance of [SugarCube::Anonymous, SugarCube::AnonymousArray]' do
165
185
  a = []
166
186
  @h.array.each{|e| a << e.class}
167
187
  a[0].should == SugarCube::Anonymous
168
188
  a[1].should == SugarCube::AnonymousArray
169
189
  end
170
-
190
+
171
191
  end
172
-
192
+
173
193
  describe "each_with_index" do
174
-
194
+
175
195
  it 'should return an instance of [0,1]' do
176
196
  a = []
177
197
  @h.array.each_with_index{|e,i| a << i}
178
198
  a.should == [0,1]
179
199
  end
180
-
200
+
181
201
  end
182
-
202
+
183
203
  describe "map" do
184
-
204
+
185
205
  it 'should return an instance of [SugarCube::Anonymous, SugarCube::AnonymousArray]' do
186
206
  a = @h.array.map{|e| e.class}
187
207
  a[0].should == SugarCube::Anonymous
188
208
  a[1].should == SugarCube::AnonymousArray
189
209
  end
190
-
210
+
191
211
  end
192
-
212
+
193
213
  describe "collect" do
194
-
214
+
195
215
  it 'should return an instance of [SugarCube::Anonymous, SugarCube::AnonymousArray]' do
196
216
  a = @h.array.collect{|e| e.class}
197
217
  a[0].should == SugarCube::Anonymous
198
218
  a[1].should == SugarCube::AnonymousArray
199
219
  end
200
-
220
+
201
221
  end
202
-
222
+
203
223
  describe "find" do
204
-
224
+
205
225
  it 'should return then first object' do
206
226
  r = @h.array.find{|e| e.is_a? Hash}
207
227
  r.should == @h.array[0]
208
228
  end
209
-
229
+
210
230
  it 'should return the second object' do
211
231
  r = @h.array.find{|e| e.is_a? Array}
212
232
  r.should == @h.array[1]
213
233
  end
214
-
234
+
215
235
  end
216
-
236
+
217
237
  end
218
238
 
219
239
  end
@@ -7,7 +7,12 @@ describe "Base Methods" do
7
7
  t.hour.should == 19
8
8
  t.min.should == 30
9
9
  t.sec.should == 0
10
- (t.day - today.day).should == 1
10
+
11
+ if (today + 1.day).day == 1
12
+ t.day.should == 1
13
+ else
14
+ (t.day - today.day).should == 1
15
+ end
11
16
  end
12
17
 
13
18
  it "parses a specific natural language string, returning a date" do
@@ -5,42 +5,42 @@ describe "UIImage scale methods" do
5
5
 
6
6
  it 'should scale_to a wider size' do
7
7
  scaled = @image.scale_to([20, 10])
8
- scaled.nsdata.writeToFile('scale_to.png'.document, atomically: true)
8
+ scaled.nsdata.writeToFile('scale_to.png'.document_path, atomically: true)
9
9
  scaled.size.width.should == 20
10
10
  scaled.size.height.should == 10
11
11
  end
12
12
 
13
13
  it 'should scale_to a taller size' do
14
14
  scaled = @image.scale_to([10, 20])
15
- scaled.nsdata.writeToFile('scale_to.png'.document, atomically: true)
15
+ scaled.nsdata.writeToFile('scale_to.png'.document_path, atomically: true)
16
16
  scaled.size.width.should == 10
17
17
  scaled.size.height.should == 20
18
18
  end
19
19
 
20
20
  it 'scale_to should support background' do
21
21
  scaled = @image.scale_to([20, 10], background: :blue.uicolor)
22
- scaled.nsdata.writeToFile('scale_to_background.png'.document, atomically: true)
22
+ scaled.nsdata.writeToFile('scale_to_background.png'.document_path, atomically: true)
23
23
  scaled.size.width.should == 20
24
24
  scaled.size.height.should == 10
25
25
  end
26
26
 
27
27
  it 'should scale_within a smaller size' do
28
28
  scaled = @image.scale_within([5, 10])
29
- scaled.nsdata.writeToFile('scale_within_smaller.png'.document, atomically: true)
29
+ scaled.nsdata.writeToFile('scale_within_smaller.png'.document_path, atomically: true)
30
30
  scaled.size.width.should == 5
31
31
  scaled.size.height.should == 5
32
32
  end
33
33
 
34
34
  it 'should scale_within a bigger size' do
35
35
  scaled = @image.scale_within([15, 20])
36
- scaled.nsdata.writeToFile('scale_within_bigger.png'.document, atomically: true)
36
+ scaled.nsdata.writeToFile('scale_within_bigger.png'.document_path, atomically: true)
37
37
  scaled.size.width.should == 15
38
38
  scaled.size.height.should == 15
39
39
  end
40
40
 
41
41
  it 'should scale_to_fill a wider size' do
42
42
  scaled = @image.scale_to_fill([20, 10])
43
- scaled.nsdata.writeToFile('scale_to_fill_wider.png'.document, atomically: true)
43
+ scaled.nsdata.writeToFile('scale_to_fill_wider.png'.document_path, atomically: true)
44
44
  scaled.size.width.should == 20
45
45
  scaled.size.height.should == 10
46
46
  scaled.scale.should == @image.scale
@@ -48,7 +48,7 @@ describe "UIImage scale methods" do
48
48
 
49
49
  it 'should scale_to_fill a smaller size' do
50
50
  scaled = @image.scale_to_fill([5, 5])
51
- scaled.nsdata.writeToFile('scale_to_fill_smaller.png'.document, atomically: true)
51
+ scaled.nsdata.writeToFile('scale_to_fill_smaller.png'.document_path, atomically: true)
52
52
  scaled.size.width.should == 5
53
53
  scaled.size.height.should == 5
54
54
  scaled.scale.should == @image.scale
@@ -56,23 +56,23 @@ describe "UIImage scale methods" do
56
56
 
57
57
  it 'scale_to_fill should support position' do
58
58
  scaled = @image.scale_to_fill([10, 20], position: :top_left)
59
- scaled.nsdata.writeToFile('scale_to_fill_position_top_left.png'.document, atomically: true)
59
+ scaled.nsdata.writeToFile('scale_to_fill_position_top_left.png'.document_path, atomically: true)
60
60
  scaled = @image.scale_to_fill([20, 10], position: :top)
61
- scaled.nsdata.writeToFile('scale_to_fill_position_top.png'.document, atomically: true)
61
+ scaled.nsdata.writeToFile('scale_to_fill_position_top.png'.document_path, atomically: true)
62
62
  scaled = @image.scale_to_fill([10, 20], position: :top_right)
63
- scaled.nsdata.writeToFile('scale_to_fill_position_top_right.png'.document, atomically: true)
63
+ scaled.nsdata.writeToFile('scale_to_fill_position_top_right.png'.document_path, atomically: true)
64
64
  scaled = @image.scale_to_fill([10, 20], position: :left)
65
- scaled.nsdata.writeToFile('scale_to_fill_position_left.png'.document, atomically: true)
65
+ scaled.nsdata.writeToFile('scale_to_fill_position_left.png'.document_path, atomically: true)
66
66
  scaled = @image.scale_to_fill([20, 10], position: :center)
67
- scaled.nsdata.writeToFile('scale_to_fill_position_center.png'.document, atomically: true)
67
+ scaled.nsdata.writeToFile('scale_to_fill_position_center.png'.document_path, atomically: true)
68
68
  scaled = @image.scale_to_fill([10, 20], position: :right)
69
- scaled.nsdata.writeToFile('scale_to_fill_position_right.png'.document, atomically: true)
69
+ scaled.nsdata.writeToFile('scale_to_fill_position_right.png'.document_path, atomically: true)
70
70
  scaled = @image.scale_to_fill([10, 20], position: :bottom_left)
71
- scaled.nsdata.writeToFile('scale_to_fill_position_bottom_left.png'.document, atomically: true)
71
+ scaled.nsdata.writeToFile('scale_to_fill_position_bottom_left.png'.document_path, atomically: true)
72
72
  scaled = @image.scale_to_fill([20, 10], position: :bottom)
73
- scaled.nsdata.writeToFile('scale_to_fill_position_bottom.png'.document, atomically: true)
73
+ scaled.nsdata.writeToFile('scale_to_fill_position_bottom.png'.document_path, atomically: true)
74
74
  scaled = @image.scale_to_fill([10, 20], position: :bottom_right)
75
- scaled.nsdata.writeToFile('scale_to_fill_position_bottom_right.png'.document, atomically: true)
75
+ scaled.nsdata.writeToFile('scale_to_fill_position_bottom_right.png'.document_path, atomically: true)
76
76
  scaled.size.width.should == 10
77
77
  scaled.size.height.should == 20
78
78
  end
@@ -80,14 +80,14 @@ describe "UIImage scale methods" do
80
80
  it 'should be able to change scale' do
81
81
  if UIScreen.mainScreen.scale == 2
82
82
  scaled = @image.at_scale(1.0)
83
- scaled.nsdata.writeToFile('at_scale.png'.document, atomically: true)
83
+ scaled.nsdata.writeToFile('at_scale.png'.document_path, atomically: true)
84
84
 
85
85
  scaled.size.width.should == 20
86
86
  scaled.size.height.should == 20
87
87
  scaled.scale.should == 1
88
88
  else
89
89
  scaled = @image.at_scale(2.0)
90
- scaled.nsdata.writeToFile('at_scale.png'.document, atomically: true)
90
+ scaled.nsdata.writeToFile('at_scale.png'.document_path, atomically: true)
91
91
 
92
92
  scaled.size.width.should == 5
93
93
  scaled.size.height.should == 5
@@ -50,11 +50,11 @@ describe 'NSString' do
50
50
  end
51
51
 
52
52
  it "should not file_exists" do
53
- "abc".cache.file_exists?.should == false
53
+ "abc".cache_path.file_exists?.should == false
54
54
  end
55
55
 
56
56
  it "should not file_exists" do
57
- "abc".resource.file_exists?.should == false
57
+ "abc".resource_path.file_exists?.should == false
58
58
  end
59
59
 
60
60
  describe "in document" do
@@ -85,7 +85,7 @@ describe 'NSString' do
85
85
 
86
86
  describe "in resource" do
87
87
  it "should be file_exists" do
88
- "info.plist".resource.file_exists?.should == true
88
+ "info.plist".resource_path.file_exists?.should == true
89
89
  end
90
90
  end
91
91
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sugarcube
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.4.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-01-29 00:00:00.000000000 Z
15
+ date: 2014-01-31 00:00:00.000000000 Z
16
16
  dependencies: []
17
17
  description: ! '== Description
18
18