module SimpleIDN

Borrowed from github.com/mmriis/simpleidn

Public Instance Methods

to_ascii(domain) click to toggle source

Converts a UTF-8 unicode string to a punycode ACE string.

Example

SimpleIDN.to_ascii("møllerriis.com")
 => "xn--mllerriis-l8a.com"
# File lib/motion-markdown-it/common/simpleidn.rb, line 215
def to_ascii(domain)
  domain_array = domain.split(".") rescue []
  return domain if domain_array.length == 0
  out = []
  i = 0
  while i < domain_array.length
    s = domain_array[i]
    out << (s =~ /[^A-Z0-9\-*_]/i ? "xn--" + Punycode.encode(s) : s)
    i += 1
  end
  return out.join(".")
end
to_unicode(domain) click to toggle source

Converts a punycode ACE string to a UTF-8 unicode string.

Example

SimpleIDN.to_unicode("xn--mllerriis-l8a.com")
 => "møllerriis.com"
# File lib/motion-markdown-it/common/simpleidn.rb, line 232
def to_unicode(domain)
  domain_array = domain.split(".") rescue []
  return domain if domain_array.length == 0
  out = []
  i = 0
  while i < domain_array.length
    s = domain_array[i]
    out << (s =~ /^xn\-\-/i ? Punycode.decode(s.gsub('xn--','')) : s)
    i += 1
  end
  return out.join(".")
end