Esempio n. 1
0
 private static void SaveStrings(string fileName, IDictionary <ScriptKey, string> strings)
 {
     StringAnalyzer.SaveToFile(
         @"..\..\..\Data\Strings\" + fileName,
         strings
         .Where(x => !string.IsNullOrEmpty(x.Value))
         .Select(x => $"{x.Key} = {x.Value}")
         .OrderBy(x => x)
         );
 }
Esempio n. 2
0
        public void Save()
        {
            StringAnalyzer.SaveStrings("RusStrings.txt", this.rusScripts.Strings);
            StringAnalyzer.SaveStrings("RusLocals.txt", this.rusLocals.Strings);
            StringAnalyzer.SaveStrings("EngStrings.txt", this.engScripts.Strings);
            StringAnalyzer.SaveStrings("EngLocals.txt", this.engLocals.Strings);

            File.WriteAllLines(@"..\..\..\Data\Strings\Identifiers.txt",
                               IdManager.IgnoreValues.OrderBy(x => x)
                               );
            File.WriteAllLines(@"..\..\..\Data\Strings\Cultures.txt",
                               IdManager.Cultures.OrderBy(x => x)
                               );
        }
Esempio n. 3
0
        public void Load()
        {
            StringAnalyzer.LoadStrings("RusStrings.txt", this.rusScripts.Strings);
            StringAnalyzer.LoadStrings("RusLocals.txt", this.rusLocals.Strings);
            StringAnalyzer.LoadStrings("EngStrings.txt", this.engScripts.Strings);
            StringAnalyzer.LoadStrings("EngLocals.txt", this.engLocals.Strings);

            IdManager.IgnoreValues =
                File.ReadAllLines(@"..\..\..\Data\Strings\Identifiers.txt")
                .ToHashSet();
            IdManager.Cultures =
                File.ReadAllLines(@"..\..\..\Data\Strings\Cultures.txt")
                .ToHashSet();
        }
