Package org.python.core.stringlib
Class TextFormatter
java.lang.Object
org.python.core.stringlib.InternalFormat.Formatter
org.python.core.stringlib.TextFormatter
- All Implemented Interfaces:
Appendable
A class that provides the implementation of
str
and unicode
formatting.
In a limited way, it acts like a StringBuilder to which text, formatted according to the format
specifier supplied at construction. These are ephemeral objects that are not, on their own,
thread safe.-
Constructor Summary
ConstructorDescriptionTextFormatter
(StringBuilder result, InternalFormat.Spec spec) Construct the formatter from a client-supplied buffer, to which the result will be appended, and a specification.Construct the formatter from a specification, allocating a buffer internally for the result. -
Method Summary
Modifier and TypeMethodDescriptionappend
(char c) append
(CharSequence csq) append
(CharSequence csq, int start, int end) Format the givenString
into theresult
buffer.pad()
Pad the result so far (defined as the contents ofInternalFormat.Formatter.result
fromInternalFormat.Formatter.mark
to the end) using the alignment, target width and fill character defined inInternalFormat.Formatter.spec
.Methods inherited from class org.python.core.stringlib.InternalFormat.Formatter
alignmentNotAllowed, alternateFormNotAllowed, alternateFormNotAllowed, getPyResult, getResult, isBytes, notAllowed, notAllowed, precisionNotAllowed, precisionTooLarge, setBytes, setStart, signNotAllowed, toString, unknownFormat, zeroPaddingNotAllowed
-
Constructor Details
-
TextFormatter
Construct the formatter from a client-supplied buffer, to which the result will be appended, and a specification. SetsInternalFormat.Formatter.mark
to the end of the buffer.- Parameters:
result
- destination bufferspec
- parsed conversion specification
-
TextFormatter
Construct the formatter from a specification, allocating a buffer internally for the result.- Parameters:
spec
- parsed conversion specification
-
-
Method Details
-
append
- Specified by:
append
in interfaceAppendable
- Overrides:
append
in classInternalFormat.Formatter
-
append
- Specified by:
append
in interfaceAppendable
- Overrides:
append
in classInternalFormat.Formatter
-
append
- Specified by:
append
in interfaceAppendable
- Overrides:
append
in classInternalFormat.Formatter
- Throws:
IndexOutOfBoundsException
-
format
Format the givenString
into theresult
buffer. Largely, this is a matter of copying the value of the argument, but a subtlety arises when the string contains supplementary (non-BMP) Unicode characters, which are represented as surrogate pairs. The precision specified in the format relates to a count of Unicode characters (code points), not Javachar
s. The method deals with this correctly, essentially by not counting the high-surrogates in the allowance. The final value ofInternalFormat.Formatter.lenWhole
counts the UTF-16 units added.- Parameters:
value
- to format- Returns:
- this
TextFormatter
object
-
pad
Description copied from class:InternalFormat.Formatter
Pad the result so far (defined as the contents ofInternalFormat.Formatter.result
fromInternalFormat.Formatter.mark
to the end) using the alignment, target width and fill character defined inInternalFormat.Formatter.spec
. The action of padding will increase the length of this segment to the target width, if that is greater than the current length.When the padding method has decided that that it needs to add n padding characters, it will affect
InternalFormat.Formatter.start
orInternalFormat.Formatter.lenWhole
as follows.Effect of padding on InternalFormat.Formatter.start
orInternalFormat.Formatter.lenWhole
align meaning start lenWhole result.length() <
left-aligned +0 +0 +n >
right-aligned +n +0 +n ^
centred +(n/2) +0 +n =
pad after sign +0 +n +n result[mark:]
.) When this would not be appropriate, it is up to the client to disallow this (whichcomplex
does).- Overrides:
pad
in classInternalFormat.Formatter
- Returns:
- this Formatter object
-