class NRSER::Labs::LOTS::OptConsumer

Public Class Methods

new(name:, aliases: []) click to toggle source
# File lib/nrser/labs/lots/consumer.rb, line 45
def initialize name:, aliases: []
  @name = name
  @aliases = aliases.dup
end

Public Instance Methods

can_consume?(tokens) click to toggle source
# File lib/nrser/labs/lots/consumer.rb, line 58
def can_consume? tokens
  return 0 unless consumed.empty?

  first = tokens[0]

  return 1 if long_names.any? { |name|
    /\-\-#{ name }\=.*/ =~ first
  }

  if  tokens.length > 1 &&
      names.any? { |name|
        if name.length == 1
          first == "-#{ name }"
        else
          first == "--#{ name }"
        end
      }
    return 2
  end

  return 0
end
long_names() click to toggle source
# File lib/nrser/labs/lots/consumer.rb, line 54
def long_names
  @long_names ||= @names.select { |name| name.length > 1 }
end
names() click to toggle source
# File lib/nrser/labs/lots/consumer.rb, line 50
def names
  @names ||= [name, *aliases]
end
satisfied?() click to toggle source
# File lib/nrser/labs/lots/consumer.rb, line 81
def satisfied?
  if consumed.empty?
    type.test?( nil )
  else
    true
  end
end