These are the voyages...
--------------- ________________ _ ------------------ \__(=======/_=_/____.--'-`--.___ ---------------- \ \ `,--,-.___.----' ------------ .--`\\--'../ -------- '---._____.|]
This gem exposes an executable on the commandline that outputs ASCII art of a ship that bore the name "U.S.S. Enterprise".
gem install uss-enterprise
$ enterprise #=> outputs a random Enterprise.
You can also supply the
-l flag, followed by an argument to specify a specific enterprise.
Acceptable arguments produce the following ships:
rev # => U.S.S Enterprise (1775) - US Navy sloop during the American Revolution
cvn # => U.S.S. Enterprise CVN-65 - Nimitz class aircraft carrier
ov # => Enterprise O.V.-101 - Test unit spaceshuttle
nx # => Enterprise NX-01
none # => Enterprise NCC-1701
a # => Enterprise NCC-1701-A
b # => Enterprise NCC-1701-B
c # => Enterprise NCC-1701-C
d # => Enterprise NCC-1701-D
e # => Enterprise NCC-1701-E
voy # => Voyager NCC-74656
Incorrect parameters cause it to supply usage instructions.
enterprise [-l] [arg] to your
.zshrc or whatever so you are greeted with an awesome ship every time you load the terminal.
Isn't perfect. The major stuff that happens behind the scenes has tests to cover it, but the more transparent methods and classes (i.e. the ones that handle/parse the arguments) don't.
Should probably do a major refactor and reorganization of the way the thing works instead of trying to write tests to cover this, because it won't be easy and the control flow could probably be simplified anyways.
First, a major refactor. The control flow in here is kinda nuts. Good lesson that designing before building is important.
That needs to come first, because I want to stick this guy into a silly Rails app that will just give you different Enterprises in a webpage.
ShipChooserclasses should be combined into a
Shipclass, with methods for defining group, class, blueprint, and finally building.
- pull all ship specific info into a
Shipsmodule, so that updating the gem with new ships later on is simple.
class Ship include Ships # module defining types, classes, and blueprints def define_type # replaces ship group, which is less than clear # Am I a seaship, orbitalship, or starship? end def define_class # Am I a sloop or a carrier (or whatever is appropriate for my type) end def draw_blueprint # What do I look like? # returns a blueprint string end def construct # puts blueprint string, this is an optional step, because the draw_blueprint method can also hand the blueprint to other calls (say, a Rails app that wants to insert it into some HTML <pre> tags) end end