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

I don't like this pattern. Just setting one hash value and then returning the whole thing can definitely be done in a more clear way.