Sha256: 76816d9284706a17d7609828c883a2ccac86ad1722e9f8d8267cd5af7274b941

Contents?: true

Size: 2 KB

Versions: 59

Compression:

Stored size: 2 KB

Contents

# frozen_string_literal: true

module UiBibz::Utils
  # Glyph changer
  #
  #  => ui_link 'My link', url: '#', glyph: { type: :group, items: [{ name: 'circle', stataus: :danger },{ name: 'times', inverse: true, transform:'shrink-6'}] }
  class GlyphChanger
    def initialize(glyph_options, options = {})
      @glyph_options = glyph_options
      @options       = options
    end

    def render
      @glyph_options.is_a?(Hash) ? glyph_or_glyph_group : glyph_by_hash
    end

    private

    def glyph_or_glyph_group
      @glyph_options[:type] == :group ? transform_to_glyph_group : glyph_by_hash
    end

    def format_opts
      glyph_name      = @glyph_options.try(:[], :name)
      glyph_opts      = @glyph_options
      glyph_html_opts = @options[:html_options] || {}
      # glyph_html_opts = glyph_html_opts.merge(@options[:text] ? {} : { title: @options[:content] })
      glyph_items     = @glyph_options.try(:[], :items) || []

      [glyph_name, glyph_opts, glyph_html_opts, glyph_items]
    end

    def glyph_by_hash
      if @glyph_options.is_a?(Hash)
        glyph_name, glyph_opts, glyph_html_opts = format_opts
      else
        glyph_name      = @glyph_options
        glyph_opts      = @options
        # title           = [(@options[:content] unless @options[:text]), ("<kbd>#{ @options[:shortcut] }</kbd>" unless @options[:shortcut].nil?)].compact.join(" ")
        glyph_html_opts = @options[:html_options] || {}
        # glyph_html_opts = glyph_html_opts.merge(title.blank? ? {} : { title: title.html_safe })
      end

      UiBibz::Ui::Core::Icons::Glyph.new(glyph_name, glyph_opts, glyph_html_opts).render unless glyph_name.nil?
    end

    def transform_to_glyph_group
      _, glyph_opts, glyph_html_opts, glyph_items = format_opts

      UiBibz::Ui::Core::Icons::GlyphGroup.new(glyph_opts, glyph_html_opts).tap do |gg|
        glyph_items.each do |item|
          gg.send(item[:type] || :glyph, item[:name] || item[:content], item, item[:html_options] || {})
        end
      end.render
    end
  end
end

Version data entries

59 entries across 59 versions & 1 rubygems

Version Path
ui_bibz-4.0.0.beta16 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta15 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta14 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta13 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta10 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta9 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta8 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta7 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta6 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta4 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-4.0.0.beta3 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-3.0.13 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-3.0.12 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-3.0.11 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-3.0.10 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-3.0.9 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-3.0.8 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-3.0.7 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-3.0.6 lib/ui_bibz/utils/glyph_changer.rb
ui_bibz-3.0.5 lib/ui_bibz/utils/glyph_changer.rb