ruport 0.8.13 → 0.8.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ rescue LoadError
8
8
  nil
9
9
  end
10
10
 
11
- RUPORT_VERSION = "0.8.13"
11
+ RUPORT_VERSION = "0.8.14"
12
12
 
13
13
  #Set to true to disable dependency resolution
14
14
  LEAN=false
@@ -87,6 +87,7 @@ module Ruport::Data
87
87
  @data[@attributes[index]] = value
88
88
  else
89
89
  @data[index] = value
90
+ @attributes << index unless @attributes.include? index
90
91
  end
91
92
  end
92
93
 
@@ -251,6 +252,7 @@ module Ruport::Data
251
252
 
252
253
  def delete(key)
253
254
  @data.delete(key)
255
+ @attributes.delete(key)
254
256
  end
255
257
 
256
258
 
@@ -193,7 +193,9 @@ module Ruport::Data
193
193
  #
194
194
  def +(other)
195
195
  raise ArgumentError unless other.column_names == @column_names
196
- Table.new(:column_names => @column_names, :data => @data + other.data)
196
+ self.class.new( :column_names => @column_names,
197
+ :data => @data + other.data,
198
+ :record_class => record_class )
197
199
  end
198
200
 
199
201
 
@@ -390,7 +392,8 @@ module Ruport::Data
390
392
  #
391
393
  # FIXME: loses tags
392
394
  def sub_table(columns=column_names,range=nil)
393
- t =Ruport::Data::Table.new(:column_names => columns)
395
+ t = self.class.new(:column_names => columns,
396
+ :record_class => record_class)
394
397
  if range
395
398
  data[range].each { |r| t << r }
396
399
  elsif block_given?
@@ -480,7 +483,9 @@ module Ruport::Data
480
483
  sort_by(&block)
481
484
  end
482
485
 
483
- table = Table.new(:data => data_array, :column_names => @column_names)
486
+ table = self.class.new( :data => data_array,
487
+ :column_names => @column_names,
488
+ :record_class => record_class )
484
489
 
485
490
  table.tags = self.tags
486
491
  return table
@@ -505,10 +510,15 @@ module Ruport::Data
505
510
  # two = one.dup
506
511
  #
507
512
  def dup
508
- a = self.class.new(:data => @data, :column_names => @column_names)
513
+ a = self.class.new( :data => @data,
514
+ :column_names => @column_names,
515
+ :record_class => record_class )
509
516
  a.tags = tags.dup
510
517
  return a
511
518
  end
519
+
520
+ # NOTE: does not respect tainted status
521
+ alias_method :clone, :dup
512
522
 
513
523
  #
514
524
  # Uses Ruport's built-in text plugin to render this Table into a String
@@ -522,10 +532,6 @@ module Ruport::Data
522
532
  def to_s
523
533
  as(:text)
524
534
  end
525
-
526
- # NOTE: does not respect tainted status
527
- alias_method :clone, :dup
528
-
529
535
 
530
536
  # Provides a shortcut for the <tt>as()</tt> method by converting a call to
531
537
  # <tt>as(:format_name)</tt> into a call to <tt>to_format_name</tt>
data/lib/ruport.rb CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  module Ruport
14
14
 
15
- VERSION = "0.8.13"
15
+ VERSION = "0.8.14"
16
16
 
17
17
  # This method is Ruport's logging and error interface. It can generate
18
18
  # warnings or raise fatal errors, logging +message+ to the file defined by
@@ -37,8 +37,8 @@ module Ruport
37
37
  # <tt>log()</tt> (which can be useful for
38
38
  # debugging), you can set
39
39
  # <tt>Config.debug_mode</tt>.
40
- # <b><tt>:exception</tt></b>:: The +Exception+ to throw on failure. This
41
- # defaults to +RunTimeError+.
40
+ # <b><tt>:raises</tt></b>:: The +Exception+ to throw on failure. This
41
+ # defaults to +RuntimeError+.
42
42
  #
43
43
  def self.log(message, options={})
44
44
  options = {:status => :warn, :output => $stderr}.merge(options)
data/test/test_record.rb CHANGED
@@ -257,5 +257,29 @@ class TestRecord < Test::Unit::TestCase
257
257
  assert_equal 2, a.get(1)
258
258
  assert_equal 1, a.get(0)
259
259
  end
260
+
261
+ def test_ensure_delete_removes_attribute
262
+ a = Record.new({"a" => 1, "b" => 2})
263
+ assert_equal({"a" => 1, "b" => 2}, a.data)
264
+ assert_equal(["a","b"], a.attributes)
265
+
266
+ a.send(:delete, "a")
267
+ assert_equal({"b" => 2}, a.data)
268
+ assert_equal(["b"], a.attributes)
269
+ end
270
+
271
+ def test_ensure_bracket_equals_updates_attributes
272
+ a = Record.new({"a" => 1, "b" => 2})
273
+ assert_equal({"a" => 1, "b" => 2}, a.data)
274
+ assert_equal(["a","b"], a.attributes)
275
+
276
+ a["b"] = 3
277
+ assert_equal({"a" => 1, "b" => 3}, a.data)
278
+ assert_equal(["a","b"], a.attributes)
279
+
280
+ a["c"] = 4
281
+ assert_equal({"a" => 1, "b" => 3, "c" => 4}, a.data)
282
+ assert_equal(["a","b","c"], a.attributes)
283
+ end
260
284
 
261
285
  end
data/test/test_table.rb CHANGED
@@ -496,8 +496,18 @@ class TestTable < Test::Unit::TestCase
496
496
  assert_equal [[1,3,3],[4,6,6]].to_table(%w[a foo c]), a
497
497
  end
498
498
 
499
+ def test_ensure_propagate_record_class
500
+ a = Ruport::Data::Table.new(:record_class => DuckRecord)
501
+ assert_equal DuckRecord, a.record_class
502
+
503
+ b = a.dup
504
+ assert_equal DuckRecord, b.record_class
505
+ end
506
+
499
507
  end
500
508
 
509
+ class DuckRecord < Ruport::Data::Record; end
510
+
501
511
  class TestTableKernelHack < Test::Unit::TestCase
502
512
 
503
513
  def test_simple
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: ruport
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.8.13
7
- date: 2007-04-01 00:00:00 -04:00
6
+ version: 0.8.14
7
+ date: 2007-04-16 00:00:00 -04:00
8
8
  summary: A generalized Ruby report generation and templating engine.
9
9
  require_paths:
10
10
  - lib