Skip to content

Commit 76bdd2b

Browse files
committed
Refactor package structure for decimal formatter components and update import paths
1 parent 2149fa7 commit 76bdd2b

File tree

19 files changed

+53
-82
lines changed

19 files changed

+53
-82
lines changed

README.md

Lines changed: 20 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@ dependencies {
4646
val formatter = DecimalFormatter(DecimalFormatterConfiguration.european())
4747

4848
// Format numbers
49-
val formatted = formatter.format("123456") // "1.234,56"
50-
51-
// Extract raw digits from any input
52-
val rawDigits = formatter.getRawDigits("€1.234,56") // "123456"
49+
val formatted = formatter.format("123456") // "1.234,56"
5350
```
5451

5552
### Compose UI Components
@@ -163,9 +160,9 @@ data class DecimalValue internal constructor(
163160
val fullDisplay: String? // "€1.234,56" - formatted with prefix. Nullable if you didn't provide a prefix
164161
)
165162

166-
// Note: You can only create `DecimalValue` using `UiDecimalFormatter.format()` or `DecimalFormatter.format()` method.
163+
// Note: You can only create `DecimalValue` using `UiDecimalFormatter.format()`
167164
// Usage examples
168-
val value = decimalFormatter.format("123456")
165+
val value = uiDecimalFormatter.format("123456")
169166
println(value.rawDigits) // "123456"
170167
println(value.display) // "1.234,56" -> Can vary depending on the type of formatter used
171168
println(value.fullDisplay) // "€1.234,56" -> Can vary depending on the type of formatter used.
@@ -205,23 +202,6 @@ DecimalFormatterConfiguration(
205202
)
206203
```
207204

208-
## 🔧 Advanced Usage
209-
210-
### Type Conversions
211-
```kotlin
212-
val formatter = UiDecimalFormatter(
213-
DecimalFormatter(DecimalFormatterConfiguration.us()),
214-
prefix = "$"
215-
)
216-
217-
// All numeric types supported
218-
formatter.format("123456") // String input
219-
formatter.format(123456) // Int input
220-
formatter.format(123456L) // Long input
221-
formatter.format(1234.56f) // Float input
222-
formatter.format(1234.56) // Double input
223-
```
224-
225205
### Input Validation & Cleaning
226206
```kotlin
227207
// The formatter automatically handles invalid input
@@ -230,26 +210,6 @@ formatter.format("$1,234.56") // Extracts digits → "123456" → "1,234.56"
230210
formatter.format("000123") // Removes leading zeros → "123" → "1.23"
231211
```
232212

233-
## 🧪 Testing
234-
235-
The library includes comprehensive test coverage for both unit and compose testing:
236-
237-
```kotlin
238-
@Test
239-
fun formatterHandlesEuropeanFormatCorrectly() {
240-
val formatter = UiDecimalFormatter(
241-
DecimalFormatter(DecimalFormatterConfiguration.european()),
242-
prefix = ""
243-
)
244-
245-
val result = formatter.format("123456")
246-
247-
assertEquals("123456", result.rawDigits)
248-
assertEquals("1.234,56", result.display)
249-
assertEquals("€1.234,56", result.fullDisplay)
250-
}
251-
```
252-
253213
## 🐛 Debug Logging
254214

255215
Enable debug logging to troubleshoot formatting issues:
@@ -272,14 +232,24 @@ This library is split into two modules:
272232

273233
```
274234
decimal-formatter/
275-
├── core/ # Platform-agnostic formatting
276-
│ ├── DecimalFormatter # Core formatting logic
277-
│ └── DecimalFormatterConfiguration # Formatting rules
235+
└── core/ # Platform-agnostic formatting
236+
└── formatter/
237+
├── DecimalFormatter # Core formatting logic
238+
├── DecimalFormatterConfiguration # Formatting rules
239+
└── DecimalFormatterDebugConfig # Debug logging configuration
240+
└── model/
241+
├── ThousandSeparator # Enum for thousand separators
242+
└── DecimalSeparator # Enum for decimal separators
243+
└── utils/
244+
└── LoggerUtils # Utility for logging
278245
└── compose/ # Compose UI components
279-
├── DecimalTextField # Basic text field without any decorations
280-
├── OutlinedDecimalTextField # Material text field
281-
├── UiDecimalFormatter # UI-layer formatter
282-
└── DecimalValue # Structured value object
246+
└── components/
247+
├──DecimalTextField # Basic text field without any decorations
248+
└── OutlinedDecimalTextField # Material text field
249+
└── model/
250+
└── DecimalValue
251+
└── formatter/
252+
└── UiDecimalFormatter # UI-layer formatter with prefix support
283253
```
284254

285255
## 🤝 Contributing

app/src/main/java/dev/robercoding/app/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import androidx.compose.ui.Modifier
1010
import androidx.compose.ui.tooling.preview.Preview
1111
import dev.robercoding.app.ui.theme.DecimalFormatterTheme
1212
import dev.robercoding.decimal.formatter.App
13-
import dev.robercoding.decimal.formatter.DecimalFormatterDebugConfig
13+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatterDebugConfig
1414

1515
class MainActivity : ComponentActivity() {
1616
override fun onCreate(savedInstanceState: Bundle?) {

decimal-formatter-compose/src/androidTest/kotlin/dev/robercoding/decimal/formatter/compose/components/DecimalTextFieldTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import androidx.compose.ui.test.performTextClearance
1616
import androidx.compose.ui.test.performTextInput
1717
import androidx.compose.ui.test.runComposeUiTest
1818
import dev.robercoding.decimal.formatter.compose.formatter.UiDecimalFormatter
19-
import dev.robercoding.decimal.formatter.core.DecimalFormatter
20-
import dev.robercoding.decimal.formatter.core.DecimalFormatterConfiguration
19+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatter
20+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatterConfiguration
2121
import kotlin.test.Test
2222
import kotlin.test.assertEquals
2323

decimal-formatter-compose/src/androidTest/kotlin/dev/robercoding/decimal/formatter/compose/components/OutlinedDecimalTextFieldTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import androidx.compose.ui.test.performTextClearance
1616
import androidx.compose.ui.test.performTextInput
1717
import androidx.compose.ui.test.runComposeUiTest
1818
import dev.robercoding.decimal.formatter.compose.formatter.UiDecimalFormatter
19-
import dev.robercoding.decimal.formatter.core.DecimalFormatter
20-
import dev.robercoding.decimal.formatter.core.DecimalFormatterConfiguration
19+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatter
20+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatterConfiguration
2121
import kotlin.test.Test
2222
import kotlin.test.assertEquals
2323

decimal-formatter-compose/src/commonMain/kotlin/dev/robercoding/decimal/formatter/compose/components/DecimalTextField.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import dev.robercoding.decimal.formatter.compose.formatter.UiDecimalFormatter
1717
import dev.robercoding.decimal.formatter.compose.formatter.rememberUiDecimalFormatter
1818
import dev.robercoding.decimal.formatter.compose.model.DecimalValue
1919
import dev.robercoding.decimal.formatter.compose.transformation.default.DecimalVisualTransformation
20-
import dev.robercoding.decimal.formatter.core.DecimalFormatterConfiguration
20+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatterConfiguration
2121

2222
/**
2323
* A text field component for decimal number input with automatic formatting.

decimal-formatter-compose/src/commonMain/kotlin/dev/robercoding/decimal/formatter/compose/components/OutlinedDecimalTextField.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import dev.robercoding.decimal.formatter.compose.formatter.UiDecimalFormatter
1717
import dev.robercoding.decimal.formatter.compose.formatter.rememberUiDecimalFormatter
1818
import dev.robercoding.decimal.formatter.compose.model.DecimalValue
1919
import dev.robercoding.decimal.formatter.compose.transformation.default.DecimalVisualTransformation
20-
import dev.robercoding.decimal.formatter.core.DecimalFormatterConfiguration
20+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatterConfiguration
2121

2222
/**
2323
* A text field component for decimal number input with automatic formatting.

decimal-formatter-compose/src/commonMain/kotlin/dev/robercoding/decimal/formatter/compose/formatter/UiDecimalFormatter.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package dev.robercoding.decimal.formatter.compose.formatter
22

33
import dev.robercoding.decimal.formatter.compose.model.DecimalValue
4-
import dev.robercoding.decimal.formatter.core.DecimalFormatter
5-
import dev.robercoding.decimal.formatter.core.DecimalFormatterConfiguration
4+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatter
65

76
data class UiDecimalFormatter(
87
private val decimalFormatter: DecimalFormatter = DecimalFormatter.DefaultFormatter,

decimal-formatter-compose/src/commonMain/kotlin/dev/robercoding/decimal/formatter/compose/formatter/rememberUiDecimalFormatter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package dev.robercoding.decimal.formatter.compose.formatter
22

33
import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.remember
5-
import dev.robercoding.decimal.formatter.core.DecimalFormatter
6-
import dev.robercoding.decimal.formatter.core.DecimalFormatterConfiguration
5+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatter
6+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatterConfiguration
77

88
@Composable
99
fun rememberUiDecimalFormatter(configuration: DecimalFormatterConfiguration = DecimalFormatterConfiguration.DefaultConfiguration, prefix: String? = null): UiDecimalFormatter {

decimal-formatter-compose/src/commonMain/kotlin/dev/robercoding/decimal/formatter/compose/transformation/default/DecimalOffsetMapping.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package dev.robercoding.decimal.formatter.compose.transformation.default
22

33
import androidx.compose.ui.text.input.OffsetMapping
4-
import dev.robercoding.decimal.formatter.utils.logMessage
54

65
/**
76
* Offset mapping to keep cursor position consistent during decimal formatting transformations.

decimal-formatter-compose/src/commonTest/kotlin/dev/robercoding/decimal/formatter/compose/formatter/UiDecimalFormatterTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dev.robercoding.decimal.formatter.compose.formatter
22

3-
import dev.robercoding.decimal.formatter.core.DecimalFormatter
4-
import dev.robercoding.decimal.formatter.core.DecimalFormatterConfiguration
3+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatter
4+
import dev.robercoding.decimal.formatter.core.formatter.DecimalFormatterConfiguration
55
import kotlin.test.Test
66
import kotlin.test.assertEquals
77
import kotlin.test.assertNull

0 commit comments

Comments
 (0)