module FlightFacade::GroupFacade

Constants

EXPLODE_REGEX
PADDING_REGEX

Public Class Methods

explode_names(input) click to toggle source
# File lib/flight_facade/facades.rb, line 98
def self.explode_names(input)
  parts = input.split(',').reject(&:empty?)
  return nil unless parts.all? { |p| EXPLODE_REGEX.match?(p) }
  parts.map do |part|
    captures = EXPLODE_REGEX.match(part).named_captures.reject { |_, v| v.nil? }
    if captures.key?('low')
      leader = captures['leader']
      max_pads = PADDING_REGEX.match(leader).to_s.length
      stripped_leader = leader.sub(PADDING_REGEX, '')
      low = captures['low'].to_i
      high = captures['high'].to_i
      (low..high).map do |index|
        pads = max_pads - index.to_s.length + 1
        "#{stripped_leader}#{'0' * pads if pads > 0}#{index}"
      end
    else
      part
    end
  end.flatten
end

Public Instance Methods

find_by_name(name) click to toggle source
# File lib/flight_facade/facades.rb, line 119
def find_by_name(name)
  node_names = self.class.explode_names(name)
  return nil if node_names.nil?
  nodes = node_names.map { |n| NodeFacade.find_by_name(n) }.reject(&:nil?)
  Group.new(name: name, nodes: nodes)
end
index_all() click to toggle source
# File lib/flight_facade/facades.rb, line 126
def index_all
  []
end