sugarcube 0.11 → 0.11.1
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/README.md +47 -1
- data/lib/sugarcube/adjust.rb +15 -6
- data/lib/sugarcube/core_location.rb +29 -0
- data/lib/sugarcube/fixnum.rb +17 -0
- data/lib/sugarcube/modal.rb +8 -0
- data/lib/sugarcube/nsdate.rb +16 -0
- data/lib/sugarcube/nsstring_files.rb +25 -0
- data/lib/sugarcube/nsurl.rb +2 -2
- data/lib/sugarcube/numeric.rb +20 -0
- data/lib/sugarcube/ror.rb +4 -0
- data/lib/sugarcube/symbol.rb +52 -0
- data/lib/sugarcube/timer.rb +2 -2
- data/lib/sugarcube/to_s/uiview.rb +7 -1
- data/lib/sugarcube/uiimage.rb +8 -0
- data/lib/sugarcube/uiviewcontroller.rb +6 -3
- data/lib/sugarcube/version.rb +1 -1
- metadata +4 -3
- data/lib/sugarcube/document.rb +0 -14
data/README.md
CHANGED
@@ -17,7 +17,7 @@ view << subview.
|
|
17
17
|
|
18
18
|
The basic idea of sugarcube is to turn some operations on their head. Insead of
|
19
19
|
|
20
|
-
UIApplication.sharedApplication.openURL(
|
20
|
+
UIApplication.sharedApplication.openURL(NSURL.URLWithString(url))
|
21
21
|
|
22
22
|
How about:
|
23
23
|
|
@@ -70,6 +70,16 @@ Examples
|
|
70
70
|
# create a UIColor from a hex value
|
71
71
|
0xffffff.uicolor # => UIColor.colorWithRed(1.0, green:1.0, blue:1.0, alpha:1.0)
|
72
72
|
0xffffff.uicolor(0.5) # => UIColor.colorWithRed(1.0, green:1.0, blue:1.0, alpha:0.5)
|
73
|
+
|
74
|
+
# some number-to-string stuff
|
75
|
+
1.nth # => 'st'
|
76
|
+
2.nth # => 'nd'
|
77
|
+
3.nth # => 'rd'
|
78
|
+
4.nth # => 'th'
|
79
|
+
11.nth # => 'th'
|
80
|
+
13.nth # => 'th'
|
81
|
+
21.nth # => 'st'
|
82
|
+
23.nth # => 'rd'
|
73
83
|
```
|
74
84
|
|
75
85
|
Numeric
|
@@ -86,6 +96,12 @@ Examples
|
|
86
96
|
# convert multiples of pi
|
87
97
|
2.pi # => 2 * Math::PI
|
88
98
|
0.5.pi # => 0.5 * Math::PI
|
99
|
+
|
100
|
+
# if you thought conversion from degrees to radians looks weird, you'll hate
|
101
|
+
# conversion from meters to miles:
|
102
|
+
distance = 1500 # this is in meters. why? because all the methods that return
|
103
|
+
# a "distance" return it in meters
|
104
|
+
distance.miles # => 0.932056427001953
|
89
105
|
```
|
90
106
|
|
91
107
|
NSCoder
|
@@ -375,6 +391,10 @@ image.uicolor # => UIColor.colorWithPatternImage(image)
|
|
375
391
|
image.scale_to [37, 37]
|
376
392
|
image.rounded # default: 5 pt radius
|
377
393
|
image.rounded(10)
|
394
|
+
|
395
|
+
# these both use UIEdgeInsetsZero (for now)
|
396
|
+
image.tileable
|
397
|
+
image.stretchable
|
378
398
|
```
|
379
399
|
|
380
400
|
UIAlertView
|
@@ -677,6 +697,10 @@ end
|
|
677
697
|
# hemorrhaging):
|
678
698
|
1.month || 2.months # 1.month = 30 days
|
679
699
|
1.year || 2.years # 1.year = 365 days
|
700
|
+
|
701
|
+
# some comparison methods
|
702
|
+
date1.today?
|
703
|
+
date2.same_day? date1
|
680
704
|
```
|
681
705
|
|
682
706
|
NSUserDefaults
|
@@ -836,6 +860,28 @@ CGRect([0.0, 0.0],{1.0 × 1.0})
|
|
836
860
|
|
837
861
|
[CGGeometry Reference]: https://developer.apple.com/library/mac/documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html
|
838
862
|
|
863
|
+
CoreLocation
|
864
|
+
--------------
|
865
|
+
|
866
|
+
Open up `CLLocationCoordinate2D` to provide handy-dandies
|
867
|
+
|
868
|
+
```ruby
|
869
|
+
> denver_co = CLLocationCoordinate2D.new(39.739188,-104.985223)
|
870
|
+
=> #<CLLocationCoordinate2D latitude=39.7391815185547 longitude=-104.985198974609>
|
871
|
+
> loveland_oh = CLLocationCoordinate2D.new(39.268128,-84.257648)
|
872
|
+
=> #<CLLocationCoordinate2D latitude=39.2681274414062 longitude=-84.2576293945312>
|
873
|
+
> denver_co.distance_to(loveland_oh)
|
874
|
+
=> 1773425.5 # in meters
|
875
|
+
> denver_co.distance_to(loveland_oh).miles
|
876
|
+
=> 1101.955078125
|
877
|
+
> denver_co.delta_miles(1101.6, -32.556)
|
878
|
+
=> #<CLLocationCoordinate2D latitude=39.2681427001953 longitude=-84.2577209472656>
|
879
|
+
> denver_co.delta_miles(1101.6, -32.556).distance_to(loveland_oh)
|
880
|
+
=> 8.0804328918457 # this is in meters
|
881
|
+
> denver_co.delta_miles(1101.6, -32.556).distance_to(loveland_oh).miles
|
882
|
+
=> 0.00502094626426697
|
883
|
+
```
|
884
|
+
|
839
885
|
REPL View adjustments
|
840
886
|
-----------------------
|
841
887
|
|
data/lib/sugarcube/adjust.rb
CHANGED
@@ -18,9 +18,7 @@ module SugarCube
|
|
18
18
|
return @@sugarcube_view if not view
|
19
19
|
|
20
20
|
if view.is_a? Fixnum
|
21
|
-
@@sugarcube_items ||=
|
22
|
-
raise "no views have been assigned to SugarCube::Adjust::tree" unless @@sugarcube_items
|
23
|
-
|
21
|
+
@@sugarcube_items ||= SugarCube::Adjust::build_tree(UIApplication.sharedApplication.keyWindow, :subviews)
|
24
22
|
view = @@sugarcube_items[view]
|
25
23
|
end
|
26
24
|
|
@@ -283,7 +281,7 @@ module SugarCube
|
|
283
281
|
end
|
284
282
|
end
|
285
283
|
|
286
|
-
@@sugarcube_items =
|
284
|
+
@@sugarcube_items = SugarCube::Adjust::build_tree(item, selector)
|
287
285
|
if self.respond_to? :draw_tree
|
288
286
|
total = draw_tree(item, selector)
|
289
287
|
else
|
@@ -295,8 +293,6 @@ module SugarCube
|
|
295
293
|
end
|
296
294
|
|
297
295
|
def draw_tree(item, selector, tab=nil, is_last=true, items_index=0)
|
298
|
-
@@sugarcube_items << item
|
299
|
-
|
300
296
|
space = ' '
|
301
297
|
if items_index < 10
|
302
298
|
print ' '
|
@@ -346,6 +342,19 @@ module SugarCube
|
|
346
342
|
return items_index
|
347
343
|
end
|
348
344
|
|
345
|
+
def build_tree(item, selector)
|
346
|
+
if selector.is_a? Proc
|
347
|
+
items = selector.call(item)
|
348
|
+
else
|
349
|
+
items = item.send(selector)
|
350
|
+
end
|
351
|
+
ret = [item]
|
352
|
+
items.each_with_index { |subview, index|
|
353
|
+
ret.concat SugarCube::Adjust::build_tree(subview, selector)
|
354
|
+
}
|
355
|
+
ret
|
356
|
+
end
|
357
|
+
|
349
358
|
def root
|
350
359
|
(UIApplication.sharedApplication.keyWindow || UIApplication.sharedApplication.windows[0]).rootViewController
|
351
360
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# denver = CLLocationCoordinate2D.new(39.764032,-104.963112)
|
2
|
+
# cincinnati = CLLocationCoordinate2D.new(39.267024,-84.251736)
|
3
|
+
# denver.distance_to(cincinnati).miles
|
4
|
+
# denver.delta_miles()
|
5
|
+
class CLLocationCoordinate2D
|
6
|
+
|
7
|
+
def delta_miles(dx, dy)
|
8
|
+
earth_radius = 3960.0
|
9
|
+
|
10
|
+
radius_at_latitude = earth_radius * Math.cos(self.latitude * Math::PI / 180.0)
|
11
|
+
if radius_at_latitude > 0
|
12
|
+
delta_lng = dx / radius_at_latitude
|
13
|
+
delta_lng *= 180.0 / Math::PI
|
14
|
+
else
|
15
|
+
delta_lng = 0
|
16
|
+
end
|
17
|
+
|
18
|
+
delta_lat = dy / earth_radius
|
19
|
+
delta_lat *= 180.0 / Math::PI
|
20
|
+
CLLocationCoordinate2D.new(self.latitude + delta_lat, self.longitude + delta_lng)
|
21
|
+
end
|
22
|
+
|
23
|
+
def distance_to(cl_location_2d)
|
24
|
+
my_location = CLLocation.alloc.initWithLatitude(self.latitude, longitude:self.longitude)
|
25
|
+
other_location = CLLocation.alloc.initWithLatitude(cl_location_2d.latitude, longitude:cl_location_2d.longitude)
|
26
|
+
my_location.distanceFromLocation(other_location)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/lib/sugarcube/fixnum.rb
CHANGED
@@ -15,4 +15,21 @@ class Fixnum
|
|
15
15
|
UIColor.colorWithRed(red, green:green, blue:blue, alpha:alpha.to_f)
|
16
16
|
end
|
17
17
|
|
18
|
+
def nth
|
19
|
+
# if the first two digits of rank are between 11 and 20, it's an
|
20
|
+
# 'up-teenth' kinda number
|
21
|
+
if self % 100 < 10 || self % 100 > 20
|
22
|
+
case self % 10
|
23
|
+
when 1
|
24
|
+
return "st"
|
25
|
+
when 2
|
26
|
+
return "nd"
|
27
|
+
when 3
|
28
|
+
return "rd"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
return "th"
|
33
|
+
end
|
34
|
+
|
18
35
|
end
|
data/lib/sugarcube/modal.rb
CHANGED
@@ -5,6 +5,14 @@ module SugarCube
|
|
5
5
|
UIApplication.sharedApplication.keyWindow.rootViewController.presentViewController(view_ctlr, animated:true, completion:block)
|
6
6
|
end
|
7
7
|
|
8
|
+
def present_modal_in_nav(view_ctlr, &block)
|
9
|
+
ctlr = UINavigationController.alloc.initWithRootViewController(view_ctlr)
|
10
|
+
ctlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical
|
11
|
+
|
12
|
+
SugarCube::Modal.present_modal(ctlr, &block)
|
13
|
+
ctlr
|
14
|
+
end
|
15
|
+
|
8
16
|
def dismiss_modal(&block)
|
9
17
|
UIApplication.sharedApplication.keyWindow.rootViewController.dismissViewControllerAnimated(true, completion:block)
|
10
18
|
end
|
data/lib/sugarcube/nsdate.rb
CHANGED
@@ -4,6 +4,22 @@ class NSDate
|
|
4
4
|
end
|
5
5
|
alias timeZone timezone
|
6
6
|
|
7
|
+
def era
|
8
|
+
return _calendar_components(NSEraCalendarUnit).era
|
9
|
+
end
|
10
|
+
|
11
|
+
def today?
|
12
|
+
today = self.class.new
|
13
|
+
return same_day?(today)
|
14
|
+
end
|
15
|
+
|
16
|
+
def same_day?(other)
|
17
|
+
return other.day == self.day &&
|
18
|
+
other.month == self.month &&
|
19
|
+
other.year == self.year &&
|
20
|
+
other.era == self.era
|
21
|
+
end
|
22
|
+
|
7
23
|
# In the rare case you actually get an NSDate object - not a Time object - this
|
8
24
|
# method is actually useful.
|
9
25
|
def utc_offset
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class NSString
|
2
|
+
|
3
|
+
def document
|
4
|
+
@@sugarcube_docs ||= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0]
|
5
|
+
return self if self.hasPrefix(@@sugarcube_docs)
|
6
|
+
|
7
|
+
@@sugarcube_docs.stringByAppendingPathComponent(self)
|
8
|
+
end
|
9
|
+
|
10
|
+
def exists?
|
11
|
+
NSFileManager.defaultManager.fileExistsAtPath(self.document)
|
12
|
+
end
|
13
|
+
|
14
|
+
def resource
|
15
|
+
@@sugarcube_resources ||= NSBundle.mainBundle.resourcePath
|
16
|
+
return self if self.hasPrefix(@@sugarcube_resources)
|
17
|
+
|
18
|
+
@@sugarcube_resources.stringByAppendingPathComponent(self)
|
19
|
+
end
|
20
|
+
|
21
|
+
def resource_exists?
|
22
|
+
NSFileManager.defaultManager.fileExistsAtPath(self.resource)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/lib/sugarcube/nsurl.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
class NSURL
|
2
2
|
|
3
3
|
def open
|
4
|
-
|
4
|
+
UIApplication.sharedApplication.openURL(NSURL.URLWithString(self))
|
5
5
|
end
|
6
6
|
|
7
7
|
def can_open?
|
8
|
-
|
8
|
+
UIApplication.sharedApplication.canOpenURL(NSURL.URLWithString(self))
|
9
9
|
end
|
10
10
|
|
11
11
|
end
|
data/lib/sugarcube/numeric.rb
CHANGED
@@ -4,6 +4,10 @@ class Numeric
|
|
4
4
|
self / 100.0
|
5
5
|
end
|
6
6
|
|
7
|
+
def radians
|
8
|
+
self
|
9
|
+
end
|
10
|
+
|
7
11
|
def degrees
|
8
12
|
self / 180.0 * Math::PI
|
9
13
|
end
|
@@ -12,4 +16,20 @@ class Numeric
|
|
12
16
|
self * Math::PI
|
13
17
|
end
|
14
18
|
|
19
|
+
def meters
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def kilometers
|
24
|
+
self / 1000.0
|
25
|
+
end
|
26
|
+
|
27
|
+
def miles
|
28
|
+
self * 0.000621371
|
29
|
+
end
|
30
|
+
|
31
|
+
def feet
|
32
|
+
self * 3.28084
|
33
|
+
end
|
34
|
+
|
15
35
|
end
|
data/lib/sugarcube/ror.rb
CHANGED
data/lib/sugarcube/symbol.rb
CHANGED
@@ -52,6 +52,11 @@ class Symbol
|
|
52
52
|
attr_accessor :tableview_cellstyles
|
53
53
|
attr_accessor :tableview_cellaccessorytype
|
54
54
|
attr_accessor :tableview_cellselectionstyle
|
55
|
+
|
56
|
+
attr_accessor :image_sourcetypes
|
57
|
+
attr_accessor :image_capturemode
|
58
|
+
attr_accessor :image_cameradevice
|
59
|
+
attr_accessor :image_quality
|
55
60
|
end
|
56
61
|
|
57
62
|
@devices = {
|
@@ -313,6 +318,32 @@ class Symbol
|
|
313
318
|
bottom: UIViewAutoresizingFlexibleBottomMargin,
|
314
319
|
}
|
315
320
|
|
321
|
+
@image_sourcetypes = {
|
322
|
+
camera: UIImagePickerControllerSourceTypeCamera,
|
323
|
+
library: UIImagePickerControllerSourceTypePhotoLibrary,
|
324
|
+
album: UIImagePickerControllerSourceTypeSavedPhotosAlbum,
|
325
|
+
}
|
326
|
+
@image_capturemode = {
|
327
|
+
photo: UIImagePickerControllerCameraCaptureModePhoto,
|
328
|
+
video: UIImagePickerControllerCameraCaptureModeVideo,
|
329
|
+
}
|
330
|
+
@image_cameradevice = {
|
331
|
+
front: UIImagePickerControllerCameraDeviceFront,
|
332
|
+
rear: UIImagePickerControllerCameraDeviceRear,
|
333
|
+
}
|
334
|
+
@image_quality = {
|
335
|
+
high: UIImagePickerControllerQualityTypeHigh,
|
336
|
+
medium: UIImagePickerControllerQualityTypeMedium,
|
337
|
+
low: UIImagePickerControllerQualityTypeLow,
|
338
|
+
vga: UIImagePickerControllerQualityType640x480,
|
339
|
+
i1280x720: UIImagePickerControllerQualityTypeIFrame1280x720,
|
340
|
+
i1280: UIImagePickerControllerQualityTypeIFrame1280x720,
|
341
|
+
i720: UIImagePickerControllerQualityTypeIFrame1280x720,
|
342
|
+
i960x540: UIImagePickerControllerQualityTypeIFrame960x540,
|
343
|
+
i960: UIImagePickerControllerQualityTypeIFrame960x540,
|
344
|
+
i540: UIImagePickerControllerQualityTypeIFrame960x540,
|
345
|
+
}
|
346
|
+
|
316
347
|
private
|
317
348
|
def look_in(here)
|
318
349
|
return here[self] if here.has_key? self
|
@@ -433,6 +464,27 @@ class Symbol
|
|
433
464
|
end
|
434
465
|
alias uiviewautoresizing uiautoresize
|
435
466
|
|
467
|
+
def uiimagesource
|
468
|
+
look_in(Symbol.image_sourcetypes)
|
469
|
+
end
|
470
|
+
alias uiimagesourcetype uiimagesource
|
471
|
+
|
472
|
+
def uiimagecapture
|
473
|
+
look_in(Symbol.image_capturemode)
|
474
|
+
end
|
475
|
+
alias uiimagecapturemode uiimagecapture
|
476
|
+
|
477
|
+
def uiimagecamera
|
478
|
+
look_in(Symbol.image_cameradevice)
|
479
|
+
end
|
480
|
+
alias uiimagecameradevice uiimagecamera
|
481
|
+
alias uiimagedevice uiimagecamera
|
482
|
+
|
483
|
+
def uiimagequality
|
484
|
+
look_in(Symbol.image_quality)
|
485
|
+
end
|
486
|
+
alias uiimagequalitytype uiimagequality
|
487
|
+
|
436
488
|
def uifont(size=UIFont.systemFontSize)
|
437
489
|
# system fonts
|
438
490
|
if Symbol.system_fonts.has_key? self
|
data/lib/sugarcube/timer.rb
CHANGED
@@ -39,11 +39,11 @@ class Numeric
|
|
39
39
|
alias year years
|
40
40
|
|
41
41
|
def later(user_info=nil, &fire)
|
42
|
-
NSTimer.scheduledTimerWithTimeInterval(self
|
42
|
+
NSTimer.scheduledTimerWithTimeInterval(self, target: fire, selector: 'call:', userInfo: user_info, repeats: false)
|
43
43
|
end
|
44
44
|
|
45
45
|
def every(user_info=nil, &fire)
|
46
|
-
NSTimer.scheduledTimerWithTimeInterval(self
|
46
|
+
NSTimer.scheduledTimerWithTimeInterval(self, target: fire, selector: 'call:', userInfo: user_info, repeats: true)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
@@ -2,10 +2,16 @@ class UIView
|
|
2
2
|
|
3
3
|
def to_s(options={})
|
4
4
|
options[:superview] = true if options[:superview].nil?
|
5
|
+
if self.respond_to? :stylename and self.stylename
|
6
|
+
suffix = ' stylename: ' + self.stylename.inspect
|
7
|
+
else
|
8
|
+
suffix = ''
|
9
|
+
end
|
5
10
|
"#{self.class.name}(##{self.object_id.to_s(16)}, #{SugarCube::Adjust::format_frame(self.frame)}" +
|
6
11
|
(options[:inner] ? ', ' + options[:inner] : '') +
|
7
12
|
')' +
|
8
|
-
(options[:superview] && self.superview ? ", child of #{self.superview.class.name}(##{self.superview.object_id.to_s(16)})" : '')
|
13
|
+
(options[:superview] && self.superview ? ", child of #{self.superview.class.name}(##{self.superview.object_id.to_s(16)})" : '') +
|
14
|
+
suffix
|
9
15
|
end
|
10
16
|
|
11
17
|
end
|
data/lib/sugarcube/uiimage.rb
CHANGED
@@ -36,4 +36,12 @@ class UIImage
|
|
36
36
|
return image
|
37
37
|
end
|
38
38
|
|
39
|
+
def tileable
|
40
|
+
resizableImageWithCapInsets(UIEdgeInsetsZero, resizingMode:UIImageResizingModeTile)
|
41
|
+
end
|
42
|
+
|
43
|
+
def stretchable
|
44
|
+
resizableImageWithCapInsets(UIEdgeInsetsZero, resizingMode:UIImageResizingModeStretch)
|
45
|
+
end
|
46
|
+
|
39
47
|
end
|
@@ -4,7 +4,12 @@ class UIViewController
|
|
4
4
|
self.addChildViewController(view_controller)
|
5
5
|
self
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
|
+
# `alias << push` won't work. it doesn't "respect" subclasses overriding the
|
9
|
+
# `push` method.
|
10
|
+
def <<(view_controller)
|
11
|
+
push view_controller
|
12
|
+
end
|
8
13
|
|
9
14
|
end
|
10
15
|
|
@@ -15,7 +20,6 @@ class UINavigationController
|
|
15
20
|
self.pushViewController(view_controller, animated: true)
|
16
21
|
self
|
17
22
|
end
|
18
|
-
alias << push
|
19
23
|
|
20
24
|
def pop(to_view=nil)
|
21
25
|
if to_view
|
@@ -36,6 +40,5 @@ class UITabBarController
|
|
36
40
|
self.setViewControllers(view_controllers, animated: true)
|
37
41
|
self
|
38
42
|
end
|
39
|
-
alias << push
|
40
43
|
|
41
44
|
end
|
data/lib/sugarcube/version.rb
CHANGED
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:
|
4
|
+
version: 0.11.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-01 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: ! '== Description
|
16
16
|
|
@@ -47,8 +47,8 @@ files:
|
|
47
47
|
- lib/sugarcube/adjust.rb
|
48
48
|
- lib/sugarcube/array.rb
|
49
49
|
- lib/sugarcube/core_graphics.rb
|
50
|
+
- lib/sugarcube/core_location.rb
|
50
51
|
- lib/sugarcube/defaults.rb
|
51
|
-
- lib/sugarcube/document.rb
|
52
52
|
- lib/sugarcube/exceptions.rb
|
53
53
|
- lib/sugarcube/fixnum.rb
|
54
54
|
- lib/sugarcube/modal.rb
|
@@ -59,6 +59,7 @@ files:
|
|
59
59
|
- lib/sugarcube/nsindexpath.rb
|
60
60
|
- lib/sugarcube/nsindexset.rb
|
61
61
|
- lib/sugarcube/nsstring.rb
|
62
|
+
- lib/sugarcube/nsstring_files.rb
|
62
63
|
- lib/sugarcube/nsurl.rb
|
63
64
|
- lib/sugarcube/nsuserdefaults.rb
|
64
65
|
- lib/sugarcube/numeric.rb
|
data/lib/sugarcube/document.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
class NSString
|
2
|
-
|
3
|
-
def document
|
4
|
-
@@docs ||= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0]
|
5
|
-
return self if self.hasPrefix(@@docs)
|
6
|
-
|
7
|
-
@@docs.stringByAppendingPathComponent(self)
|
8
|
-
end
|
9
|
-
|
10
|
-
def exists?
|
11
|
-
NSFileManager.defaultManager.fileExistsAtPath(self.document)
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|