Skip to content

Commit 7bc35d7

Browse files
committed
Move formatter implementations to internal module
This prevents them becoming API.
1 parent 4dd7d25 commit 7bc35d7

File tree

7 files changed

+69
-27
lines changed

7 files changed

+69
-27
lines changed

rt4core/src/main/java/uk/co/farowl/vsj4/core/PyFloat.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313

1414
import uk.co.farowl.vsj4.core.PyUtil.NoConversion;
1515
import uk.co.farowl.vsj4.internal.EmptyException;
16+
import uk.co.farowl.vsj4.internal.FloatFormatter;
17+
import uk.co.farowl.vsj4.internal.InternalFormat;
18+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatError;
19+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatOverflow;
20+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatSpec;
21+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatUnknown;
1622
import uk.co.farowl.vsj4.kernel.KernelTypeFlag;
1723
import uk.co.farowl.vsj4.kernel.Representation;
18-
import uk.co.farowl.vsj4.stringlib.FloatFormatter;
19-
import uk.co.farowl.vsj4.stringlib.InternalFormat;
20-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatError;
21-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatOverflow;
22-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatSpec;
23-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatUnknown;
2424
import uk.co.farowl.vsj4.support.InterpreterError;
2525
import uk.co.farowl.vsj4.types.Exposed;
2626
import uk.co.farowl.vsj4.types.Exposed.PythonMethod;
@@ -226,7 +226,13 @@ private static Object __rpow__(Object y, Object x) {
226226

227227
// float methods -------------------------------------------------
228228

229-
// TODO: implement __format__ and (revised) stringlib
229+
/**
230+
* Format the {@code self} object.
231+
*
232+
* @param self to format
233+
* @param formatSpec specification
234+
* @return the formatted string from {@code self}
235+
*/
230236
@PythonMethod
231237
static final Object __format__(Object self, Object formatSpec) {
232238

rt4core/src/main/java/uk/co/farowl/vsj4/core/PyLong.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111
import java.math.BigInteger;
1212

1313
import uk.co.farowl.vsj4.core.PyUtil.NoConversion;
14+
import uk.co.farowl.vsj4.internal.IntegerFormatter;
15+
import uk.co.farowl.vsj4.internal.InternalFormat;
16+
import uk.co.farowl.vsj4.internal.InternalFormat.AbstractFormatter;
17+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatError;
18+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatOverflow;
19+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatSpec;
20+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatUnknown;
1421
import uk.co.farowl.vsj4.kernel.Representation;
15-
import uk.co.farowl.vsj4.stringlib.IntegerFormatter;
16-
import uk.co.farowl.vsj4.stringlib.InternalFormat;
17-
import uk.co.farowl.vsj4.stringlib.InternalFormat.AbstractFormatter;
18-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatError;
19-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatOverflow;
20-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatSpec;
21-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatUnknown;
2222
import uk.co.farowl.vsj4.types.Exposed.Default;
2323
import uk.co.farowl.vsj4.types.Exposed.DocString;
2424
import uk.co.farowl.vsj4.types.Exposed.PositionalOnly;
@@ -202,6 +202,13 @@ private static Object intImpl(Object x, Object base)
202202

203203
// int methods ----------------------------------------------------
204204

205+
/**
206+
* Format the {@code self} object.
207+
*
208+
* @param self to format
209+
* @param formatSpec specification
210+
* @return the formatted string from {@code self}
211+
*/
205212
@PythonMethod
206213
static final Object __format__(Object self, Object formatSpec) {
207214

rt4core/src/main/java/uk/co/farowl/vsj4/core/PyUnicode.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2946,6 +2946,13 @@ private static boolean isspace(PySequence.OfInt s) {
29462946

29472947
// TODO implement __format__ and (revised) stringlib
29482948

2949+
/**
2950+
* Format the {@code self} object.
2951+
*
2952+
* @param self to format
2953+
* @param formatSpec specification
2954+
* @return the formatted string from {@code self}
2955+
*/
29492956
@PythonMethod
29502957
static final Object __format__(Object self, Object formatSpec) {
29512958
throw new MissingFeature("str.__format__");

rt4core/src/main/java/uk/co/farowl/vsj4/stringlib/FloatFormatter.java renamed to rt4core/src/main/java/uk/co/farowl/vsj4/internal/FloatFormatter.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
// Copyright (c)2025 Jython Developers.
22
// Licensed to PSF under a contributor agreement.
3-
package uk.co.farowl.vsj4.stringlib;
3+
package uk.co.farowl.vsj4.internal;
44

55
import java.math.BigDecimal;
66
import java.math.MathContext;
77
import java.math.RoundingMode;
88

9-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatError;
10-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatOverflow;
11-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatSpec;
12-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatUnknown;
9+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatError;
10+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatOverflow;
11+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatSpec;
12+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatUnknown;
1313

1414
/**
1515
* A class that provides the implementation of floating-point

rt4core/src/main/java/uk/co/farowl/vsj4/stringlib/IntegerFormatter.java renamed to rt4core/src/main/java/uk/co/farowl/vsj4/internal/IntegerFormatter.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// Copyright (c)2025 Jython Developers.
22
// Licensed to PSF under a contributor agreement.
3-
package uk.co.farowl.vsj4.stringlib;
3+
package uk.co.farowl.vsj4.internal;
44

55
import java.math.BigInteger;
66

7-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatError;
8-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatOverflow;
9-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatSpec;
10-
import uk.co.farowl.vsj4.stringlib.InternalFormat.FormatUnknown;
7+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatError;
8+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatOverflow;
9+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatSpec;
10+
import uk.co.farowl.vsj4.internal.InternalFormat.FormatUnknown;
1111

1212
/**
1313
* A class that provides the implementation of integer formatting. In a

rt4core/src/main/java/uk/co/farowl/vsj4/stringlib/InternalFormat.java renamed to rt4core/src/main/java/uk/co/farowl/vsj4/internal/InternalFormat.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Copyright (c)2025 Jython Developers.
22
// Licensed to PSF under a contributor agreement.
3-
package uk.co.farowl.vsj4.stringlib;
3+
package uk.co.farowl.vsj4.internal;
44

55
import uk.co.farowl.vsj4.core.PyUtil.NoConversion;
66

@@ -134,6 +134,12 @@ public AbstractFormatter append(char c) {
134134
return this;
135135
}
136136

137+
/**
138+
* Append one character.
139+
*
140+
* @param c character to append
141+
* @return {@code this} formatter
142+
*/
137143
public AbstractFormatter append(int c) {
138144
result.appendCodePoint(c);
139145
return this;
@@ -1169,6 +1175,12 @@ private int scanInteger() {
11691175
public static class FormatError extends Exception {
11701176
private static final long serialVersionUID = 1L;
11711177

1178+
/**
1179+
* Construct a generic {@link FormatError} for a particular type
1180+
* code.
1181+
*
1182+
* @param message for the exception
1183+
*/
11721184
public FormatError(String message) { super(message); }
11731185
}
11741186

@@ -1180,6 +1192,11 @@ public static class FormatError extends Exception {
11801192
public static class FormatOverflow extends FormatError {
11811193
private static final long serialVersionUID = 1L;
11821194

1195+
/**
1196+
* Construct {@link FormatOverflow} for a particular type code.
1197+
*
1198+
* @param message for the exception
1199+
*/
11831200
public FormatOverflow(String message) { super(message); }
11841201
}
11851202

@@ -1194,6 +1211,11 @@ public static class FormatOverflow extends FormatError {
11941211
public static class FormatUnknown extends FormatError {
11951212
private static final long serialVersionUID = 1L;
11961213

1214+
/**
1215+
* Construct {@link FormatUnknown} for a particular type code.
1216+
*
1217+
* @param typeCode character of the unknown format type
1218+
*/
11971219
public FormatUnknown(char typeCode) {
11981220
super(String.format("Unknown format code '%c'", typeCode));
11991221
}

rt4core/src/main/java/uk/co/farowl/vsj4/stringlib/package-info.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* The {@code stringlib} package contains classes that support the
3-
* implementation of built-in types, and relevant to strings, formatting
4-
* or arrays of integers (that feature heavily in the implementation of
3+
* implementation of built-in types, and relevant to strings or arrays
4+
* of integers (that feature heavily in the implementation of
55
* {@code str}).
66
* <p>
77
* Classes {@code public} in this package are provisionally intended to

0 commit comments

Comments
 (0)