routable 0.0.3 → 0.1.0
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 +5 -0
- data/lib/routable/router.rb +16 -2
- data/lib/routable/version.rb +1 -1
- data/spec/main_spec.rb +9 -0
- metadata +2 -2
data/README.md
CHANGED
@@ -81,6 +81,11 @@ class AppDelegate
|
|
81
81
|
@router.map("messages", MessagesController)
|
82
82
|
@router.map("message/:id", MessageThreadController)
|
83
83
|
|
84
|
+
# can also route arbitrary blocks of code
|
85
|
+
@router.map("logout") do
|
86
|
+
User.logout
|
87
|
+
end
|
88
|
+
|
84
89
|
@window.rootViewController = @router.navigation_controller
|
85
90
|
end
|
86
91
|
end
|
data/lib/routable/router.rb
CHANGED
@@ -37,6 +37,11 @@ module Routable
|
|
37
37
|
# Map a URL to a UIViewController
|
38
38
|
# EX
|
39
39
|
# router.map "/users/:id", UsersController
|
40
|
+
# PARAMS
|
41
|
+
# url => the URL to map
|
42
|
+
# klass (optional) => the UIViewController class to open
|
43
|
+
# options (optional) => hash of options
|
44
|
+
# &callback => the block to be run when opening the URL
|
40
45
|
# OPTIONS
|
41
46
|
# :modal => true/false
|
42
47
|
# - We present the VC modally (router is not shared between the new nav VC)
|
@@ -46,9 +51,13 @@ module Routable
|
|
46
51
|
# - A symbol to represented transition style used. Mapped to UIModalTransitionStyle.
|
47
52
|
# :presentation => [:full_screen, :page_sheet, :form_sheet, :current]
|
48
53
|
# - A symbol to represented presentation style used. Mapped to UIModalPresentationStyle.
|
49
|
-
def map(url, klass, options = {})
|
54
|
+
def map(url, klass = nil, options = {}, &callback)
|
50
55
|
format = url
|
51
56
|
|
57
|
+
if callback
|
58
|
+
self.routes[format] = options.merge!(callback: callback)
|
59
|
+
end
|
60
|
+
|
52
61
|
if options[:transition] && !TRANSITION_STYLES.keys.include?(options[:transition])
|
53
62
|
raise ArgumentError, ":transition must be one of #{TRANSITION_STYLES.keys}"
|
54
63
|
end
|
@@ -66,6 +75,12 @@ module Routable
|
|
66
75
|
# => router.navigation_controller pushes a UsersController
|
67
76
|
def open(url, animated = true)
|
68
77
|
controller_options = options_for_url(url)
|
78
|
+
|
79
|
+
if controller_options[:callback]
|
80
|
+
controller_options[:callback].call
|
81
|
+
return
|
82
|
+
end
|
83
|
+
|
69
84
|
controller = controller_for_url(url)
|
70
85
|
if self.navigation_controller.modalViewController
|
71
86
|
self.navigation_controller.dismissModalViewControllerAnimated(animated)
|
@@ -205,7 +220,6 @@ module Routable
|
|
205
220
|
controller
|
206
221
|
end
|
207
222
|
|
208
|
-
private
|
209
223
|
def shared_vc_cache
|
210
224
|
@shared_vc_cache ||= {}
|
211
225
|
end
|
data/lib/routable/version.rb
CHANGED
data/spec/main_spec.rb
CHANGED
@@ -102,4 +102,13 @@ describe "the url router" do
|
|
102
102
|
end.should.raise(ArgumentError)
|
103
103
|
end
|
104
104
|
|
105
|
+
it "should work with callback blocks" do
|
106
|
+
@called = false
|
107
|
+
@router.map("logout") do
|
108
|
+
@called = true
|
109
|
+
end
|
110
|
+
|
111
|
+
@router.open("logout")
|
112
|
+
@called.should == true
|
113
|
+
end
|
105
114
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: routable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A RubyMotion UIViewController -> URL router
|
15
15
|
email:
|