lib/prawn/icon/compatibility.rb
# frozen_string_literal: true
# compatibility.rb - Prawn::Icon FontAwesome 4/5 compatibility shim.
#
# Copyright March 2018, Jesse Doyle. All rights reserved.
#
# This is free software. Please see the LICENSE and COPYING files for details.
module Prawn
class Icon
class Compatibility
# @deprecated Use {Prawn::Icon::Compatibility.shims} instead
SHIMS = YAML.load_file(
Prawn::Icon.configuration.font_directory.join(
'fa4',
'shims.yml'
)
).freeze
class << self
def shims
@shims ||= YAML.load_file(
Icon.configuration.font_directory.join('fa4', 'shims.yml').to_s
)
end
end
attr_accessor :key
def initialize(opts = {})
self.key = opts.fetch(:key)
end
def translate(io = $stderr)
@translate ||= if key.start_with?('fa-')
map.tap { |replaced| warning(replaced, key, io) }
else
key
end
end
private
def map
self.class.shims.fetch(key) do
# FontAwesome shim metadata assumes "fas" as the default
# font family if not explicity referenced.
"fas-#{key.sub(/fa-/, '')}"
end
end
def warning(new_key, old_key, io)
io.puts <<~DEPRECATION
[Prawn::Icon - DEPRECATION WARNING]
FontAwesome 4 icon was referenced as '#{old_key}'.
Use the FontAwesome 5 icon '#{new_key}' instead.
This compatibility layer will be removed in Prawn::Icon 4.0.0.
DEPRECATION
end
end
end
end