48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/json_schemer/format/hostname.rb', line 48
def valid_hostname?(data)
hostname_size = 0
data.split(LABEL_SEPARATOR_REGEX, -1).map do |label|
a_label = SimpleIDN.to_ascii(label)
return false if a_label.size > MAX_A_LABEL_SIZE
hostname_size += a_label.size + 1 return false if hostname_size > MAX_HOSTNAME_SIZE
u_label = SimpleIDN.to_unicode(a_label)
return false if u_label.slice(2, 2) == '--'
return false if ARABIC_INDIC_DIGITS_REGEX.match?(u_label) && ARABIC_EXTENDED_DIGITS_REGEX.match?(u_label)
u_label.gsub!(CONTEXT_REGEX, 'ok')
u_label.gsub!(KATAKANA_MIDDLE_DOT_REGEX, 'ok') if KATAKANA_MIDDLE_DOT_CONTEXT_REGEX.match?(u_label)
u_label
end.join('.').match?(HOSTNAME_REGEX)
rescue SimpleIDN::ConversionError
false
end
|