Sha256: c1e09ac609832bdacab6273f448c62bc4c59a4bff148196ca95d693a82717295
Contents?: true
Size: 1.59 KB
Versions: 2
Compression:
Stored size: 1.59 KB
Contents
module Figlet class Smusher def initialize(font) @font = font end def [](result) todo = false @font.height.times do |j| result[j] = result[j].sub(pattern) { todo, x = callback(todo, $1, $2); x } end @font.height.times do |j| result[j] = if todo result[j].sub(/\s\x00(?!$)|\x00\s/, '').sub(/\x00(?!$)/, '') else result[j].sub(/\x00(?!$)/, '') end end end def pattern @pattern ||= /([^#{@font.hard_blank}\x00\s])\x00([^#{@font.hard_blank}\x00\s])/ end def symbols @@symbols ||= { 24 => '|/\\[]{}()<>', 8 => {'[' => ']', ']' => '[', '{' => '}', '}' => '{', '(' => ')', ')' => '('}, 16 => {"/\\" => '|', "\\/" => 'Y', '><' => 'X'} } end def old_layout?(n) @font.old_layout & n > 0 end def callback(s, a, b) combined = a + b if old_layout?(1) && a == b return true, a elsif old_layout?(2) && ('_' == a && symbols[24].include?(b) || '_' == b && symbols[24].include?(a)) return true, a elsif old_layout?(4) && ((left = symbols[24].index(a)) && (right = symbols[24].index(b))) return true, (right > left ? b : a) elsif old_layout?(8) && (symbols[8].has_key?(b) && symbols[8][b] == a) return true, '|' elsif old_layout?(16) && symbols[16].has_key?(combined) return true, symbols[16][combined] elsif old_layout?(32) && (a == b && @font.hard_blank == a) return true, @font.hard_blank else return s, "#{a}\00#{b}" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
figlet-1.1.0 | lib/figlet/smusher.rb |
figlet-1.0.0 | lib/figlet/smusher.rb |