X-Git-Url: http://nitlanguage.org diff --git a/lib/core/text/native.nit b/lib/core/text/native.nit index 11c8d34..4028ea0 100644 --- a/lib/core/text/native.nit +++ b/lib/core/text/native.nit @@ -16,7 +16,7 @@ import math redef class Byte # Gives the length of the UTF-8 char starting with `self` - private fun u8len: Int do + fun u8len: Int do if self & 0b1000_0000u8 == 0u8 then return 1 else if self & 0b1110_0000u8 == 0b1100_0000u8 then @@ -130,7 +130,7 @@ extern class NativeString `{ char* `} return ns_i end - # Gets the byte index of char at position `n` in UTF-8 String + # Gets the char index of byte at position `n` in a UTF-8 String # # `char_from` and `byte_from` are cached values to seek from. # @@ -173,4 +173,16 @@ extern class NativeString `{ char* `} if length_of_char_at(stpos) >= (endpos - stpos + 1) then return pos return endpos end + + # Number of UTF-8 characters in `self` between positions `from` and `to` + fun utf8_length(from, to: Int): Int do + var st = from + var lst = to + var ln = 0 + while st <= lst do + st += length_of_char_at(st) + ln += 1 + end + return ln + end end