parser logic added

This commit is contained in:
davmar
2026-08-30 12:24:29 +02:00
parent 35d5c90d81
commit 3b698a3667
28 changed files with 3018 additions and 346 deletions
+21 -12
View File
@@ -17,13 +17,18 @@ final List<Supermarket> kDefaultSupermarkets = [
const Supermarket(name: 'Nettorama', colorValue: 0xFFE87722, sortOrder: 8),
const Supermarket(name: 'Hoogvliet', colorValue: 0xFFD32F2F, sortOrder: 9),
const Supermarket(name: 'Picnic', colorValue: 0xFFE31C5F, sortOrder: 10),
const Supermarket(name: kOtherSupermarket, colorValue: 0xFF78909C, sortOrder: 11),
const Supermarket(
name: kOtherSupermarket,
colorValue: 0xFF78909C,
sortOrder: 11,
),
];
const Map<String, List<String>> kSupermarketAliases = {
'Albert Heijn': ['ALBERT HEIJN', 'AH TO GO', 'AH XL'],
'Jumbo': ['JUMBO'],
'Lidl': ['LIDL'],
'Kruidvat': ['KRUIDVAT'],
'Aldi': ['ALDI'],
'Plus': ['PLUS'],
'Dirk': ['DIRK'],
@@ -31,6 +36,10 @@ const Map<String, List<String>> kSupermarketAliases = {
'SPAR': ['SPAR'],
'Nettorama': ['NETTORAMA'],
'Hoogvliet': ['HOOGVLIET'],
'Ekoplaza': ['EKOPLAZA'],
'Action': ['ACTION'],
'Etos': ['ETOS'],
'World Toko': ['WORLD TOKO'],
'Picnic': ['PICNIC'],
};
@@ -51,20 +60,20 @@ const List<String> kSupermarkets = [
];
/// Returns a supermarket name if it appears in [rawText].
String? detectSupermarket(
String rawText, {
Iterable<String> names = const [],
}) {
String? detectSupermarket(String rawText, {Iterable<String> names = const []}) {
final upper = rawText.toUpperCase();
final extra = names
.map((name) => name.trim())
.where((name) => name.isNotEmpty && name != kOtherSupermarket)
.toList()
..sort((a, b) => b.length.compareTo(a.length));
final extra =
names
.map((name) => name.trim())
.where((name) => name.isNotEmpty && name != kOtherSupermarket)
.toList()
..sort((a, b) => b.length.compareTo(a.length));
for (final name in extra) {
if (RegExp('\\b${RegExp.escape(name)}\\b', caseSensitive: false)
.hasMatch(rawText)) {
if (RegExp(
'\\b${RegExp.escape(name)}\\b',
caseSensitive: false,
).hasMatch(rawText)) {
return name;
}
}