Sha256: 5b05a01c620b5a874c0cf3ae24651dea31bd83ea9cc0de897156fb47d7c167e5

Contents?: true

Size: 1.32 KB

Versions: 8

Compression:

Stored size: 1.32 KB

Contents

require_relative 'parse_methods'

class BiIconParser
  include ActionView::Helpers::TagHelper
  include ParseMethods

  attr_reader :icon, :options, :data, :style, :text, :title, :right, :attrs

  def initialize(icon, options)
    @icon = icon
    @options = options
    @data = options[:data]
    @style = options[:style]
    @text = options[:text]
    @title = options[:title]
    @right = options[:right] == true
    @attrs = options.except(:text, :class, :icon, :size, :right)
  end

  def classes
    @classes ||= parse_classes
  end

  def sizes
    @sizes ||= @options[:size].nil? ? '' : arr_with_bi(@options[:size]).uniq.join(' ').strip
  end

  def get_content_tag
    if @text.nil?
      icon_content_tag
    else
      @right ? (text_content_tag + icon_content_tag) : (icon_content_tag + text_content_tag)
    end
  end

  private

  def parse_classes
    tmp = []
    tmp << icon_type(@options[:type])
    tmp += arr_with_bi(@icon)
    tmp += @options[:class].split(' ') unless @options[:class].nil?
    tmp += arr_with_bi(@options[:size]) unless @options[:size].nil?
    tmp.uniq.join(' ').strip
  end

  def icon_content_tag
    content_tag(:i, nil, class: classes, **@attrs)
  end

  def text_content_tag
    content_tag(:span, @text, class: "#{@right ? 'bi-text-r' : 'bi-text'}#{' ' unless sizes.blank?}#{sizes}", style: @style)
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
bootstrap_icons_rails-1.113.02 lib/bootstrap_icons_rails/parsers/bi_icon_parser.rb
bootstrap_icons_rails-1.113.01 lib/bootstrap_icons_rails/parsers/bi_icon_parser.rb
bootstrap_icons_rails-1.91.01 lib/bootstrap_icons_rails/parsers/bi_icon_parser.rb
bootstrap_icons_rails-1.83.01 lib/bootstrap_icons_rails/parsers/bi_icon_parser.rb
bootstrap_icons_rails-1.72.01 lib/bootstrap_icons_rails/parsers/bi_icon_parser.rb
bootstrap_icons_rails-1.61.01 lib/bootstrap_icons_rails/parsers/bi_icon_parser.rb
bootstrap_icons_rails-1.50.00 lib/bootstrap_icons_rails/parsers/bi_icon_parser.rb
bootstrap_icons_rails-1.41.01 lib/bootstrap_icons_rails/parsers/bi_icon_parser.rb