ruport 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +6 -0
- data/Rakefile +4 -4
- data/TODO +3 -2
- data/bin/rope +2 -103
- data/examples/pdf_complex_report.rb +53 -0
- data/lib/ruport/config.rb +7 -7
- data/lib/ruport/data/collection.rb +8 -7
- data/lib/ruport/data/groupable.rb +3 -2
- data/lib/ruport/data/record.rb +13 -16
- data/lib/ruport/data/table.rb +89 -18
- data/lib/ruport/format/csv.rb +29 -0
- data/lib/ruport/format/html.rb +40 -0
- data/lib/ruport/format/latex.rb +50 -0
- data/lib/ruport/format/pdf.rb +78 -0
- data/lib/ruport/format/plugin.rb +20 -65
- data/lib/ruport/format/svg.rb +39 -0
- data/lib/ruport/format/text.rb +77 -0
- data/lib/ruport/format/xml.rb +32 -0
- data/lib/ruport/format.rb +1 -159
- data/lib/ruport/generator.rb +158 -0
- data/lib/ruport/layout/component.rb +7 -0
- data/lib/ruport/layout.rb +1 -0
- data/lib/ruport/query.rb +3 -3
- data/lib/ruport/renderer/graph.rb +48 -0
- data/lib/ruport/renderer/table.rb +132 -0
- data/lib/ruport/renderer.rb +193 -0
- data/lib/ruport/report/graph.rb +2 -2
- data/lib/ruport/report.rb +94 -96
- data/lib/ruport/system_extensions.rb +3 -6
- data/lib/ruport.rb +6 -4
- data/test/samples/dates.csv +1409 -0
- data/test/samples/foo.rtxt +3 -0
- data/test/test_collection.rb +0 -14
- data/test/test_config.rb +6 -6
- data/test/test_graph_renderer.rb +97 -0
- data/test/test_groupable.rb +1 -0
- data/test/test_query.rb +325 -324
- data/test/test_record.rb +3 -2
- data/test/test_renderer.rb +74 -0
- data/test/test_report.rb +29 -26
- data/test/test_table.rb +54 -29
- data/test/test_table_renderer.rb +93 -0
- data/test/test_text_table.rb +61 -0
- data/test/unit.log +24 -0
- metadata +41 -63
- data/CHANGELOG +0 -587
- data/examples/basic_grouping.rb +0 -19
- data/examples/fieldless_table.rb +0 -13
- data/examples/latex_table.rb +0 -17
- data/examples/line_graph.rb +0 -22
- data/examples/line_graph_report.rb +0 -23
- data/examples/line_plotter.rb +0 -46
- data/examples/long.txt +0 -24
- data/examples/new_plugin.rb +0 -24
- data/examples/report.rb +0 -35
- data/examples/sample_invoice_report.rb +0 -32
- data/examples/simple_mail.rb +0 -15
- data/examples/simple_table_interface.rb +0 -20
- data/examples/sql_erb.rb +0 -20
- data/examples/template.rb +0 -15
- data/examples/text_processors.rb +0 -13
- data/lib/ruport/format/engine/document.rb +0 -28
- data/lib/ruport/format/engine/graph.rb +0 -18
- data/lib/ruport/format/engine/invoice.rb +0 -23
- data/lib/ruport/format/engine/table.rb +0 -54
- data/lib/ruport/format/engine.rb +0 -108
- data/lib/ruport/format/plugin/csv_plugin.rb +0 -26
- data/lib/ruport/format/plugin/html_plugin.rb +0 -32
- data/lib/ruport/format/plugin/latex_plugin.rb +0 -50
- data/lib/ruport/format/plugin/pdf_plugin.rb +0 -126
- data/lib/ruport/format/plugin/svg_plugin.rb +0 -61
- data/lib/ruport/format/plugin/text_plugin.rb +0 -77
- data/lib/ruport/meta_tools.rb +0 -66
- data/lib/ruport/report/invoice.rb +0 -29
- data/test/_test_groupable.rb +0 -0
- data/test/test_format.rb +0 -39
- data/test/test_format_engine.rb +0 -264
- data/test/test_graph.rb +0 -93
- data/test/test_invoice.rb +0 -32
- data/test/test_latex.rb +0 -20
- data/test/test_meta_tools.rb +0 -14
- data/test/test_plugin.rb +0 -277
- data/test/ts_all.rb +0 -21
data/CHANGELOG
DELETED
@@ -1,587 +0,0 @@
|
|
1
|
-
The current version of Ruby Reports is 0.6.1
|
2
|
-
|
3
|
-
changes since 0.6.0
|
4
|
-
|
5
|
-
- Fixed Table.load() bug. (Now accepts block properly)
|
6
|
-
- 100% C0 coverage for Query via Mocha. (Thanks Marshall!)
|
7
|
-
- Row by row Query iteration no longer grabs entire result set first
|
8
|
-
- Major performance enhancements to Groupable
|
9
|
-
- Reformatted and enhanced API documentation
|
10
|
-
- Added simple table interface example
|
11
|
-
|
12
|
-
changes since 0.5.4
|
13
|
-
|
14
|
-
From Ruport News (http://www.stonecode.org/blog/?cat=14)
|
15
|
-
|
16
|
-
* added ERb support inside SQL queries
|
17
|
-
* a new LaTeX plugin for the table formatting engine
|
18
|
-
* support for summation in data tables
|
19
|
-
* new grouping functionality based on the tagging system
|
20
|
-
* very large performance enhancements in HTML and text rendering
|
21
|
-
* better integration with FasterCSV
|
22
|
-
* some simple interfaces for graphs and data tables
|
23
|
-
* syntactic sugar (shortcuts) for common tasks
|
24
|
-
* support for rerunning reports on timeouts and errors
|
25
|
-
|
26
|
-
changes since 0.5.3
|
27
|
-
|
28
|
-
- Fixed a bug where Table#<< would fail silently if an object could not be
|
29
|
-
converted to a Record
|
30
|
-
|
31
|
-
- Fixed a bug where setting column names after a table was initialized without
|
32
|
-
them caused Table to break.
|
33
|
-
|
34
|
-
- Example added for basic grouping functionality
|
35
|
-
|
36
|
-
- Table#column_names= reworked to address a performance concern.
|
37
|
-
|
38
|
-
- Collection#[] moved to Table#[], since Set#[] is not implemented.
|
39
|
-
|
40
|
-
- Quieted some warnings discovered by pat eyler
|
41
|
-
|
42
|
-
changes since 0.5.2
|
43
|
-
|
44
|
-
- Fixed a bug in Format Engine which required a data attribute to be specified.
|
45
|
-
(will still provide an accessor for this, but no more do you *need* it)
|
46
|
-
|
47
|
-
- Fixed a bug in rope's build.rb that prevented generation of multiple reports.
|
48
|
-
|
49
|
-
- Fixed a bug in the way reorder() was working that was causing many
|
50
|
-
unneccessary copies of column_names to be made
|
51
|
-
|
52
|
-
- Fixed a bug in TextPlugin that caused it to throw an error when trying to
|
53
|
-
print an empty table. (Now returns empty string)
|
54
|
-
|
55
|
-
- Since Plugin#rendering_options and Plugin#options serve a different purpose
|
56
|
-
and when combined, cause problems, they have been split out into two different
|
57
|
-
instance variables. This does not effect their intended use from the
|
58
|
-
interface side.
|
59
|
-
|
60
|
-
changes since 0.5.1
|
61
|
-
|
62
|
-
- Fixed a bug in our requires
|
63
|
-
|
64
|
-
changes since 0.5.0
|
65
|
-
|
66
|
-
- Broke plugins and engines out into their own files
|
67
|
-
|
68
|
-
- Fixed a bug which prevented TextPlugin from working right in Windows
|
69
|
-
|
70
|
-
changes since 0.4.99
|
71
|
-
|
72
|
-
- SVG::Graph has been dropped in favor of Scruffy for graphing support.
|
73
|
-
|
74
|
-
- You can now define helpers for specific engines.
|
75
|
-
|
76
|
-
- All known obsolete documentation has been removed
|
77
|
-
|
78
|
-
- Collection#as now takes a block (Making it work like DataSet#as used to)
|
79
|
-
|
80
|
-
- Some cleanup and fixes to examples/
|
81
|
-
|
82
|
-
changes since 0.4.23
|
83
|
-
|
84
|
-
- Removed the legacy Format::Document|Element|Page|OpenNode classes
|
85
|
-
|
86
|
-
- Added lots of API documentation
|
87
|
-
|
88
|
-
- actions now will throw an error if they are already defined.
|
89
|
-
(Temporary collision remedy)
|
90
|
-
|
91
|
-
- You can now dup Sets
|
92
|
-
|
93
|
-
- Unit tests should no longer explode when PDF::Writer is not installed
|
94
|
-
|
95
|
-
- Added a simplistic Rake task for building the recipe book
|
96
|
-
|
97
|
-
- Added intuitive error message for invalid plugins
|
98
|
-
|
99
|
-
- Fixed an error in Tag duplication for Data::Record
|
100
|
-
|
101
|
-
- Ruport now has charting support via SVG::Graph
|
102
|
-
|
103
|
-
- reordering now has intuitive error messages
|
104
|
-
|
105
|
-
- Trimmed down system_extensions.rb to only include the relevant terminal
|
106
|
-
geometry code
|
107
|
-
|
108
|
-
- Record/Table reordering can now be expressed either as a splatted list or an
|
109
|
-
array. Eg %w[a b c] and "a","b","c" are both acceptable as arguments.
|
110
|
-
|
111
|
-
changes since 0.4.21
|
112
|
-
|
113
|
-
- JH's invoice engine integrated
|
114
|
-
|
115
|
-
- Added rope, a tool for building a friendly environment for reports that use
|
116
|
-
Ruport.
|
117
|
-
|
118
|
-
- Fixed very broken Ruport::Query (DataSet aftermath)
|
119
|
-
We need to figure out a way to test this class better.
|
120
|
-
|
121
|
-
- Added Data::Table#add_column which is useful for calculated fields. (#19)
|
122
|
-
|
123
|
-
- Data::Table.reorder now works properly.
|
124
|
-
(Can use integer indices or attributes)
|
125
|
-
|
126
|
-
- Moved Data::Table.to_format to Collection, but be warned that the plugins must
|
127
|
-
support the collection you call them on. (Set is not fully supported yet)
|
128
|
-
|
129
|
-
- Renamed Query#to_dataset to Query#to_table
|
130
|
-
|
131
|
-
- Array#to_table now supports just passing an array of column_names if you do
|
132
|
-
not need other keyword arguments. This makes the interface support to_ds
|
133
|
-
style calls.
|
134
|
-
|
135
|
-
changes since 0.4.19
|
136
|
-
- Added a rake task to run rcov
|
137
|
-
|
138
|
-
- Removed DataSet / DataRow. Farewell good friends
|
139
|
-
|
140
|
-
- Added Array#to_table, dropped Array#to_ds
|
141
|
-
|
142
|
-
- You can now convert Sets to Tables and vice-versa
|
143
|
-
|
144
|
-
- acts_as_reportable converted to use Data::Table
|
145
|
-
|
146
|
-
- Data::Record's constructor can now take a hash
|
147
|
-
|
148
|
-
- Added initial Data::Set implementation
|
149
|
-
|
150
|
-
- Added smart Data::Table.to_format method_missing functionality
|
151
|
-
|
152
|
-
changes since 0.4.17
|
153
|
-
|
154
|
-
- Made method_missing a lot more friendly all around.
|
155
|
-
|
156
|
-
- Made minor interface changes.
|
157
|
-
|
158
|
-
- Data::Table and Data::Record now dup correctly
|
159
|
-
|
160
|
-
- Fixed some serious issues between Data::Table and TextPlugin
|
161
|
-
|
162
|
-
- Report#eval_template now returns an ERb string instead of printing to STDOUT
|
163
|
-
|
164
|
-
- Added Data::Table#split which allows basic grouping operations
|
165
|
-
|
166
|
-
- Added Report#load_csv convenience method
|
167
|
-
|
168
|
-
- Tightened up Data::Table#<< to ensure column_names match record attributes
|
169
|
-
|
170
|
-
- Fixed appending a Record in Data::Table#<<
|
171
|
-
|
172
|
-
changes since 0.4.15
|
173
|
-
|
174
|
-
- Fixed a packaging bug
|
175
|
-
|
176
|
-
changes since 0.4.13
|
177
|
-
|
178
|
-
- Began building a new data handling system, which is much faster than
|
179
|
-
DataSet/DataRow and takes up less memory. It is also very young, though.
|
180
|
-
(See Data::Table and Data::Record)
|
181
|
-
|
182
|
-
- Added init_plugin hooks
|
183
|
-
|
184
|
-
- Added DataSet#rename_columns
|
185
|
-
|
186
|
-
- Added taggable mixin
|
187
|
-
|
188
|
-
- Added an options accessor to help solve ticket #8
|
189
|
-
|
190
|
-
- Alioth now has a powerful hook back into the engine from plugins via helpers
|
191
|
-
|
192
|
-
- added action / attribute methods for format engine / plugin via MetaTools
|
193
|
-
|
194
|
-
- added accessor style methods to DataRow via method_missing
|
195
|
-
|
196
|
-
- added prune method for Table formatting.
|
197
|
-
|
198
|
-
changes since 0.4.11
|
199
|
-
|
200
|
-
- Added high level hook Report#text_processor which essentially works like
|
201
|
-
Format.register_filter
|
202
|
-
|
203
|
-
- Report can now run single or multiple reports and do things such as send them
|
204
|
-
via email or write/append them to files.
|
205
|
-
|
206
|
-
- Report has been overhauled to have a simple DSL
|
207
|
-
|
208
|
-
- Mailfactory is now a gem dependency. If you install via setup.rb or building
|
209
|
-
the gem yourself, you only need it if you plan to use Ruport::Mailer
|
210
|
-
|
211
|
-
- Report#query now has an 'as' method that allows direct translation of a query
|
212
|
-
to a particular format, e.g.
|
213
|
-
|
214
|
-
query "select * from ruport", :as => :pdf
|
215
|
-
|
216
|
-
- Lots of bug fixes and cleanup
|
217
|
-
|
218
|
-
- Ruport is now on Trac.
|
219
|
-
http://stonecode.svnrepository.com/ruport/
|
220
|
-
|
221
|
-
- I apparently never knew how to use inject.
|
222
|
-
Injects are all functional now.
|
223
|
-
|
224
|
-
- Fixed a bug in DataSet that made fields not get duped properly
|
225
|
-
|
226
|
-
changes since 0.4.9
|
227
|
-
|
228
|
-
- DataSet#column_names and DataRow#column_names have been added as alias to
|
229
|
-
fields.
|
230
|
-
|
231
|
-
- Plugins are now safely copied when used via DataSet#as or the generated
|
232
|
-
Format::simple_interface(Format.table,Format.document,etc)
|
233
|
-
|
234
|
-
- Dropped insert_row / insert_column from Format::Engine::Table.
|
235
|
-
These are no longer needed.
|
236
|
-
|
237
|
-
- Reworked format engine unit tests to decouple from specific plugins.
|
238
|
-
|
239
|
-
- vendored SystemExtensions from HighLine to get terminal_width /
|
240
|
-
terminal_height functions
|
241
|
-
|
242
|
-
- DataSet#add_columns and DataSet#add_columns! has been added
|
243
|
-
|
244
|
-
- Added pre and post hooks for Plugins. Individual plugins choose if and
|
245
|
-
how to implement them.
|
246
|
-
|
247
|
-
- Parser is gone
|
248
|
-
|
249
|
-
- Format::Builder is gone
|
250
|
-
|
251
|
-
- fixed a bug in rails support. :columns now works properly.
|
252
|
-
|
253
|
-
- fieldnames can now be disabled in CSV loading
|
254
|
-
|
255
|
-
- DataSet.load now loads empty cells as nil instead "" by default
|
256
|
-
|
257
|
-
- fixed HTML table output in HTMLPlugin
|
258
|
-
|
259
|
-
- Select / Remove columns now accepts ordinal indexes
|
260
|
-
|
261
|
-
changes since 0.4.5:
|
262
|
-
|
263
|
-
- Added acts_as_reportable for ActiveRecord / rails. whoo
|
264
|
-
|
265
|
-
- Mailer now can handle attachments and html emails.
|
266
|
-
API Breakage. Needs mailfactory unless you use the hooks for other
|
267
|
-
mailers.
|
268
|
-
|
269
|
-
- Added a rewrite_column action to the tabular engine
|
270
|
-
|
271
|
-
- Added Ruport.configure shortcut interface
|
272
|
-
|
273
|
-
- went back to the old style of output for DataSet.to_s
|
274
|
-
Modified TextPlugin to accomplish this
|
275
|
-
|
276
|
-
- Crackrock feature: Engine forwards enumerable methods to it's data.
|
277
|
-
|
278
|
-
- DataSets and DataRows can now be created without specifying field names.
|
279
|
-
|
280
|
-
- Added uport.rb . I needed to steal from RubyGems :)
|
281
|
-
|
282
|
-
- Fixed some requires
|
283
|
-
|
284
|
-
- Temporarily removed mail support from Ruport::Report
|
285
|
-
|
286
|
-
- Added Ruport::Mailer#deliver simple mail interface
|
287
|
-
|
288
|
-
- Ruport::Report::Mailer is now Ruport::Mailer
|
289
|
-
|
290
|
-
changes since 0.4.4:
|
291
|
-
|
292
|
-
- DataRow constructor now matches DataSet style.
|
293
|
-
|
294
|
-
- DataSet picked up a ton of array-like functionality
|
295
|
-
|
296
|
-
- DataSet#load now optionally accepts a block that acts something
|
297
|
-
like inject.
|
298
|
-
|
299
|
-
- Added a DataSet#select_columns!() method
|
300
|
-
|
301
|
-
- What the heck was Format#filter_ruby? It's gone now
|
302
|
-
|
303
|
-
- DataSet#as() now hooked to the new formatting system.
|
304
|
-
note API breakage in block forms
|
305
|
-
|
306
|
-
- DataSet set operations (DF)
|
307
|
-
|
308
|
-
- Much smarter DataSet#<< (Dudley Flanders)
|
309
|
-
|
310
|
-
- Ruport now has pseudo keyword support in DataSets.
|
311
|
-
(Thanks to Dudley Flanders!)
|
312
|
-
|
313
|
-
changes since 0.4.2:
|
314
|
-
|
315
|
-
- Fixed a packaging bug.
|
316
|
-
|
317
|
-
changes since 0.4.0:
|
318
|
-
|
319
|
-
- Brand new formatting system.
|
320
|
-
See: http://ruport.infogami.com/Formatting_System_HOWTO
|
321
|
-
|
322
|
-
- DataSet#<< now returns self, e.g.
|
323
|
-
some_data << [1,2,3] << [4,5,6]
|
324
|
-
|
325
|
-
- Removed fascist opt_require feature and Ruport::Base
|
326
|
-
|
327
|
-
- Fixed bug in DataRow constructor which destroyed arrays.
|
328
|
-
|
329
|
-
- Examples now included in gems
|
330
|
-
|
331
|
-
changes since 0.3.8:
|
332
|
-
|
333
|
-
- added DataRow#to_h
|
334
|
-
|
335
|
-
- Ruport::Format.register_filter now passes the content it will modify via a
|
336
|
-
block. e.g.
|
337
|
-
|
338
|
-
Ruport::Format.register_filter :reverser { |content| content.reverse }
|
339
|
-
|
340
|
-
- Modified the license terms of Ruport so that it uses specifically the GPLv2.
|
341
|
-
Further versions of Ruport may not be distributed under later versions of the
|
342
|
-
GPL without explicit permission.
|
343
|
-
|
344
|
-
- DataSet#[]= now passes rvals to DataRow constructor with fields from the
|
345
|
-
DataSet it is called on.
|
346
|
-
|
347
|
-
- Optional dependencies should now be forceably protected by opt_require.
|
348
|
-
|
349
|
-
- Fixed a problem with Ruport.complain that caused it to force you to use a
|
350
|
-
logger to make it work.
|
351
|
-
|
352
|
-
- DataRow#eql? is fixed and now has a test covering it.
|
353
|
-
|
354
|
-
- DataRow/DataSet can now be dup'ed / cloned
|
355
|
-
(But may still have some dragons)
|
356
|
-
|
357
|
-
- DataRow#+ now returns DataRows instead of arrays
|
358
|
-
|
359
|
-
- Format::Builder rendering methods can now be registered through
|
360
|
-
Format::Builder.register_rendering_method()
|
361
|
-
|
362
|
-
- DataRow["somekeythatdoesntexist"] no longer throws an error
|
363
|
-
(now returns nil)
|
364
|
-
|
365
|
-
- Now some_data_row[:foo] and some_data_row["foo"] are equivalent
|
366
|
-
|
367
|
-
- Fixed Query so it throws appropriate errors. No more magic nil. (I hope)
|
368
|
-
|
369
|
-
- Ruport::Config.default_source now defaults to nil
|
370
|
-
|
371
|
-
- Ruport::Config now has improved error detection.
|
372
|
-
|
373
|
-
- additional Test coverage, documentation and logging.
|
374
|
-
|
375
|
-
- DataSet#sigma (a.k.a DataSet#sum) added for summations.
|
376
|
-
|
377
|
-
- Format::Builder#render_pdf renamed to Format:Builder#render_pdf_document
|
378
|
-
|
379
|
-
- Format::Builder#render_pdf_table added. (Thanks Simon Claret!)
|
380
|
-
|
381
|
-
- Fixed bug in remove_columns
|
382
|
-
|
383
|
-
key features of Ruport 0.3.8:
|
384
|
-
|
385
|
-
- New configuration system
|
386
|
-
|
387
|
-
- New query model
|
388
|
-
|
389
|
-
- New formatting system
|
390
|
-
|
391
|
-
- Total API redesign
|
392
|
-
|
393
|
-
- Lots more API documentation
|
394
|
-
|
395
|
-
- A parser adapted from Parse::Input
|
396
|
-
|
397
|
-
- ruport executable was deprecated
|
398
|
-
|
399
|
-
[ Code was redesigned completely after 0.2.9 ]
|
400
|
-
|
401
|
-
changes since Ruport 0.2.9:
|
402
|
-
|
403
|
-
- Report::SQL dropped.
|
404
|
-
|
405
|
-
- Fixed a bug in query that made ODBC driver not work at ALL!
|
406
|
-
(AFAIK, this bug was ONLY in Ruport 0.2.9)
|
407
|
-
|
408
|
-
- removed render() from the engine and implemented DataSet#render_as()
|
409
|
-
example:
|
410
|
-
@report = render(data) do |builder| builder.format = :some_format end
|
411
|
-
is now: @report = data.render_as(:some_format)
|
412
|
-
which takes an optional block that works as before.
|
413
|
-
|
414
|
-
- removed method DataSet#select_field() because it was the same as
|
415
|
-
DataSet#select_fields() and of limited utility.
|
416
|
-
|
417
|
-
- added method DataSet#remove_fields and DataSet#remove_fields!
|
418
|
-
to make data manipulation easier.
|
419
|
-
|
420
|
-
- added DataSet#empty?
|
421
|
-
|
422
|
-
- added DataSet#clone which will actually deep copy a DataSet.
|
423
|
-
|
424
|
-
- cleaned up incredibly annoying DataSet constructor so you can now pass
|
425
|
-
field names and data to new()
|
426
|
-
|
427
|
-
- Report::DataSet now documented
|
428
|
-
|
429
|
-
- added hacks.rb which will include a random collection of potentially
|
430
|
-
useful functions. (Already cool for making Ruport easy to use with irb).
|
431
|
-
|
432
|
-
- added Document class and unit tests. Needs to be completed.
|
433
|
-
|
434
|
-
- added Report::DataSet.clone for making deep copies of DataSets.
|
435
|
-
|
436
|
-
- added Element, Section, Page, and Document formatting classes.
|
437
|
-
|
438
|
-
- restructured unit tests, adding ts_format and ts_report
|
439
|
-
and moving all non-testcase data into test/samples
|
440
|
-
|
441
|
-
- restuctured library, adding ruport/format.rb and ruport/report.rb
|
442
|
-
made format and report into classes, with nested classes within.
|
443
|
-
|
444
|
-
- Moved the Report::Engine class into Report
|
445
|
-
|
446
|
-
- reorginized DataSet#<< to be more efficient. Thanks Francis!
|
447
|
-
|
448
|
-
- added OpenNode. Which is a little scary.
|
449
|
-
|
450
|
-
- Francis Hwang has added SqlSplit, which has been tied into query.
|
451
|
-
Now multiple statement SQL dumps can be processed by ruport.
|
452
|
-
|
453
|
-
- DataSet can now safely execute commands that return no rows.
|
454
|
-
(This was a bug in RubyDBI which ruport now has a workaround for)
|
455
|
-
|
456
|
-
- require "ruportlib" becomes require "ruport"
|
457
|
-
|
458
|
-
|
459
|
-
changes since Ruport 0.2.5:
|
460
|
-
|
461
|
-
- Added a new examples package with a 666 line walkthrough and more enjoyable
|
462
|
-
demonstratons
|
463
|
-
|
464
|
-
- Added support for multiple DSN's via add_dsn and select_dsn
|
465
|
-
|
466
|
-
- Added Tagging support for DataSets.
|
467
|
-
|
468
|
-
- Added DataSet#select_field and DataSet#select_fields to simplify grabbing
|
469
|
-
data by column
|
470
|
-
|
471
|
-
- Report::DataSet now implements to_s, for pretty printing goodness.
|
472
|
-
|
473
|
-
- render_text now implemented in Format::Builder
|
474
|
-
|
475
|
-
- Format::Builder now accepts headers and footers.
|
476
|
-
|
477
|
-
- Format::Builder now can generate complete html via output_type
|
478
|
-
|
479
|
-
- Ruport now uses FasterCSV, which is now a dependency. Yay! Dependencies!
|
480
|
-
(But it IS 9x faster than the CSV lib that ships with Ruby)
|
481
|
-
|
482
|
-
- Added tests to the gem spec... so you can use -t now.
|
483
|
-
|
484
|
-
- DataRow#+ implemented.
|
485
|
-
|
486
|
-
- Format::Builder#range implemented. (Can now format partial DataSets)
|
487
|
-
|
488
|
-
- Fixed a bug in the unit tests that required Ruport to be installed.
|
489
|
-
Now you can test BEFORE you install. (Sorry about that one...)
|
490
|
-
|
491
|
-
- Commands that return no rows no longer crash the application
|
492
|
-
(But writing to the database is still not fun nor easy)
|
493
|
-
|
494
|
-
- templates/ folder now more aptly named scripts/
|
495
|
-
|
496
|
-
- Report::Engine#query now returns a DataSet so chaining is possible
|
497
|
-
|
498
|
-
changes since Ruport 0.2.2:
|
499
|
-
|
500
|
-
- Report::DataSet and Report::DataRow are now enumerable
|
501
|
-
|
502
|
-
- DataSet#eql? fixed
|
503
|
-
|
504
|
-
- Format::Builder has been added to handle formatting
|
505
|
-
(Supports CSV / HTML currently)
|
506
|
-
|
507
|
-
- Format::Builder is easily extendable via send("render_#{@type}")
|
508
|
-
|
509
|
-
- DataSet#to_html convenience method added
|
510
|
-
|
511
|
-
- DataSet#fields can now be arbitrary objects (does not need to be Strings)
|
512
|
-
|
513
|
-
- Dropped DataRow#middle? because it was useless. (And poorly named)
|
514
|
-
|
515
|
-
- FakeMailer added for testing goodness.
|
516
|
-
|
517
|
-
- Dropped select() and execute() in favor of query()
|
518
|
-
|
519
|
-
changes since Ruport 0.2.0:
|
520
|
-
|
521
|
-
- Report becomes Engine
|
522
|
-
- MockDB becomes FakeDB
|
523
|
-
- MockReport becomes MockEngine
|
524
|
-
|
525
|
-
- Modules are added so now,
|
526
|
-
|
527
|
-
Ruport::Report::Engine,
|
528
|
-
Ruport::Report::DataSet is the full name of these classes.
|
529
|
-
|
530
|
-
- 'require ruportlib' runs include Ruport,
|
531
|
-
so you can type Report::Engine.new instead of Ruport::Report::Engine.new
|
532
|
-
|
533
|
-
- The assert that was supposed to be an assert_equal that
|
534
|
-
David Black caught was fixed.
|
535
|
-
|
536
|
-
- Examples are updated and now on the RubyForge FRS in many formats.
|
537
|
-
(With .DS_Store and other garbage files removed! ;) )
|
538
|
-
|
539
|
-
- Formatting of code was cleaned up and improved.
|
540
|
-
|
541
|
-
- Generates a test.rb that does not use deprecated functions now.
|
542
|
-
|
543
|
-
changes since Ruport 0.1.0:
|
544
|
-
|
545
|
-
CLEANUP / ORGANIZATION:
|
546
|
-
|
547
|
-
- Parseinput dependency removed for now
|
548
|
-
|
549
|
-
- setup.rb support removed
|
550
|
-
|
551
|
-
- gem install will now only install a single executable
|
552
|
-
|
553
|
-
- dropped undocumented YAML override feature
|
554
|
-
|
555
|
-
- Query class now called Report
|
556
|
-
|
557
|
-
- Project split into two parts lib/ruport/db and lib/ruport/format
|
558
|
-
|
559
|
-
- dropped questionable ruport_query manager function
|
560
|
-
|
561
|
-
- finally turned on expandtab and tabstop=2 for Ruby style ;)
|
562
|
-
|
563
|
-
FEATURES:
|
564
|
-
|
565
|
-
- require 'ruportlib' lets ruport be used as a library
|
566
|
-
|
567
|
-
- MockDB and MockReport added to simplify testing
|
568
|
-
|
569
|
-
- DataRow and DataSet added to provide munging with ease
|
570
|
-
(to_csv, DataSet.load("some.csv"), etc
|
571
|
-
|
572
|
-
- DataSet.load() can restore DataSet's that were YAML.dump()'ed
|
573
|
-
|
574
|
-
- load_file now supports absolute and relative paths
|
575
|
-
|
576
|
-
- added many automation features to templates
|
577
|
-
|
578
|
-
- added @pre and @post to Report which accept lambdas to execute
|
579
|
-
before and after generate_report()
|
580
|
-
|
581
|
-
- logger added.
|
582
|
-
|
583
|
-
- some friendly error messages added
|
584
|
-
|
585
|
-
- new method query() will eventually replace select() / execute()
|
586
|
-
|
587
|
-
- {examples}[http://ruport.rubyforge.org/] available for download
|
data/examples/basic_grouping.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require "ruport"
|
2
|
-
a = [ ['a',7],['b',5],['c',11],
|
3
|
-
['d',9],['a',3],['b',2], ['e',4] ].to_table(%w[letter num])
|
4
|
-
puts "Initial Data:\n#{a}"
|
5
|
-
|
6
|
-
|
7
|
-
# group by column values
|
8
|
-
b = a.split(:group => "letter")
|
9
|
-
totals = [].to_table(%w[group sum])
|
10
|
-
b.each_group { |x| totals << [x,b[x].sum("num")] }
|
11
|
-
puts "After column grouping:\n#{totals}"
|
12
|
-
|
13
|
-
# group by tag name
|
14
|
-
a.create_tag_group(:num_even) { |r| (r.num % 2).zero? }
|
15
|
-
a.create_tag_group(:num_odd) { |r| (r.num % 2).nonzero? }
|
16
|
-
c = a.group_by_tag
|
17
|
-
totals.data.clear
|
18
|
-
c.each_group { |x| totals << [x,c[x].sum("num")] }
|
19
|
-
puts "After tag grouping:\n#{totals}"
|
data/examples/fieldless_table.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require "ruport"
|
2
|
-
include Ruport
|
3
|
-
|
4
|
-
# this shows how you can create your own plugin with some default rendering
|
5
|
-
# options as a shortcut.
|
6
|
-
|
7
|
-
class Format::Plugin::FieldlessCSVPlugin < Format::Plugin::CSVPlugin
|
8
|
-
rendering_options :show_field_names => false
|
9
|
-
plugin_name :fieldless_csv
|
10
|
-
register_on :table_engine
|
11
|
-
end
|
12
|
-
|
13
|
-
puts [[1,2,3]].to_table(%w[a b c]).to_fieldless_csv
|
data/examples/latex_table.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__) + "/../lib/")
|
2
|
-
require "ruport"
|
3
|
-
|
4
|
-
# build up a Table - this could be built in a range of ways
|
5
|
-
# Check the API documentation and recipe book for more information
|
6
|
-
data = [[1,4,7,9], [6,2,3,0]].to_table(%w[a b c d])
|
7
|
-
|
8
|
-
# Build the report object
|
9
|
-
report = Ruport::Format.table_object(:plugin => :latex, :data => data)
|
10
|
-
|
11
|
-
# By default, the latex plugin will return plain text latex source
|
12
|
-
# changing the format option asks Ruport to attempt to render
|
13
|
-
# the source into a PDF using pdflatex
|
14
|
-
report.options = { :format => :pdf }
|
15
|
-
|
16
|
-
# save the resulting report to a file on the filesystem
|
17
|
-
File.open( "table.tex","w") { |f| f.puts report.render }
|
data/examples/line_graph.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
$: << File.dirname(__FILE__) + "/../lib/"
|
2
|
-
require "ruport"
|
3
|
-
|
4
|
-
# Start with a Ruport::Table object. This could easily come from
|
5
|
-
# activerecord or any of the other ways to build a Table. See the ruport
|
6
|
-
# recipes book for some ideas
|
7
|
-
data = [[5, 7, 9, 12, 14, 16, 18]].to_table(%w[jan feb mar apr may jun jul])
|
8
|
-
|
9
|
-
# initialize the graph with our table object
|
10
|
-
graph = Ruport::Format.graph_object :plugin => :svg, :data => data
|
11
|
-
|
12
|
-
# there are currently only a handful of options for customising the
|
13
|
-
# appearance of the graph. The ones listed here are all of them at
|
14
|
-
# the current time.
|
15
|
-
graph.width = 700
|
16
|
-
graph.height = 500
|
17
|
-
graph.title = "A Simple Line Graph"
|
18
|
-
graph.style = :line # other options: bar, smiles, area, stacked
|
19
|
-
|
20
|
-
# render the graph and print it to stdout. To save the output to a file, try:
|
21
|
-
# ruby line_graph.rb > pirates.svg
|
22
|
-
puts graph.render
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require "ruport"
|
2
|
-
class GraphSample < Ruport::Report
|
3
|
-
|
4
|
-
include Graph
|
5
|
-
|
6
|
-
prepare do
|
7
|
-
@data = [[5,7,9,12,14,16,18]].to_table(%w[jan feb mar apr may jun jul])
|
8
|
-
end
|
9
|
-
|
10
|
-
generate do
|
11
|
-
render_graph do |g|
|
12
|
-
g.data = @data
|
13
|
-
g.width = 700
|
14
|
-
g.height = 500
|
15
|
-
g.title = "A Simple Line Graph"
|
16
|
-
g.style = :line
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
GraphSample.run { |r| puts r.results }
|
22
|
-
|
23
|
-
|