Dino catalog2

FilteringEnumerable library: Wraps Enumerables with filters against reader methods, providing filtered views of enumerable contents
TokenSelectable: Mixin provides a class with factory method returning instances corresponding to input tokens
Dinodex library: Data domain of dinosaurs, including constrained sets of data items describing characteristics dinosaurs that can recognize input tokens corresponding to their value and print themselves for output
Dinodex::CSVLoader: CSV file processor constructing dinosaurs
Dinodex::CommandLineInterface: User input  processor that builds a filter to apply against dinosaur list

example:

dino_catalog.rb -f dinodex.csv -d continent=Africa -f african_dinosaurs.csv -l -j -p cretaceous

While "ambulate" is a cool word and one that I want to make a part of my everyday vocabulary now, I did have to look up what it meant. That's probably not so good for writing code that will be easy for lots of people to understand quickly.