Module: Innate::Helper::Link
- Defined in:
- /home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/link.rb
Class Method Summary (collapse)
Instance Method Summary (collapse)
-
- (String) anchor(text, *args)
(also: #a)
Create a link tag.
-
- (URI) route(name = '/', *args)
(also: #r)
Provide the path to given Node and actions.
-
- (Object) route_location(klass)
-
- (URI) route_self(name = '/', *args)
(also: #rs)
Create a route to the currently active Node.
Class Method Details
+ (Object) included(into)
4 5 6 |
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/link.rb', line 4 def self.included(into) into.extend(self) end |
Instance Method Details
- (String) anchor(text, *args) Also known as: a
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/link.rb', line 78 def anchor(text, *args) case first = (args.first || text) when URI href = first.to_s when /^\w+:\/\// uri = URI(first) uri.query = Rack::Utils.escape_html(uri.query) if uri.query href = uri.to_s else href = args.empty? ? r(text) : r(*args) end text = Rack::Utils.escape_html(text) %(<a href="#{href}">#{text}</a>) end |
- (URI) route(name = '/', *args) Also known as: r
Provide the path to given Node and actions. Escapes GET parameters.
Usage, mapping is Pages => '/', Users => '/users':
Pages.r # => URI('/') Pages.r(:foo) # => URI('/foo') Pages.r(:foo, :bar) # => URI('/foo/bar') Pages.r(:foo, :a => :b) # => URI('/foo?a=b') Pages.r(:foo, :bar, :a => :b) # => URI('/foo/bar?a=b')
Users.r # => URI('/users/') Users.r(:foo) # => URI('/users/foo') Users.r(:foo, :bar) # => URI('/users/foo/bar') Users.r(:foo, :a => :b) # => URI('/users/foo?a=b') Users.r(:foo, :bar, :a => :b) # => URI('/users/foo/bar?a=b')
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/link.rb', line 26 def route(name = '/', *args) hash = {} hashes, names = args.partition{|arg| arg.respond_to?(:merge!) } hashes.each{|to_merge| hash.merge!(to_merge) } name = name.to_s.gsub(/__/, '/') location = route_location(self) front = Array[location, name, *names.map{|element| Rack::Utils.escape(element) }].join('/').squeeze('/') return URI(front) if hash.empty? query = Rack::Utils.build_query(hash) URI("#{front}?#{query}") end |
- (Object) route_location(klass)
44 45 46 47 48 |
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/link.rb', line 44 def route_location(klass) prefix = Innate..prefix location = Innate.to(klass) || Innate.to(klass.class) [prefix, location].join('/') end |
- (URI) route_self(name = '/', *args) Also known as: rs
Create a route to the currently active Node.
This method is mostly here in case you include this helper elsewhere and don't want (or can't) type SomeNode.r all the time.
The usage is identical with #route.
61 62 63 |
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/link.rb', line 61 def route_self(name = '/', *args) Current.action.node.route(name, *args) end |