l += 1
end
- return buf.to_s_with_length(l)
+ return buf.to_s_unsafe(l)
end
# Escape the characters `<`, `>`, `&`, `"`, `'` and `/` as HTML/XML entity references.
#
# var ns = new NativeString(8)
# "Text is String".copy_to_native(ns, 8, 2, 0)
- # assert ns.to_s_with_length(8) == "xt is St"
+ # assert ns.to_s_unsafe(8) == "xt is St"
#
fun copy_to_native(dest: NativeString, n, src_offset, dest_offset: Int) do
var mypos = src_offset
var ns = new NativeString(nslen + 1)
ns[nslen] = 0u8
native_byte_to_s(ns, nslen + 1)
- return ns.to_s_with_length(nslen)
+ return ns.to_s_unsafe(nslen)
end
end
var ln = u8char_len
var ns = new NativeString(ln + 1)
u8char_tos(ns, ln)
- return ns.to_s_with_length(ln)
+ return ns.to_s_unsafe(ln)
end
# Returns `self` escaped to UTF-16
# Returns `self` as a String of `length`.
fun to_s_with_length(length: Int): String is abstract
+ # Returns a new instance of `String` with self as `_items`
+ #
+ # /!\: Does not clean the items for compliance with UTF-8,
+ # Use only if you know what you are doing
+ fun to_s_unsafe(len: nullable Int): String is abstract
+
# Returns `self` as a String with `bytelen` and `length` set
#
# SEE: `abstract_text::Text` for more infos on the difference
end
pos += 1
end
- return nns.to_s_with_length(nlen)
+ return nns.to_s_unsafe(nlen)
end
redef fun [](index) do return _items.char_at(char_to_byte_index(index))
return new FlatString.full(self, bytelen, 0, unilen)
end
+ redef fun to_s_unsafe(len) do
+ if len == null then len = cstring_length
+ return new FlatString.with_infos(self, len, 0)
+ end
+
# Returns `self` as a new String.
redef fun to_s_with_copy: FlatString
do
var rem = count - subpos
var nns = new NativeString(rem)
ns.copy_to(nns, rem, dumped, 0)
- return new RopeBuffer.from(l + nns.to_s_with_length(rem))
+ return new RopeBuffer.from(l + nns.to_s_unsafe(rem))
end
else
var nns = new NativeString(count)
ns.copy_to(nns, count, dumped, 0)
- return new RopeBuffer.from(nns.to_s_with_length(count))
+ return new RopeBuffer.from(nns.to_s_unsafe(count))
end
end