class Bricolage::JobNet::Parser
Constants
- DEPEND_PATTERN
- START_PATTERN
Public Class Methods
new(jobnet_ref)
click to toggle source
# File lib/bricolage/jobnet.rb, line 295 def initialize(jobnet_ref) @jobnet_ref = jobnet_ref end
Public Instance Methods
parse_stream(io)
click to toggle source
# File lib/bricolage/jobnet.rb, line 299 def parse_stream(io) net = JobNet.new(@jobnet_ref, Location.for_io(io)) foreach_edge(io) do |src, dest| net.add_edge src, dest end net end
Private Instance Methods
foreach_edge(f) { |src, dest| ... }
click to toggle source
# File lib/bricolage/jobnet.rb, line 314 def foreach_edge(f) default_src = nil f.each do |line| text = line.sub(/\#.*/, '').strip next if text.empty? loc = Location.for_io(f) if m = DEPEND_PATTERN.match(text) src = (m[1] ? ref(m[1], loc) : default_src) or raise ParameterError, "syntax error at #{loc}: '->' must follow any job" dest = ref(m[2], loc) yield src, dest default_src = dest elsif m = START_PATTERN.match(text) dest = ref(m[1], loc) yield @jobnet_ref.start_ref, dest default_src = dest else raise ParameterError, "syntax error at #{loc}: #{line.strip.inspect}" end end end
ref(ref_str, location)
click to toggle source
# File lib/bricolage/jobnet.rb, line 339 def ref(ref_str, location) Ref.parse(ref_str, @jobnet_ref.subsystem, location) end