Sha256: 4d426d9f229fb778ac677934fb63579b282c06995591c92e1b57b90f90bf6efd

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

# Rails helper for producing Twitter Bootstrap badges
#
# See: http://twitter.github.io/bootstrap/components.html#labels-badges
# 
# Default badge:
#
# @example
#   badge('Default')
#
#   badge('Info', :info)
#
#   badge('Warning', :warning, id: 'warn-id', class: 'more-class', my_key: 'my_value')
#
module Bootstrap::BadgeHelper
  InvalidBadgeTypeError = Class.new(StandardError)
  
  BADGE_TYPES = %w(default primary success info warning danger)

  # Returns html for a Bootstrap badge.
  #
  # @overload badge(text, options={})
  #   Returns html for +default+ badge
  #   @param [String] text Text of badge
  #   @param [Hash] options Html attributes for badge <span>
  # @overload badge(text, badge_type, options={})
  #   Returns html for badge of type _badge_type_
  #   @param [String] text Text of badge
  #   @param [String, Symbol] badge_type one of BADGE_TYPES
  #   @param [Hash] options Html attributes for badge <span>
  # @return [String] html for badge
  # @raise [InvalidBadgeTypeError] When a badge type is passed and isn't one of the BADGE_TYPES
  def badge(*args)
    text = args.shift
    options = add_badge_classes(*args)
    content_tag(:span, text, options)
  end

  private
  
  def add_badge_classes(*args)
    options = canonicalize_options(args.extract_options!)
    validate_badge_types(args)
    classes = ['label', 'label-pill'] + args.map { |arg| "label-#{arg}" }
    classes << 'label-default' if classes == ['label', 'label-pill']
    ensure_class(options, classes)
  end
  
  def validate_badge_types(badge_types)
    badge_types.each { |e| raise(InvalidBadgeTypeError, e.inspect) unless BADGE_TYPES.include?(e.to_s) }
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bootstrap-view-helpers-0.0.14 app/helpers/bootstrap/badge_helper.rb