Module: Padrino::Helpers::AssetTagHelpers

Included in:
MiniTest::Spec
Defined in:
lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb

Overview

Helpers related to producing assets (images,stylesheets,js,etc) within templates.

Constant Summary collapse

FRAGMENT_HASH =
"#".html_safe.freeze
APPEND_ASSET_EXTENSIONS =

assets that require an appended extension

["js", "css"]
ABSOLUTE_URL_PATTERN =

absolute url regex

%r{^(https?://)}

Instance Method Summary collapse

Instance Method Details

#asset_path(kind, source) ⇒ String

Returns the path to the specified asset (css or javascript)

Examples:

# Generates: /javascripts/application.js?1269008689
asset_path :js, :application

# Generates: /stylesheets/application.css?1269008689
asset_path :css, :application

# Generates: /images/example.jpg?1269008689
asset_path :images, 'example.jpg'

Parameters:

  • kind (String)

    The kind of asset (i.e :images, :js, :css)

  • source (String)

    The path to the asset (relative or absolute).

Returns:

  • (String)

    Path for the asset given the kind and source.



324
325
326
327
328
329
330
331
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 324

def asset_path(kind, source)
  source = asset_normalize_extension(kind, URI.escape(source.to_s))
  return source if source =~ ABSOLUTE_URL_PATTERN || source =~ /^\// # absolute source
  source = File.join(asset_folder_name(kind), source)
  timestamp = asset_timestamp(source)
  result_path = uri_root_path(source)
  "#{result_path}#{timestamp}"
end

#favicon_tag(source, options = {}) ⇒ String

Generates a favicon link. looks inside images folder

Examples:

favicon_tag 'favicon.png'
favicon_tag 'icons/favicon.png'
# or override some options
favicon_tag 'favicon.png', :type => 'image/ico'

Parameters:

  • source (String)

    The source image path for the favicon link tag.

  • options (Hash) (defaults to: {})

    The html options for the favicon link tag.

Returns:

  • (String)

    The favicon link html tag with specified options.



214
215
216
217
218
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 214

def favicon_tag(source, options={})
  type = File.extname(source).gsub('.','')
  options = options.dup.reverse_merge!(:href => image_path(source), :rel => 'icon', :type => "image/#{type}")
  tag(:link, options)
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.

Examples:

feed_tag :atom, url(:blog, :posts, :format => :atom), :title => "ATOM"
# Generates: <link type="application/atom+xml" rel="alternate" href="/blog/posts.atom" title="ATOM" />
feed_tag :rss, url(:blog, :posts, :format => :rss)
# Generates: <link type="application/rss+xml" rel="alternate" href="/blog/posts.rss" title="rss" />

Parameters:

  • mime (Symbol)

    The mime type of the feed (i.e :atom or :rss).

  • url (String)

    The url for the feed tag to reference.

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :rel (String) — default: "alternate"

    Specify the relation of this link

  • :type (String)

    Override the auto-generated mime type

  • :title (String)

    Specify the title of the link, defaults to the type

Returns:

  • (String)

    Feed link html tag with specified options.



139
140
141
142
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 139

def feed_tag(mime, url, options={})
  full_mime = (mime == :atom) ? 'application/atom+xml' : 'application/rss+xml'
  tag(:link, options.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

Examples:

flash_tag(:notice, :id => 'flash-notice')
# Generates: <div class="notice">flash-notice</div>
flash_tag(:error, :success)
# Generates: <div class="error">flash-error</div>
# <div class="success">flash-success</div>

Parameters:

  • kind (Symbol)

    The type of flash to display in the tag.

  • options (Hash)

    The html options for this section. use :bootstrap => true to support Twitter’s bootstrap dismiss alert button

Returns:

  • (String)

    Flash tag html with specified options.



30
31
32
33
34
35
36
37
38
39
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 30

def flash_tag(*args)
  options = args.extract_options!
  bootstrap = options.delete(:bootstrap) if options[:bootstrap]
  args.inject(''.html_safe) do |html,kind|
    flash_text = flash[kind]
    next html if flash_text.blank?
    flash_text << (:button, "&times;", {:type => :button, :class => :close, :'data-dismiss' => :alert}) if bootstrap
    html << (:div, flash_text, options.reverse_merge(:class => kind))
  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.

Examples:

# Generates: /images/foo.jpg?1269008689
image_path("foo.jpg")

Parameters:

  • src (String)

    The path to the image file (relative or absolute)

Returns:

  • (String)

    Path to an image given the kind and source.



299
300
301
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 299

def image_path(src)
  asset_path(:images, src)
end

#image_tag(url, options = {}) ⇒ String

Creates an image element with given url and options

Examples:

image_tag('icons/avatar.png')

Parameters:

  • url (String)

    The source path for the image tag.

  • options (Hash) (defaults to: {})

    The html options for the image tag.

Returns:

  • (String)

    Image html tag with url and specified options.



234
235
236
237
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 234

def image_tag(url, options={})
  options.reverse_merge!(:src => image_path(url))
  tag(:img, options)
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.

Examples:

javascript_include_tag 'application', :extjs

Parameters:

  • sources (Array<String>)

    Splat of js source paths

  • options (Hash) (defaults to: {})

    The html options for the script tag

Returns:

  • (String)

    Script tag for sources with specified options.



277
278
279
280
281
282
283
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 277

def javascript_include_tag(*sources)
  options = sources.extract_options!.symbolize_keys
  options.reverse_merge!(:type => 'text/javascript')
  sources.flatten.map { |source|
    (:script, nil, options.reverse_merge(:src => asset_path(:js, source)))
  }.join("\n").html_safe
end

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

Examples:

link_to('click me', '/dashboard', :class => 'linky')
link_to('click me', '/dashboard', :remote => true)
link_to('click me', '/dashboard', :method => :delete)
link_to('click me', :class => 'blocky') do; end

Overloads:

  • #link_to(caption, url, options = {}) ⇒ String

    Parameters:

    • caption (String)

      The text caption.

    • url (String)

      The url href.

    • options (Hash) (defaults to: {})

      The html options.

  • #link_to(url, options = {}, &block) ⇒ String

    Parameters:

    • url (String)

      The url href.

    • options (Hash) (defaults to: {})

      The html options.

    • block (Proc)

      The link content.

Parameters:

  • options (Hash)

    a customizable set of options

Returns:

  • (String)

    Link tag html with specified options.



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 80

def link_to(*args, &block)
  options = args.extract_options!
  fragment  = options.delete(:anchor).to_s if options[:anchor]
  fragment  = options.delete(:fragment).to_s if options[:fragment]

  url = ActiveSupport::SafeBuffer.new
  if block_given?
    if args[0]
      url.concat(args[0])
      url.concat(FRAGMENT_HASH).concat(fragment) if fragment
    else
      url.concat(FRAGMENT_HASH)
      url.concat(fragment) if fragment
    end
    options.reverse_merge!(:href => url)
    link_content = capture_html(&block)
    return '' unless parse_conditions(url, options)
    result_link = (:a, link_content, options)
    block_is_template?(block) ? concat_content(result_link) : result_link
  else
    if args[1]
      url.concat(args[1])
      url.safe_concat(FRAGMENT_HASH).concat(fragment) if fragment
    else
      url = FRAGMENT_HASH
      url.concat(fragment) if fragment
    end
    name = args[0]
    return name unless parse_conditions(url, options)
    options.reverse_merge!(:href => url)
    (:a, name, options)
  end
end

#mail_to(email, caption = nil, mail_options = {}) ⇒ String

Creates a mail link element with given name and caption.

Examples:

# Generates: <a href="mailto:[email protected]">[email protected]</a>
mail_to "[email protected]"
# Generates: <a href="mailto:[email protected]">My Email</a>
mail_to "[email protected]", "My Email"

Parameters:

  • email (String)

    The email address for the link.

  • caption (String) (defaults to: nil)

    The caption for the link.

  • mail_options (Hash) (defaults to: {})

    The options for the mail link. Accepts html options.

Options Hash (mail_options):

  • cc (String)

    The cc recipients.

  • bcc (String)

    The bcc recipients.

  • subject (String)

    The subject line.

  • body (String)

    The email body.

Returns:

  • (String)

    Mail link html tag with specified options.



167
168
169
170
171
172
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 167

def mail_to(email, caption=nil, mail_options={})
  html_options = mail_options.slice!(:cc, :bcc, :subject, :body)
  mail_query = Rack::Utils.build_query(mail_options).gsub(/\+/, '%20').gsub('%40', '@').gsub('&', '&amp;')
  mail_href = "mailto:#{email}"; mail_href << "?#{mail_query}" if mail_query.present?
  link_to((caption || email), mail_href, html_options)
end

#meta_tag(content, options = {}) ⇒ String

Creates a meta element with the content and given options.

Examples:

# Generates: <meta name="keywords" content="weblog,news">
meta_tag "weblog,news", :name => "keywords"

# Generates: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
meta_tag "text/html; charset=UTF-8", 'http-equiv' => "Content-Type"

Parameters:

  • content (String)

    The content for the meta tag.

  • options (Hash) (defaults to: {})

    The html options for the meta tag.

Returns:

  • (String)

    Meta html tag with specified options.



192
193
194
195
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 192

def meta_tag(content, options={})
  options.reverse_merge!("content" => content)
  tag(:meta, options)
end

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.

Examples:

stylesheet_link_tag 'style', 'application', 'layout'

Parameters:

  • sources (Array<String>)

    Splat of css source paths

  • options (Hash) (defaults to: {})

    The html options for the link tag

Returns:

  • (String)

    Stylesheet link html tag for sources with specified options.



254
255
256
257
258
259
260
# File 'lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/asset_tag_helpers.rb', line 254

def stylesheet_link_tag(*sources)
  options = sources.extract_options!.symbolize_keys
  options.reverse_merge!(:media => 'screen', :rel => 'stylesheet', :type => 'text/css')
  sources.flatten.map { |source|
    tag(:link, options.reverse_merge(:href => asset_path(:css, source)))
  }.join("\n").html_safe
end