Be Data-Driven with XLSX and CSV¶
Squib supports importing data from ExcelX (.xlsx) files and Comma-Separated Values (.csv) files. Because Squib Thinks in Arrays, these methods are column-based, which means that they assume you have a header row in your table, and that header row will define the name of the column.
Squib::DataFrame, or a Hash of Arrays¶
In both DSL methods, Squib will return a “data frame” (literally of type
Squib::DataFrame). The best way to think of this is a
Arrays, where each column is a key in the hash, and every element of each Array represents a data point on a card.
The data import methods expect you to structure your Excel sheet or CSV like this:
- First row should be a header - preferably with concise naming since you’ll reference it in Ruby code
- Rows should represent cards in the deck
- Columns represent data about cards (e.g. “Type”, “Cost”, or “Name”)
Of course, you can always import your game data other ways using just Ruby (e.g. from a REST API, a JSON file, or your own custom format). There’s nothing special about Squib’s methods in how they relate to
Squib::Deck other than their convenience.
Squib::DataFrame class provides much more than what a
Hash provides, however. The Squib::DataFrame
If you want more than one copy of a card, then have a column in your data file called
Qty and fill it with counts for each card. Squib’s xlsx and xlsx methods will automatically expand those rows according to those counts. You can also customize that “Qty” to anything you like by setting the explode option (e.g.
explode: 'Quantity'). Again, see the specific methods for examples.