Skip to content

Commit f7844e5

Browse files
committed
👌 Top Level Regex initialization, remove redundant variable (isoos#9)
1 parent 42cede9 commit f7844e5

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

lib/src/binary_codec.dart

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ final _hex = <String>[
2727
'e',
2828
'f',
2929
];
30+
final _numericPattern = RegExp(r'^(\d*)(\.\d*)?$');
31+
final _patternLeadingZeros = RegExp(r'^0+');
32+
final _patternTrailingZeros = RegExp(r'0+$');
3033

3134
class PostgresBinaryEncoder extends Converter<dynamic, Uint8List?> {
3235
final PostgreSQLDataType _dataType;
@@ -313,22 +316,18 @@ class PostgresBinaryEncoder extends Converter<dynamic, Uint8List?> {
313316
} else if (value.startsWith('+')) {
314317
value = value.substring(1);
315318
}
316-
final numericPattern = RegExp(r'^(\d*)(\.\d*)?$');
317-
if (!numericPattern.hasMatch(value)) {
319+
if (!_numericPattern.hasMatch(value)) {
318320
throw FormatException('Invalid format for parameter value. Expected: String which matches "/^(\\d*)(\\.\\d*)?\$/" Got: ${value}');
319321
}
320322
final parts = value.split('.');
321323

322-
final patternLeadingZeros = RegExp(r'^0+');
323-
final patternTrailingZeros = RegExp(r'0+$');
324-
325-
var intPart = parts[0].replaceAll(patternLeadingZeros, '');
324+
var intPart = parts[0].replaceAll(_patternLeadingZeros, '');
326325
var intWeight = intPart.isEmpty ? -1 : (intPart.length - 1) ~/ 4;
327326
intPart = intPart.padLeft((intWeight + 1) * 4, '0');
328327

329328
var fractPart = parts.length > 1 ? parts[1] : '';
330329
final dScale = fractPart.length;
331-
fractPart = fractPart.replaceAll(patternTrailingZeros, '');
330+
fractPart = fractPart.replaceAll(_patternTrailingZeros, '');
332331
var fractWeight = fractPart.isEmpty ? -1 : (fractPart.length - 1) ~/ 4;
333332
fractPart = fractPart.padRight((fractWeight + 1) * 4, '0');
334333

@@ -339,7 +338,7 @@ class PostgresBinaryEncoder extends Converter<dynamic, Uint8List?> {
339338
// Weight of value 0 or '' is 0;
340339
weight = 0;
341340
} else {
342-
final leadingZeros = patternLeadingZeros.firstMatch(fractPart)?.group(0);
341+
final leadingZeros = _patternLeadingZeros.firstMatch(fractPart)?.group(0);
343342
if (leadingZeros != null) {
344343
final leadingZerosWeight = leadingZeros.length ~/ 4; // Get count of leading zeros '0000'
345344
fractPart = fractPart.substring(leadingZerosWeight * 4); // Remove leading zeros '0000'
@@ -349,7 +348,7 @@ class PostgresBinaryEncoder extends Converter<dynamic, Uint8List?> {
349348
}
350349
} else if (fractWeight < 0) {
351350
// If int fract has no weight, handle trailing zeros in int part.
352-
final trailingZeros = patternTrailingZeros.firstMatch(intPart)?.group(0);
351+
final trailingZeros = _patternTrailingZeros.firstMatch(intPart)?.group(0);
353352
if (trailingZeros != null) {
354353
final trailingZerosWeight = trailingZeros.length ~/ 4; // Get count of trailing zeros '0000'
355354
intPart = intPart.substring(0, intPart.length - trailingZerosWeight * 4); // Remove leading zeros '0000'
@@ -370,8 +369,7 @@ class PostgresBinaryEncoder extends Converter<dynamic, Uint8List?> {
370369
for (var i = 0; i <= fractWeight * 4; i += 4) {
371370
writer.writeInt16(int.parse(fractPart.substring(i, i + 4)));
372371
}
373-
final as = writer.toBytes();
374-
return as;
372+
return writer.toBytes();
375373
}
376374
}
377375

@@ -574,7 +572,7 @@ class PostgresBinaryDecoder extends Converter<Uint8List, dynamic> {
574572
intPart += '0000' * (weight + 1);
575573
}
576574

577-
var result = '$sign${intPart.replaceAll(RegExp(r'^0+'), '')}';
575+
var result = '$sign${intPart.replaceAll(_patternLeadingZeros, '')}';
578576
if (result.isEmpty) result = '0'; // Show at least 0, if no int value is given.
579577
if (dScale > 0) {
580578
// Only add fractional digits, if dScale allows

0 commit comments

Comments
 (0)