class Hefted::Argument

Public Class Methods

new(**args) click to toggle source
# File lib/hefted/argument.rb, line 8
def initialize(**args)
  @name = args.fetch(:name)
  @join = args.fetch(:join, nil)
  @first = args.indexer!(:first)[:first]
  @members = args[:members] || args.select { |key, value| !%i(name join).include?(key) }
end

Public Instance Methods

join?() click to toggle source
# File lib/hefted/argument.rb, line 43
def join?
  !!@join
end
joins() click to toggle source
# File lib/hefted/argument.rb, line 47
def joins
  @join.map { |name| name.to_camel }
end
keys() click to toggle source
# File lib/hefted/argument.rb, line 19
def keys
  case @members
  when Array
    raise MissingKeysError if @members.include?(nil)
    @members
  when Hash
    @members.keys
  else
    raise MissingKeysError
  end.map(&:to_sym)
end
name() click to toggle source
# File lib/hefted/argument.rb, line 15
def name
  @name.to_camel
end
values() click to toggle source
# File lib/hefted/argument.rb, line 31
def values
  case @members
  when Array
    @members.map.with_index(@first) { |key, i| i }
  when Hash
    raise MissingValuesError if @members.has_value?(nil)
    @members.values
  else
    raise MissingValuesError
  end
end