lib/core: Added surrogate detection methods to `Char`
[nit.git] / lib / core / text / abstract_text.nit
index 7fb65ee..6c2acd4 100644 (file)
@@ -1755,8 +1755,20 @@ redef class Char
                return cp >= 0xD800 and cp <= 0xDFFF
        end
 
+       # Is `self` a UTF-16 high surrogate ?
+       fun is_hi_surrogate: Bool do
+               var cp = code_point
+               return cp >= 0xD800 and cp <= 0xDBFF
+       end
+
+       # Is `self` a UTF-16 low surrogate ?
+       fun is_lo_surrogate: Bool do
+               var cp = code_point
+               return cp >= 0xDC00 and cp <= 0xDFFF
+       end
+
        # Length of `self` in a UTF-8 String
-       private fun u8char_len: Int do
+       fun u8char_len: Int do
                var c = self.code_point
                if c < 0x80 then return 1
                if c <= 0x7FF then return 2