sugarcube 1.4.3 → 1.4.4

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.
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