mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-03 11:25:29 -04:00
Handle the case when two split arrays have different size in
`compare_alphanumerically`
This commit is contained in:
parent
50ce0e2b54
commit
c4ffb5cd59
27
src/util.cr
27
src/util.cr
@ -47,16 +47,21 @@ end
|
|||||||
|
|
||||||
def compare_alphanumerically(c, d)
|
def compare_alphanumerically(c, d)
|
||||||
is_c_bigger = c.size <=> d.size
|
is_c_bigger = c.size <=> d.size
|
||||||
begin
|
if c.size > d.size
|
||||||
c.zip(d) do |a, b|
|
d += [nil] * (c.size - d.size)
|
||||||
if is_numeric(a) && is_numeric(b)
|
elsif c.size < d.size
|
||||||
compare = a.to_i <=> b.to_i
|
c += [nil] * (d.size - c.size)
|
||||||
return compare if compare != 0
|
|
||||||
else
|
|
||||||
compare = a <=> b
|
|
||||||
return compare if compare != 0
|
|
||||||
end
|
|
||||||
end
|
|
||||||
is_c_bigger
|
|
||||||
end
|
end
|
||||||
|
c.zip(d) do |a, b|
|
||||||
|
return -1 if a.nil?
|
||||||
|
return 1 if b.nil?
|
||||||
|
if is_numeric(a) && is_numeric(b)
|
||||||
|
compare = a.to_i <=> b.to_i
|
||||||
|
return compare if compare != 0
|
||||||
|
else
|
||||||
|
compare = a <=> b
|
||||||
|
return compare if compare != 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
is_c_bigger
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user