parseJidlo method
zpracuje jídlo a rozdělí ho na kategorie (hlavní jídlo, polévka, salátový bar, pití...)
Implementation
JidloKategorizovano parseJidlo(String jidlo) {
List<String> cistyListJidel = jidlo.split(',');
for (int i = 0; i < cistyListJidel.length; i++) {
cistyListJidel[i] = cistyListJidel[i].trimLeft();
}
//konstantní řetězce pro kategorizaci
List<String> polevky = [
'Polévka',
'Polívka',
'zeleninový krém',
'fridátové nudle',
'vývar',
'frit. n' /*fritované nudle*/,
'frit.n' /*fritované nudle*/,
];
List<String> salatoveBary = ['salát', 'kompot'];
List<String> piticka = [
'nápoj',
'napoj',
'čaj',
'caj',
'káva',
'kava',
'mošt',
'most',
'sirup',
'voda',
'mléko',
'mleko',
'vit. nápoj' /*vitamínový nápoj*/,
'vit.nápoj' /*vitamínový nápoj*/,
'džus',
'dzus',
'kakao',
];
List<String> ostatniVeci = [
'ovoce',
'pečivo',
'pecivo',
'chléb',
'chleb',
'rohlík',
'rohlik',
'tyčinka',
'tycinka',
'dezert',
'termix',
'tvarohá' /*Tvaroháček/Tvaroháčky*/,
'tvaroha' /*tvaroháček/tvaroháčky*/,
'šáteč' /*šáteček/šátečky */,
'satec' /*šáteček/šátečky */,
'šateč',
'šatec',
'sateč',
];
bool kategorie(String vec, List<String> kategorie) {
for (int i = 0; i < kategorie.length; i++) {
if (vec.toLowerCase().contains(kategorie[i].toLowerCase())) {
return true;
}
}
return false;
}
String polevka = '';
String hlavniJidlo = '';
String salatovyBar = '';
String piti = '';
String ostatni = '';
for (int i = 0; i < cistyListJidel.length; i++) {
if (kategorie(cistyListJidel[i], polevky)) {
if (polevka != '') {
polevka += ', ';
}
polevka = '$polevka${cistyListJidel[i]}';
} else if (kategorie(cistyListJidel[i], salatoveBary)) {
if (salatovyBar != '') {
salatovyBar += ', ';
}
salatovyBar = '$salatovyBar${cistyListJidel[i]}';
} else if (kategorie(cistyListJidel[i], piticka)) {
if (piti != '') {
piti += ', ';
}
piti = '$piti${cistyListJidel[i]}';
} else if (kategorie(cistyListJidel[i], ostatniVeci) &&
!cistyListJidel[i].contains('ovocem')) {
if (ostatni != '') {
ostatni += ', ';
}
ostatni = '$ostatni${cistyListJidel[i]}';
} else {
if (hlavniJidlo != '') {
hlavniJidlo += ', ';
}
hlavniJidlo = '$hlavniJidlo${cistyListJidel[i]}';
}
}
hlavniJidlo = hlavniJidlo.trimLeft();
polevka = polevka.trimLeft();
piti = piti.trimLeft();
salatovyBar = salatovyBar.trimLeft();
ostatni = ostatni.trimLeft();
//jídelny mají prý rádi saláty jako hlavní jídlo. Tohle je pro to fix:
if (hlavniJidlo == '') {
for (String jidlo in salatovyBar.split(', ')) {
if (jidlo.contains('salát')) {
hlavniJidlo = jidlo;
salatovyBar = salatovyBar.replaceAll('$jidlo, ', '');
salatovyBar = salatovyBar.replaceAll(jidlo, '');
break;
}
}
}
if (polevka != '') {
//make first letter of polevka capital
polevka = polevka.substring(0, 1).toUpperCase() + polevka.substring(1);
}
if (ostatni != '') {
//make first letter of ostatni capital
ostatni = ostatni.substring(0, 1).toUpperCase() + ostatni.substring(1);
}
if (hlavniJidlo != '') {
//make first letter of hlavniJidlo capital
hlavniJidlo =
hlavniJidlo.substring(0, 1).toUpperCase() + hlavniJidlo.substring(1);
if (hlavniJidlo.length > 3 && hlavniJidlo.substring(0, 3) == 'N. ') {
hlavniJidlo = hlavniJidlo.substring(3);
}
}
if (piti != '') {
//make first letter of piti capital
piti = piti.substring(0, 1).toUpperCase() + piti.substring(1);
}
if (salatovyBar != '') {
//make first letter of salatovyBar capital
salatovyBar =
salatovyBar.substring(0, 1).toUpperCase() + salatovyBar.substring(1);
}
return JidloKategorizovano(
polevka: polevka,
hlavniJidlo: hlavniJidlo,
salatovyBar: salatovyBar,
piti: piti,
ostatni: ostatni,
);
}