class RSCM::SubversionLogParser

Public Class Methods

new(io, url, exclude_below_and_including=nil, exclude_above_and_including=nil, path=nil) click to toggle source
# File lib/rscm/scm/subversion_log_parser.rb, line 10
def initialize(io, url, exclude_below_and_including=nil, exclude_above_and_including=nil, path=nil)
  @io = io
  @revision_parser = SubversionLogEntryParser.new(url, path)
  @exclude_below_and_including = exclude_below_and_including
  @exclude_above_and_including = exclude_above_and_including
end

Public Instance Methods

parse_revisions(&line_proc) click to toggle source
# File lib/rscm/scm/subversion_log_parser.rb, line 17
def parse_revisions(&line_proc)
  # skip over the first ------

  @revision_parser.parse(@io, true, &line_proc)
  revisions = Revisions.new
  while(!@io.eof?)
    revision = @revision_parser.parse(@io, &line_proc)
    unless(revision.nil?)
      # Filter out the lower bound to avoid inclusiveness of the lower bound (see contract)

      # We're doing this instead of increasing the from_identifer with 1, since that causes an error.

      too_low = false
      too_high = false
      next if revision.time.nil?
      if(@exclude_below_and_including.is_a? Time)
        too_low = revision.time <= @exclude_below_and_including
      elsif(@exclude_below_and_including.is_a? Numeric)
        too_low = revision.identifier <= @exclude_below_and_including
      end

      if(@exclude_above_and_including.is_a? Time)
        too_high = revision.time >= @exclude_above_and_including
      elsif(@exclude_above_and_including.is_a? Numeric)
        too_high = revision.identifier >= @exclude_above_and_including
      end
      revisions.add(revision) unless too_low || too_high
    end
  end
  revisions
end