Module: Padrino::Helpers::AssetTagHelpers
- Defined in:
- lib/padrino-helpers/asset_tag_helpers.rb
Overview
Helpers related to producing assets (images, stylesheets, js, etc) within templates.
Constant Summary collapse
- APPEND_ASSET_EXTENSIONS =
["js", "css"]
- ABSOLUTE_URL_PATTERN =
%r{^(https?://)}
- ASSET_FOLDERS =
{ :js => 'javascripts', :css => 'stylesheets', }
Instance Method Summary collapse
-
#asset_path(kind, source = nil) ⇒ String
Returns the path to the specified asset (css or javascript).
-
#favicon_tag(source, options = {}) ⇒ String
Generates a favicon link.
-
#feed_tag(mime, url, options = {}) ⇒ String
Creates a link tag that browsers and news readers can use to auto-detect an RSS or ATOM feed.
-
#flash_tag(*args) ⇒ String
Creates a div to display the flash of given type if it exists.
-
#image_path(src) ⇒ String
Returns the path to the image, either relative or absolute.
-
#image_tag(url, options = {}) ⇒ String
Creates an image element with given url and options.
-
#javascript_include_tag(*sources, options = {}) ⇒ String
Returns an html script tag for each of the sources provided.
-
#link_to(*args, &block) ⇒ String
Creates a link element with given name, url and options.
-
#mail_to(email, caption = nil, mail_options = {}) ⇒ String
Creates a mail link element with given name and caption.
-
#meta_tag(content, options = {}) ⇒ String
Creates a meta element with the content and given options.
-
#stylesheet_link_tag(*sources, options = {}) ⇒ String
Returns an html script tag for each of the sources provided.
Instance Method Details
#asset_path(kind, source = nil) ⇒ String
Returns the path to the specified asset (css or javascript).
299 300 301 302 303 304 305 306 307 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 299 def asset_path(kind, source = nil) kind, source = source, kind if source.nil? source = asset_normalize_extension(kind, URI.escape(source.to_s)) return source if source =~ ABSOLUTE_URL_PATTERN || source =~ /^\// source = File.join(asset_folder_name(kind), source) = (source) result_path = uri_root_path(source) "#{result_path}#{}" end |
#favicon_tag(source, options = {}) ⇒ String
Generates a favicon link. Looks inside images folder
186 187 188 189 190 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 186 def favicon_tag(source, ={}) type = File.extname(source).sub('.','') = .dup.reverse_merge!(:href => image_path(source), :rel => 'icon', :type => "image/#{type}") tag(:link, ) end |
#feed_tag(mime, url, options = {}) ⇒ String
Creates a link tag that browsers and news readers can use to auto-detect an RSS or ATOM feed.
@param options
The options for the feed tag.
114 115 116 117 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 114 def feed_tag(mime, url, ={}) full_mime = (mime == :atom) ? 'application/atom+xml' : 'application/rss+xml' tag(:link, .reverse_merge(:rel => 'alternate', :type => full_mime, :title => mime, :href => url)) end |
#flash_tag(*args) ⇒ String
Creates a div to display the flash of given type if it exists.
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 32 def flash_tag(*args) = args. bootstrap = .delete(:bootstrap) if [:bootstrap] args.inject(ActiveSupport::SafeBuffer.new) do |html,kind| flash_text = ActiveSupport::SafeBuffer.new << flash[kind] next html if flash_text.blank? flash_text << content_tag(:button, '×'.html_safe, {:type => :button, :class => :close, :'data-dismiss' => :alert}) if bootstrap html << content_tag(:div, flash_text, { :class => kind }.update()) end end |
#image_path(src) ⇒ String
Returns the path to the image, either relative or absolute. We search it in your appname.public_folder
like app/public/images for inclusion. You can provide also a full path.
272 273 274 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 272 def image_path(src) asset_path(:images, src) end |
#image_tag(url, options = {}) ⇒ String
Creates an image element with given url and options.
205 206 207 208 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 205 def image_tag(url, ={}) .reverse_merge!(:src => image_path(url)) tag(:img, ) end |
#javascript_include_tag(*sources, options = {}) ⇒ String
Returns an html script tag for each of the sources provided. You can pass in the filename without extension or a symbol and we search it in your appname.public_folder
like app/public/javascript for inclusion. You can provide also a full path.
249 250 251 252 253 254 255 256 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 249 def javascript_include_tag(*sources) = { :type => 'text/javascript' }.update(sources..symbolize_keys) sources.flatten.inject(ActiveSupport::SafeBuffer.new) do |all,source| all << content_tag(:script, nil, { :src => asset_path(:js, source) }.update()) end end |
#link_to(caption, url, options = {}) ⇒ String #link_to(url, options = {}, &block) ⇒ String
Creates a link element with given name, url and options.
Note that you can pass :if
or :unless
conditions, but if you provide :current as condition padrino return true/false if the request.path_info match the given url.
77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 77 def link_to(*args, &block) = args. name = block_given? ? '' : args.shift href = args.first if fragment = [:fragment] || [:anchor] warn 'Options :anchor and :fragment are deprecated for #link_to. Please use :fragment for #url' href << '#' << fragment.to_s end .reverse_merge!(:href => href || '#') return name unless parse_conditions(href, ) block_given? ? content_tag(:a, , &block) : content_tag(:a, name, ) end |
#mail_to(email, caption = nil, mail_options = {}) ⇒ String
Creates a mail link element with given name and caption.
141 142 143 144 145 146 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 141 def mail_to(email, =nil, ={}) = .slice!(:cc, :bcc, :subject, :body) mail_query = Rack::Utils.build_query().gsub(/\+/, '%20').gsub('%40', '@') mail_href = "mailto:#{email}"; mail_href << "?#{mail_query}" if mail_query.present? link_to(( || email), mail_href, ) end |
#meta_tag(content, options = {}) ⇒ String
Creates a meta element with the content and given options.
165 166 167 168 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 165 def (content, ={}) .reverse_merge!("content" => content) tag(:meta, ) end |
#stylesheet_link_tag(*sources, options = {}) ⇒ String
Returns an html script tag for each of the sources provided. You can pass in the filename without extension or a symbol and we search it in your appname.public_folder
like app/public/stylesheets for inclusion. You can provide also a full path.
225 226 227 228 229 230 231 232 233 |
# File 'lib/padrino-helpers/asset_tag_helpers.rb', line 225 def stylesheet_link_tag(*sources) = { :rel => 'stylesheet', :type => 'text/css' }.update(sources..symbolize_keys) sources.flatten.inject(ActiveSupport::SafeBuffer.new) do |all,source| all << tag(:link, { :href => asset_path(:css, source) }.update()) end end |