Big Words (#204)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

The three rules of Ruby Q.:

  1. Please do not post any solutions or spoiler discussion for this
    quiz until 48 hours have elapsed from the time this message was
    sent.

  2. Support Ruby Q. by submitting ideas and responses
    as often as you can!
    Visit: http://rubyquiz.strd6.com/suggestions

  3. Enjoy!

Suggestion: A [QUIZ] in the subject of emails about the problem
helps everyone on Ruby T. follow the discussion. Please reply to
the original quiz message, if you can.

RSS Feed: http://rubyquiz.strd6.com/quizzes.rss

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Big Words (#204)

Wassup Rubyists,

This weeks quiz was submitted by Alan.

Write a method that will return a large version of a string you provide
it.

(Copy the output into a monospaced buffer for better viewing)

puts big_word(‘BIGWORD’)

####### ##### # # ##### ######

# # # # # # # # # #

# # ### # # # # # ###### #

# # # # # # # # # # # #

####### ##### ## ## ##### # #

For extra credit you may include additional font styles, such as italic.

puts big_word(‘BIGWORD’, ‘i’)

####### ##### # # ##### ######

# # # # # # # # # #

# # ### # # # # # ###### #

# # # # # # # # # # # #

####### ##### ## ## ##### # #

Have Fun!

Daniel M. wrote:

Big Words (#204)

This quiz immediately reminded me of FIGlet1. 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” gem2 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 Q.”

# # # ##### # # # # # # #

# # # # # # # # # # # #

# # ##### # # # # # #

# # # # # # # # # # # #

# # # # # # # # # # #

# #### ##### # #### # #### #

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

-Matthias

This week’s quiz was solved by Matthias R… 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 gem1 to display fonts using the FIGlet2
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 file3. 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 database4 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 #1405 to sound out T-Shirts.

Thank you, Matthias, for sharing this useful library.

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