def initialize args
user_args = args.user_args
sz = user_args.size
case sz
when 1
arg = user_args[0]
case arg
when Numeric
@value = arg.to_f
when Range
@value = Utils::map(
arg,
args.drp_instance.next_meta_codon
)
else
raise ArgumentError, 'when 1 arg given to weight, must be Numeric, or Range', caller
end
when 2
rng = args[0]
func = args[1].to_sym
if (rng.kind_of? Range) && (func.kind_of? Symbol)
@value = Utils::map(
rng,
args.drp_instance.next_meta_codon,
func
)
else
raise ArgumentError, 'weight args of wrong types'
end
else
raise ArgumentError, "weight takes 1 or 2 args, #{sz} given"
end
end