app/helpers/bmc/font_awesome_helper.rb in bmc-1.2.1 vs app/helpers/bmc/font_awesome_helper.rb in bmc-1.3.0
- old
+ new
@@ -1,67 +1,28 @@
module BMC::FontAwesomeHelper
- def icon(id, fa_style: nil, size: nil, spin: false, **options)
- id = id.to_s.tr("_", "-").to_sym
+ def fa_s(id, **options)
+ _bmc_fa_icon(id, fa_style: "fas", **options)
+ end
- if fa_style.nil?
- fa_style = BMC::FontAwesomeHelper.default_fa_style_for_id(id)
- end
+ def fa_r(id, **options)
+ _bmc_fa_icon(id, fa_style: "far", **options)
+ end
+ def fa_b(id, **options)
+ _bmc_fa_icon(id, fa_style: "fab", **options)
+ end
+
+ def _bmc_fa_icon(id, fa_style: nil, size: nil, spin: false, **options)
+ id = id.to_s.tr("_", "-").to_sym
+
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_style
css_classes << "fa-#{size}" if size
css_classes << "fa-spin" if spin
attributes = options.merge(class: css_classes.sort.join(" ")).sort.to_h
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 database_url
- short_version = version.split(".")[0, 3].join(".") # 1.20.14.2 => 1.20.14
- url = "https://raw.githubusercontent.com/FortAwesome/Font-Awesome/#{short_version}/metadata/icons.yml"
-
- if Gem::Version.new(short_version) < Gem::Version.new("5.6.0")
- url = url.gsub("/metadata", "/advanced-options/metadata")
- end
-
- url
- end
-
- def download_database!
- require "open-uri"
- data = URI.parse(database_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 BMC::FontAwesomeHelper.database.dig(id, :styles).to_a.first
- end
-
- raise "invalid font-awesome-sass version"
- end
- end # class << self
end