R
Ruby Quiz
The three rules of Ruby Quiz:
1. Please do not post any solutions or spoiler discussion for this quiz until
48 hours have passed from the time on this message.
2. Support Ruby Quiz by submitting ideas as often as you can:
http://www.rubyquiz.com/
3. Enjoy!
Suggestion: A [QUIZ] in the subject of emails about the problem helps everyone
on Ruby Talk follow the discussion. Please reply to the original quiz message,
if you can.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
by Robert Dober
Command Line Interfaces very often support command abbreviations The purpose of
this quiz is to automatically dispatch to methods on unambiguous abbreviations,
ask the user for clarification in case of ambiguous abbreviations and raise a
NoMethodError in case of an abbreviation that cannot be matched to any command.
Behavior of other methods defined in a class shall not be altered.
Be creative about the interface and about behavior. I have OTOH defined a small
test suite that makes assumptions about the interface and behavior. But the test
suite is only there for your convenience.
What is said below applies to the test suite and shall in no way inhibit any
alternative ideas.
class Mine
abbrev :step, :next, :stop
abbrev :exit
end
Mine.new.e # should resolve to exit
Mine.new.st # should prompt the user
Mine.new.a # should still raise a NoMethodError
Abbreviation targets themselves are not expanded.
class Nine
abbrev :hash
abbrev :has
end
Nine.new.ha # => [:hash, :has]
Nine.new.has # => NoMethodError
class Nine
def has; 42; end
end
Nine.new.has # => 42
In order to allow for automated testing the test code shall not prompt the user
in case of an ambiguous abbreviation but return an array containing all (and
only all) possible completions as symbols. Note that the test suite sets the
global variable $TESTING to a true value for your convenience.
http://rubyquiz.com/test-abbrev.rb
1. Please do not post any solutions or spoiler discussion for this quiz until
48 hours have passed from the time on this message.
2. Support Ruby Quiz by submitting ideas as often as you can:
http://www.rubyquiz.com/
3. Enjoy!
Suggestion: A [QUIZ] in the subject of emails about the problem helps everyone
on Ruby Talk follow the discussion. Please reply to the original quiz message,
if you can.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
by Robert Dober
Command Line Interfaces very often support command abbreviations The purpose of
this quiz is to automatically dispatch to methods on unambiguous abbreviations,
ask the user for clarification in case of ambiguous abbreviations and raise a
NoMethodError in case of an abbreviation that cannot be matched to any command.
Behavior of other methods defined in a class shall not be altered.
Be creative about the interface and about behavior. I have OTOH defined a small
test suite that makes assumptions about the interface and behavior. But the test
suite is only there for your convenience.
What is said below applies to the test suite and shall in no way inhibit any
alternative ideas.
class Mine
abbrev :step, :next, :stop
abbrev :exit
end
Mine.new.e # should resolve to exit
Mine.new.st # should prompt the user
Mine.new.a # should still raise a NoMethodError
Abbreviation targets themselves are not expanded.
class Nine
abbrev :hash
abbrev :has
end
Nine.new.ha # => [:hash, :has]
Nine.new.has # => NoMethodError
class Nine
def has; 42; end
end
Nine.new.has # => 42
In order to allow for automated testing the test code shall not prompt the user
in case of an ambiguous abbreviation but return an array containing all (and
only all) possible completions as symbols. Note that the test suite sets the
global variable $TESTING to a true value for your convenience.
http://rubyquiz.com/test-abbrev.rb