#132 new
bahuvrihi

Audit source trails

Reported by bahuvrihi | December 26th, 2008 @ 10:35 AM

You could add a method to determine source trails. Potential extensions:

  • a filter for which original sources to include

      def _source_trails(trails=[], &block)
        case @source
        when Audit
          @source._source_trails(trails, &block)
        when Array
          @source.collect do |audit| 
            trails.concat audit._source_trails(&block)
          end
        when nil
          trails << []
        end
        
        trails.each do |trail|
          trail.push(block_given? ? block.call(self) : self)
        end
        trails
      end

Tests:


  #
  # _source_trails test
  #
  
  def test__source_trails_with_sequence
    a = Audit.new(:a, 'one')
    b = Audit.new(:b, 'two', a)
    c = Audit.new(:c, 'three', b)
    
    assert_equal [[a, b, c]], c._source_trails
  end
  
  def test__source_trails_collects_block_return
    a = Audit.new(:a, 'one')
    b = Audit.new(:b, 'two', a)
    c = Audit.new(:c, 'three', b)
    
    assert_equal [[:a, :b, :c]], c._source_trails {|audit| audit.key }
  end
  
  def test__source_trails_with_fork_and_merge
    a = Audit.new(:a, 'one')
    b = Audit.new(:b, 'two', a)
    c = Audit.new(:c, 'three', a)
    d = Audit.new(:d, 'four')
    e = Audit.new(:e, 'five', [c,d])
    f = Audit.new(:f, 'six')
    g = Audit.new(:g, 'seven', [b,e,f])
    
    assert_equal [
      [:a, :b, :g], 
      [:a, :c, :e, :g], 
      [:d, :e, :g], 
      [:f, :g]
    ], g._source_trails {|audit| audit.key }
  end

No comments found

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

A framework for making configurable, file-based tasks and workflows.

People watching this ticket

Pages