discourse/lib/ip_addr.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

38 lines
681 B
Ruby

# frozen_string_literal: true
class IPAddr
def self.handle_wildcards(val)
return if val.blank?
num_wildcards = val.count('*')
return val if num_wildcards == 0
# strip ranges like "/16" from the end if present
v = val.gsub(/\/.*/, '')
return if v[v.index('*')..-1] =~ /[^\.\*]/
parts = v.split('.')
(4 - parts.size).times { parts << '*' } # support strings like 192.*
v = parts.join('.')
"#{v.tr('*', '0')}/#{32 - (v.count('*') * 8)}"
end
def to_cidr_s
if @addr
mask = @mask_addr.to_s(2).count('1')
if mask == 32
to_s
else
"#{to_s}/#{mask}"
end
else
nil
end
end
end