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