Sha256: dfc418e1a64a94cd45dddcb322bc120dbf454b98304f776e6e092b0bdb7d5cac

Contents?: true

Size: 812 Bytes

Versions: 32

Compression:

Stored size: 812 Bytes

Contents

module RSCM
  class Parser
  
    def initialize(break_regexp)
      @break_regexp = break_regexp
    end
  
    def parse(io, skip_line_parsing=false, &line_proc)
      parse_until_regexp_matches(io, skip_line_parsing, &line_proc)
      if(skip_line_parsing)
        nil
      else
        next_result
      end
    end

  protected

    def parse_line(line)
      raise "Must override parse_line(line)"
    end

    def next_result
      raise "Must override next_result(line)"
    end
    
  private

    def parse_until_regexp_matches(io, skip_line_parsing, &line_proc)
      io.each_line { |line|
        yield line if block_given?
        if line =~ @break_regexp
          return
        end
        parse_line(line) unless skip_line_parsing
      }
    end
  end
end

Version data entries

32 entries across 32 versions & 2 rubygems

Version Path
rscm-0.1.0.999 lib/rscm/parser.rb
rscm-0.1.0.1337 lib/rscm/parser.rb
rscm-0.1.0.1338 lib/rscm/parser.rb
rscm-0.3.13 lib/rscm/parser.rb
rscm-0.3.4 lib/rscm/parser.rb
rscm-0.3.5 lib/rscm/parser.rb
rscm-0.1.0 lib/rscm/parser.rb
rscm-0.3.12 lib/rscm/parser.rb
rscm-0.3.1 lib/rscm/parser.rb
rscm-0.3.10 lib/rscm/parser.rb
rscm-0.3.16 lib/rscm/parser.rb
rscm-0.3.15 lib/rscm/parser.rb
rscm-0.3.11 lib/rscm/parser.rb
rscm-0.2.0 lib/rscm/parser.rb
rscm-0.3.3 lib/rscm/parser.rb
rscm-0.3.0 lib/rscm/parser.rb
rscm-0.3.2 lib/rscm/parser.rb
rscm-0.3.14 lib/rscm/parser.rb
rscm-0.2.1.1404 lib/rscm/parser.rb
rscm-0.5.0 lib/rscm/parser.rb