Auxiliar de fonte do google simples para Rails 4

Este auxiliar de tag de fonte é feito para um manuseio fácil das tags de link que contêm fontes do Google.

Aceita os seguintes formatos:

<%= font_tag(:open_sans, 400, 300) %>
<%= font_tag([:open_sans, 400, 300], [:lato, 400, 300]) %>
<%= font_tag({ name: :open_sans, sizes: [400, 300] }, { name: :lato, sizes: [400, 300]}) %>
def font_tag(fontname_hash_or_array, *args)
#
# The message error.
#
message
= 'The font_tag() helper receives a single font definition in the format :fontname, size1, size2, '
message
+= 'a multiple font definition in an array format [:fontname1, size1, size2], [:fontname2, size1, size2], '
message
+= 'or a multiple font definition in the hash format {name: :fontname1, sizes: [size1, size2]},{name: :fontname2, sizes: [size1, size2]}'

case fontname_hash_or_array
when Symbol , String
fontname
= fontname_hash_or_array
#
# If the `fontname_hash_or_array` param is a symbol, then it's converted and processed as a string.
#
fontname
= fontname.to_s.humanize.titleize if fontname.class == Symbol
fontname
= fontname.split(/ /).join('+')
#
# For a better understanding of the context
#
sizes
= args
size_definition
= (sizes and !sizes.empty?) ? ":#{sizes.join(',')}" : nil
raw
"<link href='http://fonts.googleapis.com/css?family=#{fontname}#{size_definition}' rel='stylesheet' type='text/css'/>"
when Hash
first_hash
= fontname_hash_or_array
tag
= font_tag first_hash[:name], first_hash[:sizes]
#
# For a better understanding of the context
#
hashes
= args
unless (!hashes || hashes.empty?)
hashes
.each do |hash|
raise message
unless hash.class == Hash
tag
+= "n"
tag
+= font_tag hash[:name], hash[:sizes]
end
end
tag

when Array
first_array
= fontname_hash_or_array
tag
= font_tag first_array.shift, first_array
#
# For a better understanding of the context
#
arrays
= args
unless (!arrays || arrays.empty?)
arrays
.each do |array|
raise message
unless array.class == Array
tag
+= "n"
tag
+= font_tag array.shift, array
end
end
tag

else
raise message

end
end