protected override void OnPreProcessInternal(PonyTextStructureBase[] args) { decimal number = (decimal)args[0].GetUnderlyingObject(); string lang = args[1].GetUnderlyingObject() as string; VerbalizationOptions language = (VerbalizationOptions)Enum.Parse(typeof(VerbalizationOptions), lang); VerbalizationMode mode = VerbalizationMode.ReadOut; if (args.Length == 3) { mode = (VerbalizationMode)Enum.Parse(typeof(VerbalizationMode), args[2].GetUnderlyingObject() as string); } WriteTextLiteral(VerbalizerManager.Instance.Verbalize(number.ToString(), language, mode)); }
public string Verbalize(string number, VerbalizationOptions language, VerbalizationMode mode) { string verbalized = string.Empty; if (verbalizers.ContainsKey(language)) { switch (mode) { case VerbalizationMode.ReadOut: verbalized = verbalizers[language].verbalizeFloat(number); break; case VerbalizationMode.SpellOut: verbalized = verbalizers[language].verbalizeOneByOne(number); break; } } else { throw new InvalidOperationException($"Verbalizer \"{language}\" undefined"); } return(verbalized); }