class Fontlike::Transmuter
Constants
- ALL_CHAR_BASE_LOWER
- ALL_CHAR_BASE_UPPER
- CHAR_BASE
- DEFAULT_BASE
Attributes
lower_base[RW]
upper_base[RW]
Public Class Methods
new(options)
click to toggle source
# File lib/fontlike/transmuter.rb, line 19 def initialize(options) if options[:style] == :random self.upper_base = lambda { ALL_CHAR_BASE_UPPER.sample } self.lower_base = lambda { ALL_CHAR_BASE_LOWER.sample } else up = CHAR_BASE.fetch(options[:style], DEFAULT_BASE).fetch(:upper) lw = CHAR_BASE.fetch(options[:style], DEFAULT_BASE).fetch(:lower) self.upper_base = lambda { up } self.lower_base = lambda { lw } end end
Public Instance Methods
transmute(str)
click to toggle source
# File lib/fontlike/transmuter.rb, line 32 def transmute(str) str.split("").map do |char| if char.match(/[A-Z]/) *prefix, suffix = upper_base.call last = suffix + char.ord - 'A'.ord [*prefix, last].pack('U*') elsif char.match(/[a-z]/) *prefix, suffix = lower_base.call last = suffix + char.ord - 'a'.ord [*prefix, last].pack('U*') else char end end.join("") end