Exemple #1
0
        /* Function: MergeLanguagesInto
         * Merges the languages of the second <ConfigFiles.TextFile> into the first, adding new types and applying any alter entries.
         * This does NOT merge file extensions, aliases, or shebang strings.  The base config will be changed, even if there are errors.
         * Returns false if there were any errors and adds them to errorList.
         */
        protected bool MergeLanguagesInto(ref ConfigFiles.TextFile baseConfig, ConfigFiles.TextFile overridingConfig,
                                          Errors.ErrorList errorList)
        {
            bool success = true;

            if (overridingConfig.HasLanguages)
            {
                foreach (var overridingLanguage in overridingConfig.Languages)
                {
                    var matchingLanguage = baseConfig.FindLanguage(overridingLanguage.Name);

                    if (matchingLanguage != null)
                    {
                        if (overridingLanguage.AlterLanguage == false)
                        {
                            errorList.Add(Locale.Get("NaturalDocs.Engine", "Languages.txt.LanguageAlreadyExists(name)", overridingLanguage.Name),
                                          overridingLanguage.PropertyLocation);
                            success = false;
                        }
                        else
                        {
                            MergeLanguageInto(ref matchingLanguage, overridingLanguage);
                        }
                    }

                    else                     // no match
                    {
                        if (overridingLanguage.AlterLanguage == true)
                        {
                            errorList.Add(Locale.Get("NaturalDocs.Engine", "Languages.txt.AlteredLanguageDoesntExist(name)", overridingLanguage.Name),
                                          overridingLanguage.NamePropertyLocation);
                            success = false;
                        }
                        else
                        {
                            baseConfig.AddLanguage(overridingLanguage.Duplicate());
                        }
                    }
                }
            }

            return(success);
        }