From: Lucas Bajolet Date: Mon, 21 Jul 2014 14:57:38 +0000 (-0400) Subject: lib/string_exp/utf8: Output usable with UTF-8. X-Git-Tag: v0.6.7~9^2~2 X-Git-Url: http://nitlanguage.org lib/string_exp/utf8: Output usable with UTF-8. Signed-off-by: Lucas Bajolet --- diff --git a/lib/string_experimentations/utf8.nit b/lib/string_experimentations/utf8.nit index f65a359..b1ba7d1 100644 --- a/lib/string_experimentations/utf8.nit +++ b/lib/string_experimentations/utf8.nit @@ -144,6 +144,23 @@ extern class UnicodeChar `{ UTF8Char* `} return false end + redef fun output import UnicodeChar.code_point `{ + switch(UnicodeChar_len(recv)){ + case 1: + printf("%c", recv->ns[recv->pos]); + break; + case 2: + printf("%c%c", recv->ns[recv->pos], recv->ns[recv->pos + 1]); + break; + case 3: + printf("%c%c%c", recv->ns[recv->pos], recv->ns[recv->pos + 1], recv->ns[recv->pos + 2]); + break; + case 4: + printf("%c%c%c%c", recv->ns[recv->pos], recv->ns[recv->pos + 1], recv->ns[recv->pos + 2], recv->ns[recv->pos + 3]); + break; + } + `} + redef fun to_s import NativeString.to_s_with_length `{ int len = utf8___UnicodeChar_len___impl(recv); char* r = malloc(len + 1); @@ -324,6 +341,16 @@ redef class FlatString return outstr.to_s_with_length(self.bytelen) end + redef fun output + do + var i = self.index_from + var imax = self.index_to + while i <= imax do + index[i].output + i += 1 + end + end + end redef class NativeString