[QUIZ] Big Words (#204)

Daniel Moore wrote:

## Big Words (#204)

This quiz immediately reminded me of FIGlet[1]. A reimplementation of
FIGlet in Ruby seemed to be a sensible way to solve this quiz, taking
into account the hundreds of fonts already available in the FIGlet format
(saving me from creating my own font). Fortunately I wasn't the first
one to have that idea: the "Text" gem[2] includes a Ruby implementation
of FIGlet! So I couldn't resist to do this:

  #!/usr/bin/env ruby
  require 'rubygems'
  require 'text'
  
  def big_word(str, fontfile='banner.flf')
    font = Text::Figlet::Font.new(fontfile)
    figlet = Text::Figlet::Typesetter.new(font)
    figlet[str]
  end
  
  if __FILE__ == $0
    while str = ARGV.shift
      puts big_word(str)
    end
  end

Sample run:

  reima@marvin:~/devel/ruby/quiz/204$ ./big_word.rb "Ruby Quiz"
   ###### #####
   # # # # ##### # # # # # # # ######
   # # # # # # # # # # # # # #
   ###### # # ##### # # # # # # #
   # # # # # # # # # # # # # #
   # # # # # # # # # # # # #
   # # #### ##### # #### # #### # ######

The font file needed to run the script can be obtained from [3]. Or pick
any font from the font database[4] you fancy and change the file name in
the script.

-Matthias

[1]: http://www.figlet.org/
[2]: http://text.rubyforge.org/
[3]: http://www.figlet.org/fonts/banner.flf
[4]: http://www.figlet.org/fontdb.cgi

This week's quiz was solved by Matthias Reitinger. Let's check out the solution:

    require 'rubygems'
    require 'text'

    def big_word(str, fontfile='banner.flf')
      font = Text::Figlet::Font.new(fontfile)
      figlet = Text::Figlet::Typesetter.new(font)
      figlet[str]
    end

Matthias uses the `Text` gem[1] to display fonts using the FIGlet[2]
format. The `big_word` method takes an optional font file parameter to
allow different styles. It operates by loading the file, creating a
FIGlet Typesetter from the font, and passing the input string to the
Typesetter. An easy to use and straightforward library.

There are a couple of prerequisites to use the program, though. You'll
need the `Text` gem and a font file[3]. I found that when installing
the gem, I needed to use the command `gem install Text`; the command
with lowercase `text` wouldn't work for me. Matthias also links to the
FIGlet font database[4] where there are some amazing fonts available.

In addition to FIGlet, the `Text` gem includes many other useful
libraries like Metaphone and Soundex. The Metaphone component of the
`Text` gem was used way back on Quiz #140[5] to sound out T-Shirts.

Thank you, Matthias, for sharing this useful library.

     ____ __ _____
    /\ _`\ /\ \ /\ __`\ __
    \ \ \L\ \ __ __\ \ \____ __ __ \ \ \/\ \ __ __/\_\ ____
     \ \ , / /\ \/\ \ \ '__`\/\ \/\ \ \ \ \ \ \/\ \/\ \/\ \/\_ ,`\
      \ \ \\ \\ \ \_\ \ \ \L\ \ \ \_\ \ \ \ \\'\\ \ \_\ \ \ \/_/ /_
       \ \_\ \_\ \____/\ \_,__/\/`____ \ \ \___\_\ \____/\ \_\/\____\
        \/_/\/ /\/___/ \/___/ `/___/> \ \/__//_/\/___/ \/_/\/____/
                                   /\___/
                                   \/__/

[1]: http://text.rubyforge.org/
[2]: http://www.figlet.org/
[3]: http://www.figlet.org/fonts/banner.flf
[4]: http://www.figlet.org/fontdb.cgi
[5]: http://rubyquiz.com/quiz140.html