class NSString
def document
@@sugarcube_docs ||= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0]
return self if self.hasPrefix(@@sugarcube_docs)
@@sugarcube_docs.stringByAppendingPathComponent(self)
end
def cache
@@sugarcube_caches ||= NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, true)[0]
return self if self.hasPrefix(@@sugarcube_caches)
@@sugarcube_caches.stringByAppendingPathComponent(self)
end
def app_support
@@sugarcube_app_suppert ||= NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, true)[0]
return self if self.hasPrefix(@@sugarcube_app_suppert)
@@sugarcube_app_suppert.stringByAppendingPathComponent(self)
end
def exists?
path = self.hasPrefix('/') ? self : self.document
NSFileManager.defaultManager.fileExistsAtPath(path)
end
def remove!
ptr = Pointer.new(:id)
path = self.hasPrefix('/') ? self : self.document
NSFileManager.defaultManager.removeItemAtPath(path, error:ptr)
ptr[0]
end
def resource
@@sugarcube_resources ||= NSBundle.mainBundle.resourcePath
return self if self.hasPrefix(@@sugarcube_resources)
@@sugarcube_resources.stringByAppendingPathComponent(self)
end
def resource_exists?
NSFileManager.defaultManager.fileExistsAtPath(self.resource)
end
def resource_url
a = self.split(".")
ext = a.pop if a.size >= 2
NSBundle.mainBundle.URLForResource(a.join("."), withExtension:ext)
end
# It's convenient to store a property which is dependent on an environment to
# Info.plist. For instance, to use a different server between development and
# release versions.
#
# In Rakefile
#
# app.release do
# app.info_plist['VerifyURL'] = "https://buy.itunes.apple.com/verifyReceipt"
# end
# app.development do
# app.info_plist['VerifyURL'] = "https://sandbox.itunes.apple.com/verifyReceipt"
# end
#
#
# You can easily get this value at run time like this:
#
# 'VerifyURL'.info_plist
#
def info_plist
NSBundle.mainBundle.infoDictionary.valueForKey self
end
end