9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/scrapetor/money.rb', line 9
def self.parse(s)
return nil if s.nil?
m = s.to_s.match(NUMERIC)
return nil unless m
num = m[0]
dots = num.count(".")
commas = num.count(",")
if dots > 0 && commas > 0
if num.rindex(".") > num.rindex(",")
num = num.delete(",")
else
num = num.delete(".").tr(",", ".")
end
elsif commas > 0
num = THOUSAND_GROUPED_COMMAS.match?(num) ? num.delete(",") : num.tr(",", ".")
elsif dots > 1
num = THOUSAND_GROUPED_DOTS.match?(num) ? num.delete(".") : num
end
num.to_f
end
|