]> code.delx.au - gnu-emacs/commitdiff
New function `puny-highly-restrictive-domain-p'
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 30 Dec 2015 09:10:20 +0000 (10:10 +0100)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 30 Dec 2015 09:10:20 +0000 (10:10 +0100)
* lisp/net/puny.el (puny-highly-restrictive-string-p): Rename.
(puny-highly-restrictive-domain-p): New function.

lisp/net/puny.el

index ac47e13c97d4e182ef1da25bebc0f97b97e0e859..f2fa346434862fd694c3f95fdd96a2c66796d2c9 100644 (file)
@@ -193,7 +193,12 @@ For instance \"xn--bcher-kva\" => \"bücher\"."
 ;; http://www.unicode.org/reports/tr39/#Restriction_Level_Detection
 ;; http://www.unicode.org/reports/tr31/#Table_Candidate_Characters_for_Inclusion_in_Identifiers
 
-(defun puny-highly-restrictive-p (string)
+(defun puny-highly-restrictive-string-p (string)
+  "Say whether STRING is \"highly restrictive\" in the Unicode IDNA sense.
+See http://www.unicode.org/reports/tr39/#Restriction_Level_Detection
+for details.  The main idea is that if you're mixing
+scripts (like latin and cyrillic), you may confuse the user by
+using homographs."
   (let ((scripts
          (delq
           t
@@ -233,6 +238,11 @@ For instance \"xn--bcher-kva\" => \"bücher\"."
                          (latin han bopomofo)
                          (latin han hangul)))))))
 
+(defun puny-highly-restrictive-domain-p (domain)
+  "Say whether DOMAIN is \"highly restrictive\" in the Unicode IDNA sense.
+See `puny-highly-restrictive-string-p' for further details."
+  (seq-every-p 'puny-highly-restrictive-string-p (split-string domain "[.]")))
+
 (provide 'puny)
 
 ;;; puny.el ends here