Esempio n. 4
0
        public void FilterAndSaveResults()
        {
            IdManager.IgnoreValues.UnionWith(
                this.engScripts.Strings
                .Union(this.rusScripts.Strings)
                .Where(x => x.Key.Path.FirstStep == @"common\game_rules" &&
                       x.Key.Path.LastTwoSteps == "option.name" ||
                       x.Key.Path.ToString() == @"localisation\customizable_localisation.defined_text.name")
                .Select(x => x.Value));

            //List<string> strs = this.rusScripts.Strings
            //        .Where(x => !IdManager.Identifiers.Contains(x.Value) &&
            //                    !x.Value.Any(IsRusLetter) &&
            //                    x.Value.Length > 0 &&
            //                    x.Key.Path.LastStep != "log" &&
            //                    !IdManager.IgnoreKeys.Any(pattern => x.Key.Path.LastStep.EqualsWildcard(pattern)) &&
            //                    !char.IsUpper(x.Value.First()) &&
            //                    !(x.Value.Length > 3 && x.Value.EqualsWildcard("a?-*")) &&
            //                    x.Key.Path.LastStep != "from_dynasty_prefix" &&
            //                    x.Key.Path.LastStep != "female_patronym" &&
            //                    x.Key.Path.LastStep != "male_patronym" &&
            //                    x.Key.Path.LastStep != "from_dynasty_suffix")
            //        .Select(x => x.ToString())
            //        .ToList();

            //SaveToFile(strs, "strs.txt");

            //var ids = IdManager.Identifiers.OrderBy(x => x);

            //SaveToFile(ids, "ids.txt");

            var name2 = new HashSet <string>
            {
                "add_character_modifier.name",
                "character_event.name",
                "create_character.name",
                "defined_text.name",
                "has_game_rule.name",
                "option.name",
                "per_attribute.name",
                "add_province_modifier.name"
            };

            var strs = this.rusScripts.Strings
                       .Union(this.engScripts.Strings)
                       .Where(x => !IdManager.IgnoreValueRegex.IsMatch(x.Value) &&
                              IdManager.StringKeys.Any(keyPattern => x.Key.Path.LastStep.EqualsWildcard(keyPattern)) &&
                              x.Value.Length > 0 &&
                              //!x.Value.StartsWith("Get") &&
                              //x.Key.Path.LastStep != "log" &&
                              //!IdManager.IgnoreKeys.Any(pattern => x.Key.Path.LastStep.ToLower().EqualsWildcard(pattern))&&
                              !x.Value.Any(StringAnalyzer.IsRusLetter) &&
                              !name2.Contains(x.Key.Path.LastTwoSteps) &&
                              !(x.Value.Length > 1 && char.IsUpper(x.Value.First()) &&
                                x.Value.Skip(1).All(c => char.IsLower(c))))
                       .ToList();

            // Идентификаторы которым присваиваются строковые значения
            var stringIdentifiers = strs
                                    .Select(x => x.Key.Path.LastStep)
                                    .ToHashSet();

            // Пути по которым идентификаторам присваиваются строковые значения
            var stringPaths = strs
                              .GroupBy(x => string.Join(".", x.Key.Path.Steps.Reverse <string>()), x => x.Value)
                              .Select(x => x.Key + " = " + x.First())
                              //.Select(x => string.Join(".", x.Key.Path.Steps.Reverse<string>()) + " = " + x.Value)
                              //.Select(x => x.Value + " = " + string.Join(".", x.Key.Path.Steps.Reverse<string>()))
                              .ToHashSet();

            StringAnalyzer.SaveToFile("StringIdentifiers.txt", stringIdentifiers);
            StringAnalyzer.SaveToFile("StringPaths.txt", stringPaths);


            //HashSet<string> rusLastSteps = rusLocals.Strings
            //    .Select(x => x.Key.Path.LastStep)
            //    .ToHashSet();
            //HashSet<string> engLastSteps = engLocals.Strings
            //    .Select(x => x.Key.Path.LastStep)
            //    .ToHashSet();

            //HashSet<Parsing.Path> strPaths = rusScripts.Strings
            //    .Where(s => s.Value.Any(IsRusLetter) ||
            //                s.Value.Contains(' ') ||
            //                rusLastSteps.Contains(s.Value) ||
            //                engLastSteps.Contains(s.Value))
            //    .Select(s => s.Key.Path)
            //    .ToHashSet()
            //    .Union(
            //        engScripts.Strings
            //        .Where(s => rusLastSteps.Contains(s.Value) ||
            //                    engLastSteps.Contains(s.Value))
            //        .Select(s => s.Key.Path)
            //        .ToHashSet()
            //    )
            //    .ToHashSet();
            //HashSet<Parsing.Path> idPaths = rusScripts.Strings
            //    .Where(s => !IdManager.Identifiers.Contains(s.Value) &&
            //                IdManager.Regex.IsMatch(s.Value))
            //    .Select(s => s.Key.Path)
            //    .ToHashSet()
            //    .Union(
            //        engScripts.Strings
            //            .Where(s => !IdManager.Identifiers.Contains(s.Value) &&
            //                        IdManager.Regex.IsMatch(s.Value))
            //            .Select(s => s.Key.Path)
            //            .ToHashSet()
            //    )
            //    .Except(strPaths)
            //    .ToHashSet();
            //HashSet<Parsing.Path> otherPaths = rusScripts.Strings
            //    .Select(s => s.Key.Path)
            //    .ToHashSet()
            //    .Union(engScripts.Strings.Select(s => s.Key.Path).ToHashSet())
            //    .Except(strPaths)
            //    .Except(idPaths)
            //    .ToHashSet();

            //HashSet<string> otherLastSteps = otherPaths.Select(x => x.LastStep).ToHashSet();
            //HashSet<string> idLastSteps = idPaths.Select(x => x.LastStep).ToHashSet();
            //HashSet<string> strLastSteps = strPaths.Select(x => x.LastStep).ToHashSet();
            //HashSet<string> strs1 = strLastSteps
            //    .Except(idLastSteps)
            //    .Except(otherLastSteps)
            //    .ToHashSet();
            //HashSet<string> ids1 = idLastSteps
            //    .Except(strLastSteps)
            //    .Except(otherLastSteps)
            //    .ToHashSet();
            //HashSet<string> others1 = otherLastSteps
            //    .Except(strLastSteps)
            //    .Except(idLastSteps)
            //    .ToHashSet();

            //HashSet<string> otheLastTwoSteps = otherPaths
            //    .Where(x => !others1.Contains(x.LastStep))
            //    .Select(x => x.LastTwoSteps)
            //    .ToHashSet();
            //HashSet<string> idLastTwoSteps = idPaths
            //    .Where(x => !ids1.Contains(x.LastStep))
            //    .Select(x => x.LastTwoSteps)
            //    .ToHashSet();
            //HashSet<string> strLastTwoSteps = strPaths
            //    .Where(x => !strs1.Contains(x.LastStep))
            //    .Select(x => x.LastTwoSteps)
            //    .ToHashSet();
            //HashSet<string> strs2 = strLastTwoSteps
            //    .Except(idLastTwoSteps)
            //    .Except(otheLastTwoSteps)
            //    .ToHashSet();
            //HashSet<string> ids2 = idLastTwoSteps
            //    .Except(strLastTwoSteps)
            //    .Except(otheLastTwoSteps)
            //    .ToHashSet();
            //HashSet<string> others2 = otheLastTwoSteps
            //    .Except(strLastTwoSteps)
            //    .Except(idLastTwoSteps)
            //    .ToHashSet();

            //HashSet<string> strs3 = strPaths
            //    .Where(x => !strs1.Contains(x.LastStep))
            //    .Where(x => !strs2.Contains(x.LastTwoSteps))
            //    .Select(x => string.Join(".", x.Steps.Reverse<string>()))
            //    .ToHashSet();
            //HashSet<string> ids3 = idPaths
            //    .Where(x => !ids1.Contains(x.LastStep))
            //    .Where(x => !ids2.Contains(x.LastTwoSteps))
            //    .Select(x => string.Join(".", x.Steps.Reverse<string>()))
            //    .ToHashSet();
            //HashSet<string> others3 = otherPaths
            //    .Where(x => !others1.Contains(x.LastStep))
            //    .Where(x => !others2.Contains(x.LastTwoSteps))
            //    .Select(x => string.Join(".", x.Steps.Reverse<string>()))
            //    .ToHashSet();

            //var strsTotal = strs1
            //    .Union(strs2)
            //    .Union(strs3);
            //var idsTotal = ids1
            //    .Union(ids2)
            //    .Union(ids3);
            //var othersTotal = others1
            //    .Union(others2)
            //    .Union(others3);

            //SaveToFile(strPaths.Select(x => string.Join(".", x.Steps.Reverse<string>())), "strPaths.txt");
            //SaveToFile(idPaths.Select(x => string.Join(".", x.Steps.Reverse<string>())), "idPaths.txt");
            //SaveToFile(otherPaths.Select(x => string.Join(".", x.Steps.Reverse<string>())), "otherPaths.txt");
            //SaveToFile(strsTotal, "strs.txt");
            //SaveToFile(idsTotal, "ids.txt");
            //SaveToFile(othersTotal, "others.txt");
        }