private IOReclist GetIOReclist(Reclist reclist)
        {
            if (reclist == null)
            {
                return(null);
            }
            var iOReclist = new IOReclist();
            var phonemes  = new IOPhonemes();

            phonemes.Vowels     = reclist.Vowels.Select(n => n.Alias).ToArray();
            phonemes.Consonants = reclist.Consonants.Select(n => n.Alias).ToArray();
            iOReclist.Phonemes  = phonemes;
            var files = new List <IOWavParams>();

            foreach (var recline in reclist.Reclines)
            {
                var wavParams = new IOWavParams()
                {
                    Filename    = recline.Name,
                    Description = recline.Description,
                    Phonemes    = recline.PhonemesRaw == null ? new string[0] : recline.PhonemesRaw.Select(n => n.Alias).ToArray()
                };
                files.Add(wavParams);
            }
            iOReclist.Files = files.ToArray();
            return(iOReclist);
        }
 public void WriteYaml(string filename, IOReclist ioReclist)
 {
     using (var writer = new StreamWriter(filename, false, Encoding.UTF8))
     {
         var serializer = new Serializer();
         serializer.Serialize(writer, ioReclist, typeof(IOReclist));
     }
 }
        private Reclist GetReclist(IOReclist ioReclist, string name, bool isTest = false)
        {
            var reclist = new Reclist();

            reclist.IsTest  = isTest;
            reclist.Name    = name;
            reclist.WavMask = WavMaskReader.Current.Read(PathResolver.Current.Mask(reclist.Name, reclist.IsTest));

            var phonemes = new List <Phoneme>
            {
                Rest.Create()
            };

            foreach (var phoneme in ioReclist.Phonemes.Consonants)
            {
                if (phoneme == Rest.ALIAS || phoneme == "")
                {
                    continue;
                }

                // HACK: can't find how to escape ~ in yaml
                if (phoneme == null)
                {
                    phonemes.Add(new Consonant("~"));
                }
                else
                {
                    phonemes.Add(new Consonant(phoneme));
                }
            }
            foreach (var phoneme in ioReclist.Phonemes.Vowels)
            {
                if (phoneme == Rest.ALIAS || phoneme == "")
                {
                    continue;
                }

                if (phoneme == null)
                {
                    phonemes.Add(new Vowel("~"));
                }
                else
                {
                    phonemes.Add(new Vowel(phoneme));
                }
            }
            reclist.SetPhonemes(phonemes);

            foreach (var file in ioReclist.Files)
            {
                var reclinePhonemes = file.Phonemes.Select(n => reclist.GetPhoneme(n)).ToList();
                var recline         = new Recline(reclist, file.Filename, reclinePhonemes, file.Description);
                reclist.AddRecline(recline);
            }
            reclist.IsLoaded = true;
            return(reclist);
        }
        public IOReclist ReadYaml(string filename)
        {
            IOReclist ioReclist = null;

            try
            {
                using (var fileStream = new FileStream(filename, FileMode.Open))
                {
                    var serializer = new Deserializer();
                    ioReclist = serializer.Deserialize(new StreamReader(fileStream, Encoding.UTF8), typeof(IOReclist)) as IOReclist;
                }
            }
            catch { }
            return(ioReclist);
        }
Exemple #5
0
        private void CheckReclist(string[] commandParams)
        {
            var command = CONSOLE_COMMAND_CHECK_RECLIST;

            if (!CheckArgsCount(commandParams, 1, command))
            {
                return;
            }

            var reclistName = commandParams[0];
            var filename    = PathResolver.Current.Reclist(reclistName + PathResolver.RECLIST_EXT);

            PrintMessage("Filename: " + filename);
            if (!CheckFileExists(filename, mustExist: true))
            {
                return;
            }

            IOReclist ioReclist = null;

            using (var fileStream = new FileStream(filename, FileMode.OpenOrCreate))
            {
                var serializer = new Deserializer();
                try
                {
                    ioReclist = serializer.Deserialize(new StreamReader(fileStream, Encoding.UTF8), typeof(IOReclist)) as IOReclist;
                }
                catch { }
            }

            if (ioReclist == null)
            {
                PrintError(Localization.STR_COMMAND_ERROR_CANT_READ_YAML);
                return;
            }

            var reclist = ReclistReader.Current.Read(reclistName);

            if (reclist == null || !reclist.IsLoaded)
            {
                PrintError(Localization.STR_COMMAND_ERROR_CANT_READ_RECLIST);
                return;
            }

            PrintSuccess(Localization.STR_COMMAND_CHECK_RECLIST_LOADED);

            var replacerFilename = PathResolver.Current.Replacer(reclist.Name);

            PrintMessage("Replacer filename: " + replacerFilename);
            if (!File.Exists(replacerFilename))
            {
                PrintMessage(Localization.STR_COMMAND_CHECK_RECLIST_WTR_IS_MISSING);
            }
            else
            {
                PrintSuccess(Localization.STR_COMMAND_CHECK_RECLIST_WTR_IS_OK);
            }

            var maskFilename = PathResolver.Current.Mask(reclist.Name);

            PrintMessage("Mask filename: " + maskFilename);
            if (!File.Exists(maskFilename))
            {
                PrintMessage(Localization.STR_COMMAND_CHECK_RECLIST_MASK_IS_MISSING);
            }
            else
            {
                var       serializer = new Deserializer();
                IOWavMask ioWavMask  = null;
                using (var fileStream = new FileStream(maskFilename, FileMode.OpenOrCreate))
                {
                    try
                    {
                        ioWavMask = serializer.Deserialize(new StreamReader(fileStream, Encoding.UTF8), typeof(IOWavMask)) as IOWavMask;
                    }
                    catch { }
                }
                if (ioWavMask == null)
                {
                    PrintError(Localization.STR_COMMAND_CHECK_RECLIST_MASK_CANT_READ_YAML);
                    return;
                }

                PrintSuccess(Localization.STR_COMMAND_CHECK_RECLIST_MASK_IS_OK);
            }

            PrintSuccess(Localization.STR_COMMAND_CHECK_RECLIST_FINISH);
        }