42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/json_schemer/format/hostname.rb', line 42
def valid_hostname?(data)
data.split('.').map do |a_label|
return false if a_label.size > 63
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
|