parseJidlo method

JidloKategorizovano parseJidlo(
  1. String jidlo
)

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,
  );
}