lib/robot-controller/robots.rb in robot-controller-0.3.0 vs lib/robot-controller/robots.rb in robot-controller-0.3.2

- old
+ new

@@ -1,10 +1,9 @@ require 'yaml' class RobotConfigParser ROBOT_INSTANCE_MAX = 16 - LANE_INSTANCE_MAX = 99 # sprintf("%02d") maximum # parse_instances(1) == 1 # parse_instances(16) == 16 # parse_instances(0) == 1 # parse_instances(99) => RuntimeError @@ -14,58 +13,31 @@ end n = 1 if n < 1 n end + # parse_lanes('') == ['default'] + # parse_lanes(' ') == ['default'] + # parse_lanes(' , ') == ['default'] + # parse_lanes(' , ,') == ['default'] # parse_lanes('*') == ['*'] - # parse_lanes('0') == [0] - # parse_lanes('1') == [1] - # parse_lanes('1-5') == [1,2,3,4,5] - # parse_lanes('1,2,3') == [1,2,3] - # parse_lanes('1-5,8') == [1,2,3,4,5,8] - # parse_lanes('-1') == [0, 1] - # parse_lanes('100') == RuntimeException + # parse_lanes('1') == ['1'] + # parse_lanes('A') == ['A'] + # parse_lanes('A , B') == ['A', 'B'] + # parse_lanes('A,B,C') == ['A','B','C'] + # parse_lanes('A-C,E') == ['A-C', 'E'] def parse_lanes(lanes_spec) - lanes = [] - - # parse each comma-seperated specification - lanes_spec.split(/,/).each do |i| - # this is a range element - if i =~ /-/ - x = i.split(/-/) - Range.new(x[0].to_i, x[1].to_i).each do |j| - lanes << j - end - # a wildcard - elsif i == '*' - lanes << '*' - # simple integer - else - lanes << i.to_i - end - end - - # verify that lanes are all within 1 .. LANE_INSTANCE_MAX - lanes.each do |j| - if j.is_a?(Integer) - if j > LANE_INSTANCE_MAX - raise RuntimeError, "SyntaxError: Lane #{j} > #{LANE_INSTANCE_MAX}" - elsif j < 0 - raise RuntimeError, "SyntaxError: Lane #{j} < 0" - end - end - end - lanes + return ['default'] if lanes_spec.split(/,/).collect {|l| l.strip}.join('') == '' + lanes_spec.split(/,/).collect {|l| l.strip } end - # build_queues('a','1') => ['a_01'] - # build_queues('a','1,3') => ['a_01', 'a_03'] - # build_queues('a','1-3') => ['a_01', 'a_02', 'a_03'] + # build_queues('z','A') => ['z_A'] + # build_queues('z','A,C') => ['z_A', 'z_C'] def build_queues(robot, lanes) queues = [] parse_lanes(lanes).each do |i| - queues << [robot, i == '*' ? '*' : sprintf("%02d", i)].join('_') + queues << [robot, i].join('_') end queues end # main entry point @@ -90,10 +62,10 @@ end # parse YAML lines for host where i is robot[:lane[:instances]] r = [] robots[host].each do |i| - robot = i.split(/:/) + robot = i.split(/:/).collect {|j| j.strip} robot.each do |j| if j.strip == '' raise RuntimeError, "SyntaxError: #{i}" end end \ No newline at end of file