module Avatarro
Constants
- GRADIENTS
- VERSION
Public Class Methods
image(initials, args = {})
click to toggle source
# File lib/avatarro.rb, line 48 def Avatarro.image(initials, args = {}) "data:image/svg+xml;base64,#{Base64.encode64(svg(initials, args))}".html_safe end
svg(initials, args = {})
click to toggle source
# File lib/avatarro.rb, line 52 def Avatarro.svg(initials, args = {}) template(initials, args) end
Private Class Methods
format_initials(initials)
click to toggle source
# File lib/avatarro.rb, line 86 def Avatarro.format_initials(initials) if initials.size > 2 initials.scan(/([[:alpha:]])[[:alpha:]]*/).flatten.join.upcase else initials end end
index(initials)
click to toggle source
# File lib/avatarro.rb, line 58 def Avatarro.index(initials) initials.chars.inject(0) {|sum, e| sum+= e.ord; sum} end
template(initials, args = {})
click to toggle source
# File lib/avatarro.rb, line 62 def Avatarro.template(initials, args = {}) data = args[:random] ? GRADIENTS.sample : GRADIENTS[index(initials) % GRADIENTS.size] start = args[:start].presence || data[0] finish = args[:solid] ? data[0] : (args[:finish].presence || data[1]) degree = args[:degree].presence || data[2].presence || 90 color = args[:color].presence || data[3].presence || '#FFF' width = args[:width].presence || 64 height = args[:height].presence || 64 gradient_id = "gradient_#{Time.now.to_i}_#{rand(1_000_000)}" %{<?xml version="1.0" encoding="UTF-8"?> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="#{width}" height="#{height}" viewBox="0 0 #{width} #{height}"> <linearGradient id="#{gradient_id}" gradientTransform="rotate(#{degree})"> <stop stop-color="#{start}" offset="0%" /> <stop stop-color="#{finish}" offset="100%" /> </linearGradient> <rect width="100%" height="100%" fill="url(##{gradient_id})" /> <text fill="#{color}" font-family="Open Sans,Helvetica,Arial,sans-serif" font-size="#{1 + height / 2}" font-weight="500" x="50%" y="55%" dominant-baseline="middle" text-anchor="middle"> #{Avatarro.format_initials initials} </text> </svg> } end