Sha256: 81048955ed0a7cc683ca28486e6c76c72bae54da2b04572f77defa1f58ffe392

Contents?: true

Size: 1.71 KB

Versions: 12

Compression:

Stored size: 1.71 KB

Contents

module Artii
  module Figlet

    class Typesetter

      def initialize(font, options = nil)
        @font = font
        @options = options || {}
        @smush = @options.has_key?(:smush) ? @options[:smush] : true
      end

      def [](obj)
        result = []
        str = obj.to_s
        str.length.times do |i|
          char = str[i]
          unless @font.has_char?(char.ord)
            if @font.has_char?(0)
              char = 0
            else
              next
            end
          end
          @font.height.times do |j|
            line = @font[char.ord][j]
            if result[j].nil?
              result[j] = line
            else
              result[j] = @font.right_to_left?? (line + result[j]) : (result[j] + line)
            end
          end
          if @font.old_layout > -1 && i > 0
            diff = -1
            @font.height.times do |j|
              if match = /\S(\s*\x00\s*)\S/.match(result[j])
                len = match[1].length
                diff = (diff == -1 ? len : min(diff, len))
              end
            end
            diff -= 1
            if diff > 0
              @font.height.times do |j|
                if match = /\x00(\s{0,#{diff}})/.match(result[j])
                  b = diff - match[1].length
                  result[j] = result[j].sub(/\s{0,#{b}}\x00\s{#{match[1].length}}/, "\0")
                end
              end
            end
            smush[result] if @smush
          end
        end
        return result.join("\n").gsub(/\0/, '').gsub(@font.hard_blank, ' ')
      end


      private

      def min(a, b)
        a > b ? b : a
      end

      def smush
        @smusher ||= Smusher.new(@font)
      end

    end

  end # module Figlet
end # module Artii

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
lotrd-0.1.9 vendor/cache/ruby/2.6.0/gems/artii-2.1.2/lib/figlet/typesetter.rb
lotrd-0.1.8 vendor/cache/ruby/2.6.0/gems/artii-2.1.2/lib/figlet/typesetter.rb
lotrd-0.1.6 vendor/cache/ruby/2.6.0/gems/artii-2.1.2/lib/figlet/typesetter.rb
lotrd-0.1.5 vendor/cache/ruby/2.6.0/gems/artii-2.1.2/lib/figlet/typesetter.rb
pokedex-terminal-0.2.8 vendor/bundle/ruby/2.7.0/gems/artii-2.1.2/lib/figlet/typesetter.rb
pokedex-terminal-0.2.7 vendor/bundle/ruby/2.7.0/gems/artii-2.1.2/lib/figlet/typesetter.rb
pokedex-terminal-0.2.6 vendor/bundle/ruby/2.7.0/gems/artii-2.1.2/lib/figlet/typesetter.rb
pokedex-terminal-0.2.5 vendor/bundle/ruby/2.7.0/gems/artii-2.1.2/lib/figlet/typesetter.rb
pokedex-terminal-0.2.4 vendor/bundle/ruby/2.7.0/gems/artii-2.1.2/lib/figlet/typesetter.rb
artii-2.1.2 lib/figlet/typesetter.rb
artii-2.1.1 lib/figlet/typesetter.rb
artii-2.1.0 lib/figlet/typesetter.rb