-
Notifications
You must be signed in to change notification settings - Fork 207
Home
A collection of helpers and wrappers used to wrap CocoaTouch code and provide more Ruby like APIs.
gem install bubble-wrap- Edit the Rakefile of your RubyMotion project and add the following require line.
require 'bubble-wrap'- Now, you can use BubbleWrap extension in your app:
class AppDelegate
def application(application, didFinishLaunchingWithOptions:launchOptions)
puts "#{App.name} (#{App.documents_path})"
true
end
endBubbleWrap::HTTP wraps NSURLRequest, NSURLConnection and friends to provide Ruby developers with a more familiar and easier to use API.
The API uses async calls and blocks to stay as simple as possible.
Usage example:
BubbleWrap::HTTP.get("https://api.github.com/users/mattetti") do |response|
p response.body.to_str
endBubbleWrap::HTTP.get("https://api.github.com/users/mattetti", {credentials: {username: 'matt', password: 'aimonetti'}}) do |response|
p response.body.to_str # prints the response's body
enddata = {first_name: 'Matt', last_name: 'Aimonetti'}
BubbleWrap::HTTP.post("http://foo.bar.com/", {payload: data}) do |response|
if response.ok?
json = BubbleWrap::JSON.parse(response.body.to_str)
p json['id']
elsif response.status_code.to_s =~ /40\d/
alert("Login failed") # helper provided by the kernel file in this repo.
else
alert(response.error_message)
end
endBubbleWrap::JSON wraps NSJSONSerialization available in iOS5 and offers the same API as Ruby's JSON std lib.
A collection of useful methods used often in my RubyMotion apps.
Examples:
> iphone?
# true
> ipad?
# false
> orientation
# :portrait
> simulator?
# true
> documents_path
# "/Users/mattetti/Library/Application Support/iPhone Simulator/5.0/Applications/EEC6454E-1816-451E-BB9A-EE18222E1A8F/Documents"A module allowing developers to store global states and also provides a persistence layer.
Extra methods on UIView for working with gesture recognizers. A gesture recognizer can be added using a normal Ruby block, like so:
view.whenTapped do
UIView.animateWithDuration(1,
animations:lambda {
# animate
# @view.transform = ...
})
endThere are similar methods for pinched, rotated, swiped, panned, and pressed (for long presses). All of the methods return the actual recognizer object, so it is possible to set the delegate if more fine-grained control is needed.
Helper methods added to the class repsonsible for user preferences.
Helper methods added to give NSIndexPath a bit more or a Ruby
interface.