| Replaceable is an interface representing a
string of characters that supports the replacement of a range of
itself with a new string of characters. It is used by APIs that
change a piece of text while retaining metadata. Metadata is data
other than the Unicode characters returned by char32At(). One
example of metadata is style attributes; another is an edit
history, marking each character with an author and revision number.
An implicit aspect of the Replaceable API is that
during a replace operation, new characters take on the metadata of
the old characters. For example, if the string "the bold
font" has range (4, 8) replaced with "strong", then it becomes "the
strong font".
Replaceable specifies ranges using a start
offset and a limit offset. The range of characters thus specified
includes the characters at offset start..limit-1. That is, the
start offset is inclusive, and the limit offset is exclusive.
Replaceable also includes API to access characters
in the string: length() , charAt() ,
char32At() , and extractBetween() .
For a subclass to support metadata, typical behavior of
replace() is the following:
- Set the metadata of the new text to the metadata of the first
character replaced
- If no characters are replaced, use the metadata of the
previous character
- If there is no previous character (i.e. start == 0), use the
following character
- If there is no following character (i.e. the replaceable was
empty), use default metadata
- If the code point U+FFFF is seen, it should be interpreted as
a special marker having no metadata
-
If this is not the behavior, the subclass should document any differences.
Copyright © IBM Corporation 1999. All rights reserved.
author: Alan Liu |