Sha256: 6dd69b6611d6bd339bcbb3548590065e0d29d82f8de8de2d6c8e535e712ea26f
Contents?: true
Size: 1.54 KB
Versions: 3
Compression:
Stored size: 1.54 KB
Contents
module Agilibox::FontAwesomeHelper def icon(id, fa_style: nil, size: nil, spin: false, **options) id = id.to_s.tr("_", "-").to_sym if fa_style.nil? fa_style = Agilibox::FontAwesomeHelper.default_fa_style_for_id(id) end css_classes = options.delete(:class).to_s.split(" ") css_classes << "icon" css_classes << "fa-#{id}" css_classes << "fa#{fa_style.to_s[0]}" css_classes << "fa-#{size}" if size css_classes << "fa-spin" if spin attributes = options.merge(class: css_classes.sort.join(" ")).sort.to_h content_tag(:span, attributes) {} end class << self def database @database ||= YAML.safe_load(database_yml).deep_symbolize_keys end def database_path Rails.root.join("tmp", "fa_database_#{version}.yml") end def database_yml download_database! unless File.size?(database_path) File.read(database_path) end def download_database! require "open-uri" url = "https://raw.githubusercontent.com/FortAwesome/Font-Awesome/#{FontAwesome::Sass::VERSION}/advanced-options/metadata/icons.yml" data = URI.parse(url).open.read File.write(database_path, data) end def version require "font_awesome/sass/version" FontAwesome::Sass::VERSION end def default_fa_style_for_id(id) return if version.start_with?("4") if version.start_with?("5") return Agilibox::FontAwesomeHelper.database.dig(id, :styles).to_a.first end raise "invalid font-awesome-sass version" end end # class << self end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
agilibox-1.4.1 | app/helpers/agilibox/font_awesome_helper.rb |
agilibox-1.4.0 | app/helpers/agilibox/font_awesome_helper.rb |
agilibox-1.3.6 | app/helpers/agilibox/font_awesome_helper.rb |