Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
In Ruby Reports (Ruport), virtually all of our users will need to work with tabular data at some point. This data can come from any number of sources, ranging from a simple CSV file to a complex data analysis procedure that produces tables as its output. Providing a simple, clear API that works well for all of these cases is a bit of a challenge. Although the ultimate goal of each of the different tasks that we can imagine is fundamentally the same, the means for accomplishing them are quite different.
Our first instinct was to reflect this in the API, resulting in several different constructors for the different ways of building tables: