Class: Ruby::Builder::RevisionParser

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby/builder/revision_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(source_dir) ⇒ RevisionParser

Returns a new instance of RevisionParser.

Parameters:

  • source_dir (String)


8
9
10
# File 'lib/ruby/builder/revision_parser.rb', line 8

def initialize(source_dir)
  @source_dir = source_dir
end

Instance Method Details

#parse(spec) ⇒ Object

Parameters:

  • spec (String)


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/ruby/builder/revision_parser.rb', line 13

def parse(spec)
  unless match = spec.match(/\Ar(?<beg_rev>\d+)(\.\.r(?<end_rev>\d+))?\z/)
    abort "Invalid revision specification '#{spec}': Doesn't match 'rXXXXX' or 'rXXXXX..rXXXXX'"
  end

  beg_rev = Integer(match[:beg_rev])
  end_rev = Integer(match[:end_rev] || beg_rev)
  if end_rev < beg_rev
    abort "Invalid revision specification '#{spec}': #{beg_rev} is larger than #{end_rev}"
  end

  # Note: ruby-builder currently supports only trunk revisions
  trunk_revs = (beg_rev..end_rev).select { |rev| trunk_revision?(rev) }
  trunk_revs.map! do |rev|
    build_revision(rev)
  end
end