Example #1
0
        public static void LoadLanguages(this IEnumerable <Record> records)
        {
            foreach (IGrouping <string, Record> grouping in records.GroupBy(f => f.GetString(Identifiers.Language)))
            {
                LanguageDefinition language = LanguageDefinition.FromLanguage((Language)Enum.Parse(typeof(Language), grouping.Key));

                foreach (Record record in grouping)
                {
                    switch (record.EntityName)
                    {
                    case Identifiers.Modifier:
                    {
                        language.Modifiers.Add(CreateModifier(record));
                        break;
                    }

                    case Identifiers.Type:
                    {
                        language.Types.Add(CreateType(record));
                        break;
                    }

                    case Identifiers.Keyword:
                    {
                        language.Keywords.Add(CreateKeyword(record));
                        break;
                    }
                    }
                }
            }
        }
Example #2
0
        public static void LoadLanguages(this IEnumerable <Record> records)
        {
            foreach (IGrouping <string, Record> grouping in records.GroupBy(f => f.GetString(PropertyNames.Language)))
            {
                LanguageDefinition language = LanguageDefinition.FromLanguage(ParseHelpers.ParseLanguage(grouping.Key));

                foreach (Record record in grouping)
                {
                    switch (record.EntityName)
                    {
                    case PropertyNames.Modifier:
                    {
                        language.Modifiers.Add(MapModifierDefinition(record));
                        break;
                    }

                    case PropertyNames.Type:
                    {
                        language.Types.Add(MapTypeDefinition(record));
                        break;
                    }

                    case PropertyNames.Keyword:
                    {
                        language.Keywords.Add(MapKeywordDefinition(record));
                        break;
                    }
                    }
                }
            }
        }
Example #3
0
 public EnvironmentSnippetGenerator(SnippetEnvironment environment, LanguageDefinition languageDefinition)
     : base(languageDefinition)
 {
     Environment = environment;
 }
 public LanguageSnippetGenerator(LanguageDefinition languageDefinition)
 {
     LanguageDefinition    = languageDefinition;
     _generateTypeTags     = LanguageDefinition.Types.Select(f => KnownTags.GenerateTypeTag(f.Name)).ToArray();
     _generateModifierTags = LanguageDefinition.Modifiers.Select(f => KnownTags.GenerateModifierTag(f.Name)).ToArray();
 }
Example #5
0
 public LanguageExecutionContext(Snippet snippet, LanguageDefinition language)
     : base(snippet)
 {
     Language = language;
 }
 public EnvironmentExecutionContext(Snippet snippet, LanguageDefinition language, SnippetEnvironment environment)
     : base(snippet, language)
 {
     Environment = environment;
 }
Example #7
0
        private List <Snippet> GenerateSnippetsCore(SnippetDirectory directory, bool isDevelopment = false)
        {
            var snippets = new List <Snippet>();

            snippets.AddRange(EnumerateSnippets(directory.Path));

#if DEBUG
            foreach (Snippet snippet in snippets)
            {
                foreach (string keyword in snippet.Keywords)
                {
                    if (keyword.StartsWith(KnownTags.MetaPrefix + KnownTags.GeneratePrefix, StringComparison.OrdinalIgnoreCase))
                    {
                        Debug.Fail(keyword + "\r\n" + snippet.FilePath);
                        break;
                    }
                }
            }
#endif

            snippets.AddRange(SnippetGenerator.GenerateAlternativeShortcuts(snippets));

            if (!isDevelopment &&
                directory.HasTag(KnownTags.GenerateXmlSnippets))
            {
                switch (directory.Language)
                {
                case Language.Xml:
                case Language.Xaml:
                case Language.Html:
                case Language.Markdown:
                {
                    snippets.AddRange(XmlSnippetGenerator.GenerateSnippets(directory.Language));
                    break;
                }
                }
            }

            KeywordDefinitionCollection keywords = LanguageDefinition.GetKeywords(directory.Language);

            if (keywords != null)
            {
                foreach (KeywordDefinition keyword in keywords)
                {
                    if (keyword.IsDevelopment == isDevelopment)
                    {
                        Snippet snippet = keyword.ToSnippet();
                        snippet.Language = directory.Language;
                        snippets.Add(snippet);
                    }
                }
            }

            string autoGenerationPath = Path.Combine(directory.Path, KnownNames.AutoGeneration);

            if (Directory.Exists(autoGenerationPath))
            {
                SnippetDirectory autoGenerationDirectory = directory.WithPath(autoGenerationPath);

                SnippetGenerator generator = CreateSnippetGenerator(autoGenerationDirectory);

                snippets.AddRange(generator.GenerateSnippets(autoGenerationDirectory.Path));
            }

            return(snippets);
        }