class InitialAvatar::Avatar

Attributes

opts[R]
text[R]

Public Class Methods

new(text, options = {}) click to toggle source
# File lib/initial_avatar/avatar.rb, line 8
def initialize(text, options = {})
  @text = text.upcase
  @opts = InitialAvatar.configuration.default_options.merge(options)
end

Public Instance Methods

data_uri() click to toggle source
# File lib/initial_avatar/avatar.rb, line 21
def data_uri
  "data:image/svg+xml;base64,#{Base64.strict_encode64(svg_tag)}"
end
svg_tag() click to toggle source
# File lib/initial_avatar/avatar.rb, line 13
    def svg_tag
      <<~SVG
        <svg xmlns="http://www.w3.org/2000/svg" pointer-events="none" width="#{opts[:size]}" height="#{opts[:size]}" style="background-color: #{color};">
        <text text-anchor="middle" y="50%" x="50%" dy="0.35em" pointer-events="auto" fill="#{opts[:text_color]}" font-family="#{opts[:font_family]}" style="font-weight: #{opts[:font_weight]}; font-size: #{font_size}px;">#{text}</text>
        </svg>
      SVG
    end

Private Instance Methods

color() click to toggle source
# File lib/initial_avatar/avatar.rb, line 27
def color
  return opts[:color] if opts[:color]
  index = (text.ord + opts[:seed]) % InitialAvatar.configuration.colors.length
  InitialAvatar.configuration.colors[index]
end
font_size() click to toggle source
# File lib/initial_avatar/avatar.rb, line 33
def font_size
  opts[:font_size] || opts[:size] / 2
end