converters top-level property

Map<String, Converter> converters
final

Implementation

final Map<String, Converter> converters = {
  'a': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_A];
      case Location.INITIAL:
        return [
          Menksoft.INIT_A,
        ];
      case Location.MEDIAL:
        return [
          context.isPreviousRoundAnytime ? Menksoft.MEDI_A_BP : Menksoft.MEDI_A,
        ];
      case Location.FINAL:
        return [
          if (context.isPreviousMvs)
            Menksoft.FINA_A_MVS
          else if (context.isPreviousRoundAnytime)
            Menksoft.FINA_A_BP
          else
            Menksoft.FINA_A,
        ];
    }
  },
  'e': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_E];
      case Location.INITIAL:
        return [
          Menksoft.INIT_E,
        ];
      case Location.MEDIAL:
        return [
          if (context.isPreviousRoundAnytime || context.isPreviousHG)
            Menksoft.MEDI_E_BP
          else
            Menksoft.MEDI_E,
        ];
      case Location.FINAL:
        return [
          if (context.isPreviousMvs)
            Menksoft.FINA_E_MVS
          else if (context.isPreviousRoundAnytime || context.isPreviousHG)
            Menksoft.FINA_E_BP
          else
            Menksoft.FINA_E,
        ];
    }
  },
  'i': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [
          Menksoft.ISOL_I,
          Menksoft.ISOL_I_SUFFIX,
        ];
      case Location.INITIAL:
        return [
          Menksoft.INIT_I,
          Menksoft.MEDI_I_SUFFIX,
        ];
      case Location.MEDIAL:
        return [
          if (context.latin.endsWith('naima'))
            Menksoft.MEDI_I
          else if ('a' == context.previousLetter ||
              'e' == context.previousLetter ||
              'o' == context.previousLetter ||
              ('u' == context.previousLetter &&
                  !context.needToothU(context.index - 1)))
            Menksoft.MEDI_I_DOUBLE_TOOTH
          else if (context.isPreviousRoundAnytime)
            Menksoft.MEDI_I_BP
          else
            Menksoft.MEDI_I
        ];
      case Location.FINAL:
        return [
          if (context.isPreviousRoundAnytime || context.isPreviousHG)
            Menksoft.FINA_I_BP
          else
            Menksoft.FINA_I,
        ];
    }
  },
  'o': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_O];
      case Location.INITIAL:
        return [Menksoft.INIT_O];
      case Location.MEDIAL:
        return [
          context.isPreviousRoundAnytime ? Menksoft.MEDI_O_BP : Menksoft.MEDI_O,
        ];
      case Location.FINAL:
        return [
          if (context.isPreviousRoundAnytime)
            Menksoft.FINA_O_BP
          else
            Menksoft.FINA_O,
          if (!context.isPreviousRoundAnytime) Menksoft.FINA_O_FVS1
        ];
    }
  },
  'u': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_UE];
      case Location.INITIAL:
        return [Menksoft.INIT_UE];
      case Location.MEDIAL:
        return [
          if ((context.isPreviousRoundAnytime || context.isPreviousHG) &&
              context.needToothU(context.index))
            Menksoft.MEDI_UE_FVS1_BP
          else if (context.needToothU(context.index))
            Menksoft.MEDI_UE_FVS1
          else if (context.isPreviousRoundAnytime || context.isPreviousHG)
            Menksoft.MEDI_U_BP
          else
            Menksoft.MEDI_U,
        ];
      case Location.FINAL:
        return [
          if (context.isPreviousRoundAnytime || context.isPreviousHG)
            Menksoft.FINA_UE_BP
          else
            Menksoft.FINA_UE,
          if (context.isPreviousRoundAnytime || context.isPreviousHG)
            Menksoft.FINA_UE_FVS1_BP
          else
            Menksoft.FINA_UE_FVS1,
        ];
    }
  },
  'E': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_EE];
      case Location.INITIAL:
        return [Menksoft.INIT_EE];
      case Location.MEDIAL:
        return [Menksoft.MEDI_EE];
      case Location.FINAL:
        return [Menksoft.FINA_EE];
    }
  },
  'n': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_NA];
      case Location.INITIAL:
        return [Menksoft.INIT_NA_TOOTH];
      case Location.MEDIAL:
        return [
          if (context.canUseMvs)
            Menksoft.MEDI_NA_FVS2
          else if (context.isConsonant(context.nextLetter) ||
              context.nextLetter == 'A' ||
              context.nextLetter == 'O' ||
              context.nextLetter == 'U')
            Menksoft.MEDI_NA_TOOTH
          else
            Menksoft.MEDI_NA_FVS1_TOOTH,
          // todo MEDI_NA_TOOTH in foreign word 
          // if (context.findForeignLetterPrevious(context.index))
          //   Menksoft.MEDI_NA_TOOTH
        ];
      case Location.FINAL:
        return [Menksoft.FINA_NA];
    }
  },
  'N': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_ANG];
      case Location.INITIAL:
        return [Menksoft.INIT_ANG_TOOTH];
      case Location.MEDIAL:
        return [Menksoft.MEDI_ANG_TOOTH];
      case Location.FINAL:
        return [Menksoft.FINA_ANG];
    }
  },
  'b': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_BA];
      case Location.INITIAL:
        return [
          if (context.isNextOU) Menksoft.INIT_BA_OU else Menksoft.INIT_BA,
        ];
      case Location.MEDIAL:
        return [
          if (context.isNextOU) Menksoft.MEDI_BA_OU else Menksoft.MEDI_BA_TOOTH,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_BA];
    }
  },
  'p': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_PA];
      case Location.INITIAL:
        return [
          if (context.isNextOU) Menksoft.INIT_PA_OU else Menksoft.INIT_PA,
        ];
      case Location.MEDIAL:
        return [
          if (context.isNextOU) Menksoft.MEDI_PA_OU else Menksoft.MEDI_PA_TOOTH,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_PA];
    }
  },
  'h': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_QA];
      case Location.INITIAL:
        return [
          if (context.isNextMale)
            Menksoft.INIT_QA_TOOTH
          else if (context.isNextOU)
            Menksoft.INIT_QA_FEM_OU
          else
            Menksoft.INIT_QA_FEM,
        ];
      case Location.MEDIAL:
        return [
          if (context.isNextMale && context.canUseMvs)
            Menksoft.MEDI_QA_FVS3
          else if (context.isNextMale)
            Menksoft.MEDI_QA_TOOTH
          else if (context.isNextOU)
            Menksoft.MEDI_QA_FEM_OU
          else
            Menksoft.MEDI_QA_FEM,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_QA];
    }
  },
  'g': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_GA];
      case Location.INITIAL:
        return [
          if (context.isNextMale)
            Menksoft.INIT_GA_TOOTH
          else if (context.isNextOU)
            Menksoft.INIT_GA_FEM_OU
          else
            Menksoft.INIT_GA_FEM,
        ];
      case Location.MEDIAL:
        return [
          if (context.isConsonant(context.nextLetter) &&
              (context.findMaleLetterFromPrevious(context.index - 1) ||
                  context.isMaleWord()) &&
              !context.findForeignLetterPrevious(context.index - 1))
            Menksoft.MEDI_GA
          else if (context.isConsonant(context.nextLetter))
            Menksoft.MEDI_GA_FVS3_TOOTH
          else if (context.isNextMale && context.canUseMvs)
            Menksoft.MEDI_GA_FVS2
          else if (context.isNextMale)
            Menksoft.MEDI_GA_FVS1_TOOTH
          else if (context.isNextOU)
            Menksoft.MEDI_GA_FEM_OU
          else
            Menksoft.MEDI_GA_FEM,
        ];
      case Location.FINAL:
        return [
          if (context.findMaleLetterFromPrevious(context.index - 1) &&
              !context.findForeignLetterPrevious(context.index - 1))
            Menksoft.FINA_GA
          else
            Menksoft.FINA_GA_FVS2
        ];
    }
  },
  'm': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_MA];
      case Location.INITIAL:
        return [Menksoft.INIT_MA_TOOTH];
      case Location.MEDIAL:
        return [
          if (context.isPreviousRoundAnytime ||
              context.previousLetter == 'N' ||
              context.previousCode == Menksoft.MEDI_GA_FVS3_TOOTH)
            Menksoft.MEDI_MA_BP
          else
            Menksoft.MEDI_MA_TOOTH,
          if (context.canUseMvs) Menksoft.FINA_MA,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_MA];
    }
  },
  'l': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_LA];
      case Location.INITIAL:
        return [Menksoft.INIT_LA_TOOTH];
      case Location.MEDIAL:
        return [
          if (context.canUseMvs) Menksoft.FINA_LA,
          if (context.isPreviousRoundAnytime ||
              context.previousLetter == 'N' ||
              context.previousCode == Menksoft.MEDI_GA_FVS3_TOOTH)
            Menksoft.MEDI_LA_BP
          else
            Menksoft.MEDI_LA_TOOTH,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_LA];
    }
  },
  's': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_SA];
      case Location.INITIAL:
        return [Menksoft.INIT_SA_TOOTH];
      case Location.MEDIAL:
        return [Menksoft.MEDI_SA_TOOTH];
      case Location.FINAL:
        return [Menksoft.FINA_SA];
    }
  },
  'x': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_SHA];
      case Location.INITIAL:
        return [Menksoft.INIT_SHA_TOOTH];
      case Location.MEDIAL:
        return [Menksoft.MEDI_SHA_TOOTH];
      case Location.FINAL:
        return [Menksoft.FINA_SHA];
    }
  },
  't': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_TA];
      case Location.INITIAL:
        return [Menksoft.INIT_TA_TOOTH];
      case Location.MEDIAL:
        return [
          Menksoft.MEDI_TA,
          Menksoft.MEDI_TA_FVS1_TOOTH,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_TA];
    }
  },
  'd': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_DA];
      case Location.INITIAL:
        return [Menksoft.INIT_DA_TOOTH, Menksoft.INIT_DA_FVS1];
      case Location.MEDIAL:
        return [
          if (context.isConsonant(context.nextLetter))
            Menksoft.MEDI_DA
          else
            Menksoft.MEDI_DA_FVS1,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_DA, Menksoft.FINA_DA_FVS1];
    }
  },
  'q': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_CHA];
      case Location.INITIAL:
        return [Menksoft.INIT_CHA];
      case Location.MEDIAL:
        return [Menksoft.MEDI_CHA];
      case Location.FINAL:
        return [Menksoft.FINA_CHA];
    }
  },
  'j': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_JA];
      case Location.INITIAL:
        return [Menksoft.INIT_JA_TOOTH];
      case Location.MEDIAL:
        return [Menksoft.MEDI_JA];
      case Location.FINAL:
        return [Menksoft.FINA_JA];
    }
  },
  'y': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_YA];
      case Location.INITIAL:
        return [Menksoft.INIT_YA];
      case Location.MEDIAL:
        return [
          if (context.canUseMvs) Menksoft.MEDI_YA_FVS2,
          Menksoft.MEDI_YA_FVS1,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_JA];
    }
  },
  'r': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_RA];
      case Location.INITIAL:
        return [Menksoft.INIT_RA_TOOTH];
      case Location.MEDIAL:
        return [
          Menksoft.MEDI_RA_TOOTH,
          if (context.canUseMvs) Menksoft.FINA_RA,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_RA];
    }
  },
  'w': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_WA];
      case Location.INITIAL:
        return [Menksoft.INIT_WA];
      case Location.MEDIAL:
        return [
          Menksoft.MEDI_WA,
          if (context.canUseMvs) Menksoft.FINA_WA_FVS1,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_WA];
    }
  },
  'f': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_FA];
      case Location.INITIAL:
        return [
          if (context.isNextOU) Menksoft.INIT_FA_OU else Menksoft.INIT_FA
        ];
      case Location.MEDIAL:
        return [
          if (context.isNextOU) Menksoft.MEDI_FA_OU else Menksoft.MEDI_FA_TOOTH
        ];
      case Location.FINAL:
        return [Menksoft.FINA_FA];
    }
  },
  'k': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_KA];
      case Location.INITIAL:
        return [
          if (context.isNextOU) Menksoft.INIT_KA_OU else Menksoft.INIT_KA
        ];
      case Location.MEDIAL:
        return [
          if (context.isNextOU) Menksoft.MEDI_KA_OU else Menksoft.MEDI_KA_TOOTH,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_KA];
    }
  },
  'K': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_KHA];
      case Location.INITIAL:
        return [
          if (context.isNextOU) Menksoft.INIT_KHA_OU else Menksoft.INIT_KHA
        ];
      case Location.MEDIAL:
        return [
          if (context.isNextOU)
            Menksoft.MEDI_KHA_OU
          else
            Menksoft.MEDI_KHA_TOOTH,
        ];
      case Location.FINAL:
        return [Menksoft.FINA_KHA];
    }
  },
  'c': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_TSA];
      case Location.INITIAL:
        return [Menksoft.INIT_TSA];
      case Location.MEDIAL:
        return [Menksoft.MEDI_TSA];
      case Location.FINAL:
        return [Menksoft.FINA_TSA];
    }
  },
  'z': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_ZA];
      case Location.INITIAL:
        return [Menksoft.INIT_ZA];
      case Location.MEDIAL:
        return [Menksoft.MEDI_ZA];
      case Location.FINAL:
        return [Menksoft.FINA_ZA];
    }
  },
  'H': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_HAA];
      case Location.INITIAL:
        return [Menksoft.INIT_HAA];
      case Location.MEDIAL:
        return [Menksoft.MEDI_HAA];
      case Location.FINAL:
        return [Menksoft.FINA_HAA];
    }
  },
  'R': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_ZRA];
      case Location.INITIAL:
        return [Menksoft.INIT_ZRA];
      case Location.MEDIAL:
        return [Menksoft.MEDI_ZRA];
      case Location.FINAL:
        return [Menksoft.FINA_ZRA];
    }
  },
  'L': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_LHA];
      case Location.INITIAL:
        return [Menksoft.INIT_LHA];
      case Location.MEDIAL:
        return [
          if (context.isPreviousRoundAnytime ||
              context.previousLetter == 'N' ||
              context.previousCode == Menksoft.MEDI_GA_FVS3_TOOTH)
            Menksoft.MEDI_LHA_BP
          else
            Menksoft.MEDI_LHA
        ];
      case Location.FINAL:
        return [
          if (context.isPreviousRoundAnytime ||
              context.previousLetter == 'N' ||
              context.previousCode == Menksoft.MEDI_GA_FVS3_TOOTH)
            Menksoft.FINA_LHA_BP
          else
            Menksoft.FINA_LHA
        ];
    }
  },
  'Z': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_ZHI];
      case Location.INITIAL:
        return [Menksoft.INIT_ZHI];
      case Location.MEDIAL:
        return [Menksoft.MEDI_ZHI];
      case Location.FINAL:
        return [Menksoft.FINA_ZHI];
    }
  },
  'C': (context) {
    switch (context.location) {
      case Location.ISOLATE:
        return [Menksoft.ISOL_CHI];
      case Location.INITIAL:
        return [Menksoft.INIT_CHI];
      case Location.MEDIAL:
        return [Menksoft.MEDI_CHI];
      case Location.FINAL:
        return [Menksoft.FINA_CHI];
    }
  },
  ...uncommonChars,
};