Avoid extra array allocations

This commit is contained in:
Jack Nagel 2013-05-06 16:52:26 -05:00
parent b322020338
commit 5bf652ecdd
2 changed files with 10 additions and 7 deletions

View File

@ -106,13 +106,16 @@ class Options
when self then arg
when Option then new << arg
when Array
opts = arg.map do |_arg|
case _arg
when /^-[^-]+$/ then _arg[1..-1].split(//)
else _arg
opts = new
arg.each do |a|
case a
when /^-[^-]+$/
a[1..-1].split(//).each { |o| opts << Option.new(o) }
else
opts << Option.new(a)
end
end.flatten
new(opts.map { |o| Option.new(o) })
end
opts
else
raise TypeError, "Cannot convert #{arg.inspect} to Options"
end

View File

@ -97,7 +97,7 @@ class Version
protected
def to_a
@array ||= @version.scan(/\d+|[a-zA-Z]+/).map { |e| VersionElement.new(e) }
@array ||= @version.scan(/\d+|[a-zA-Z]+/).map! { |e| VersionElement.new(e) }
end
def self.parse spec