|
1 | 1 | package org.perlonjava.operators;
|
2 | 2 |
|
3 |
| -import org.perlonjava.runtime.NameNormalizer; |
4 |
| -import org.perlonjava.runtime.RuntimeHash; |
5 |
| -import org.perlonjava.runtime.RuntimeScalar; |
| 3 | +import org.perlonjava.perlmodule.Version; |
| 4 | +import org.perlonjava.runtime.*; |
6 | 5 |
|
7 | 6 | /**
|
8 | 7 | * Handles vector string formatting for sprintf operations.
|
@@ -41,15 +40,16 @@ public String formatVectorString(RuntimeScalar value, String flags, int width,
|
41 | 40 | RuntimeScalar originalScalar = versionObj.get("original");
|
42 | 41 | if (originalScalar.getDefinedBoolean()) {
|
43 | 42 | String originalStr = originalScalar.toString();
|
44 |
| - // System.err.println("DEBUG: Version object detected, using original: " + originalStr); |
45 | 43 |
|
46 |
| - // If original starts with 'v', it's a v-string format |
| 44 | + // For version objects created with version->new(), use the original |
| 45 | + // This preserves the exact format (e.g., "1.2" not "1.2.0") |
| 46 | + if (originalStr.matches("\\d+(\\.\\d+)*")) { |
| 47 | + return formatVersionVector(originalStr, flags, width, precision, conversionChar, separator); |
| 48 | + } |
| 49 | + |
| 50 | + // For v-strings (e.g., "v1.2.3"), remove the 'v' |
47 | 51 | if (originalStr.startsWith("v")) {
|
48 |
| - // Remove the 'v' and format as version vector |
49 | 52 | return formatVersionVector(originalStr.substring(1), flags, width, precision, conversionChar, separator);
|
50 |
| - } else { |
51 |
| - // It's a decimal version string |
52 |
| - return formatVersionVector(originalStr, flags, width, precision, conversionChar, separator); |
53 | 53 | }
|
54 | 54 | }
|
55 | 55 | }
|
|
0 commit comments