コード例 #1
0
        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));
        }
コード例 #2
0
ファイル: VerbalizerManager.cs プロジェクト: Minep/PonyText
        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);
        }