in app/components/primer/octicon_component.rb [34:82]
def initialize(icon_name = nil, icon: nil, size: SIZE_DEFAULT, use_symbol: false, **system_arguments)
icon_key = icon_name || icon
if system_arguments[:height].present? && system_arguments[:height].to_i < 16 || system_arguments[:width].present? && system_arguments[:width].to_i < 16
system_arguments.delete(:height)
system_arguments.delete(:width)
end
cache_key = Primer::Octicon::Cache.get_key(
symbol: icon_key,
size: size,
height: system_arguments[:height],
width: system_arguments[:width]
)
@system_arguments = system_arguments
@system_arguments[:tag] = :svg
@system_arguments[:aria] ||= {}
@use_symbol = use_symbol
if @system_arguments[:aria][:label] || @system_arguments[:"aria-label"]
@system_arguments[:role] = "img"
else
@system_arguments[:aria][:hidden] = true
end
if (cache_icon = Primer::Octicon::Cache.read(cache_key))
@icon = cache_icon
else
octicon_options = {
height: @system_arguments[:height] || SIZE_MAPPINGS[fetch_or_fallback(SIZE_OPTIONS, size, SIZE_DEFAULT)],
width: @system_arguments[:width]
}
octicon_options.compact!
@icon = Octicons::Octicon.new(icon_key, octicon_options)
Primer::Octicon::Cache.set(cache_key, @icon)
end
@system_arguments[:classes] = class_names(
@icon.options[:class],
@system_arguments[:classes]
)
@system_arguments.merge!(@icon.options.except(:class, :'aria-hidden'))
end