示例#1
0
        /* Function: MergeLanguageInto
         * Merges the settings of a <ConfigFiles.TextFileLanguage> into another one, overriding the settings of the first.  This does
         * NOT cover file extensions, aliases, or shebang strings.  The base object will be altered.
         */
        protected void MergeLanguageInto(ref ConfigFiles.TextFileLanguage baseLanguage,
                                         ConfigFiles.TextFileLanguage overridingLanguage)
        {
            // Leave Name and PropertyLocation alone.  We'll keep the base's.

            // Leave AlterLanguage alone.  The base should be false and the overriding should be true, and we want the end
            // result to be false.

            if (overridingLanguage.HasSimpleIdentifier)
            {
                baseLanguage.SetSimpleIdentifier(overridingLanguage.SimpleIdentifier,
                                                 overridingLanguage.SimpleIdentifierPropertyLocation);
            }

            // Ignore Aliases

            // Ignore FileExtensions

            // Ignore ShebangStrings

            if (overridingLanguage.HasLineCommentSymbols)
            {
                baseLanguage.SetLineCommentSymbols(overridingLanguage.LineCommentSymbols,
                                                   overridingLanguage.LineCommentSymbolsPropertyLocation);
            }

            if (overridingLanguage.HasBlockCommentSymbols)
            {
                baseLanguage.SetBlockCommentSymbols(overridingLanguage.BlockCommentSymbols,
                                                    overridingLanguage.BlockCommentSymbolsPropertyLocation);
            }

            if (overridingLanguage.HasMemberOperator)
            {
                baseLanguage.SetMemberOperator(overridingLanguage.MemberOperator,
                                               overridingLanguage.MemberOperatorPropertyLocation);
            }

            if (overridingLanguage.HasPrototypeEnders)
            {
                foreach (var prototypeEnders in overridingLanguage.PrototypeEnders)
                {
                    // This will automatically overwrite any ender with the same comment type.
                    baseLanguage.AddPrototypeEnders(prototypeEnders);
                }
            }

            if (overridingLanguage.HasLineExtender)
            {
                baseLanguage.SetLineExtender(overridingLanguage.LineExtender,
                                             overridingLanguage.LineExtenderPropertyLocation);
            }

            if (overridingLanguage.HasEnumValues)
            {
                baseLanguage.SetEnumValues(overridingLanguage.EnumValues,
                                           overridingLanguage.EnumValuesPropertyLocation);
            }

            if (overridingLanguage.HasCaseSensitive)
            {
                baseLanguage.SetCaseSensitive(overridingLanguage.CaseSensitive,
                                              overridingLanguage.CaseSensitivePropertyLocation);
            }
        }