public Snippets()

in tools/Explorer/Views/Snippets.cs [16:100]


        public Snippets()
        {
            this.snippets = new Dictionary<string, Snippet>(StringComparer.OrdinalIgnoreCase);

            var artifact = new SnippetReplaceableTextElement { Text = "$a" };
            var method = new SnippetReplaceableTextElement { Text = "$method" };
            var topLevelNodeName = new SnippetReplaceableTextElement { Text = "Results" };
            var resultNodeName = new SnippetReplaceableTextElement { Text = "Result" };

            Snippet basicSnippet = new Snippet
            {
                Elements = {
                    new SnippetTextElement { Text = "(: Put description here. It will appear in the tooltip :)\n" },
                    new SnippetTextElement { Text = "<" }, new SnippetBoundElement { TargetElement = topLevelNodeName }, new SnippetTextElement {Text = ">\n"},
                    new SnippetTextElement { Text = "{\n" },
                    new SnippetTextElement { Text = "  for " }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = " in /(Class | Table | Form | Query)\n" },
                    new SnippetReplaceableTextElement { Text = "  where true()\n" },
                    new SnippetTextElement { Text = "  order by "}, new SnippetBoundElement { TargetElement = artifact }, new SnippetReplaceableTextElement { Text = "/@Name\n" },
                    new SnippetCaretElement { },
                    new SnippetTextElement { Text =     "  return " }, new SnippetTextElement { Text = "<" }, new SnippetBoundElement { TargetElement = resultNodeName },
                        new SnippetTextElement { Text = " Artifact='{" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = "/@Artifact}'\n"},
                        new SnippetTextElement { Text = "    StartLine='{" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = "/@StartLine}'"},
                        new SnippetTextElement { Text = " StartCol='{" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = "/@StartCol}'"},
                        new SnippetTextElement { Text = " EndLine='{" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = "/@EndLine}'"},
                        new SnippetTextElement { Text = " EndCol='{" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = "/@EndCol}'"},
                    new SnippetTextElement {Text = "/>\n"},
                    new SnippetTextElement { Text = "}\n" },
                    new SnippetTextElement { Text = "</" }, new SnippetBoundElement { TargetElement = topLevelNodeName }, new SnippetTextElement {Text = ">\n"},
                }
            };

            Snippet ruleSnippet = new Snippet
            {
                Elements = {
                    new SnippetTextElement { Text = "(: Put description here. It will appear in the tooltip :)\n" },
                    new SnippetTextElement { Text = "<Diagnostics>\n" },

                    new SnippetTextElement { Text = "{\n" },
                    new SnippetTextElement { Text = "  for " }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = " in /(Class | Table | Form | Query)\n" },
                    new SnippetTextElement { Text = "  for " }, new SnippetBoundElement { TargetElement = method }, new SnippetTextElement { Text = " in " }, new SnippetBoundElement { TargetElement=artifact }, new SnippetTextElement { Text = "//Method\n" },
                    new SnippetReplaceableTextElement { Text = "  where true() \n" },
                    new SnippetTextElement { Text = "  order by "}, new SnippetBoundElement { TargetElement = artifact }, new SnippetReplaceableTextElement { Text = "/@Name\n" },
                    new SnippetTextElement { Text = "  let $typeNamePair := fn:tokenize(" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text= "/@Artifact, ':')\n" }, 
                    new SnippetCaretElement { },
                    new SnippetTextElement { Text =     "  return <Diagnostic>\n" },
                        new SnippetTextElement { Text = "     <Moniker>" }, new SnippetReplaceableTextElement {Text="Name" }, new SnippetTextElement { Text = "</Moniker>\n"},
                        new SnippetTextElement { Text = "     <Severity>" }, new SnippetReplaceableTextElement { Text = "Error, Warning" }, new SnippetTextElement { Text = "</Severity>\n"},
                        new SnippetTextElement { Text = "     <Path>" }, new SnippetTextElement { Text = "dynamics://{$typeNamePair[1]}/{$typeNamePair[2]}/Method/{string(" }, new SnippetBoundElement { TargetElement = method }, new SnippetTextElement { Text = "/@Name)}" }, new SnippetTextElement { Text = "</Path>\n"},
                        new SnippetTextElement { Text = "     <Message>" }, new SnippetReplaceableTextElement { Text = "This is the rule message" }, new SnippetTextElement { Text = "</Message>\n"},
                        new SnippetTextElement { Text = "     <DiagnosticType>AppChecker</DiagnosticType>\n" },

                        new SnippetTextElement { Text = "     <Line>{string(" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = "/@StartLine)}</Line>\n"},
                        new SnippetTextElement { Text = "     <Column>{string(" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = "/@StartCol)}</Column>\n"},
                        new SnippetTextElement { Text = "     <EndLine>{string(" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = "/@EndLine)}</EndLine>\n"},
                        new SnippetTextElement { Text = "     <EndColumn>{string(" }, new SnippetBoundElement { TargetElement = artifact }, new SnippetTextElement { Text = "/@EndCol)}</EndColumn>\n"},
                    new SnippetTextElement { Text =     "  </Diagnostic>\n" },
                    new SnippetTextElement { Text = "}\n" },
                    new SnippetTextElement { Text = "</Diagnostics>\n"},
                }
            };

            Snippet dbInfoSnippet = new Snippet
            {
                Elements = {
                    new SnippetTextElement { Text = "(: Show the statistics of the database given its name  :)\n" },
                    new SnippetTextElement { Text = "(: Note: This will consume resources for big databases :)\n" },
                    new SnippetTextElement { Text = "(: if the database is not already open.                :)\n" },
                    new SnippetTextElement { Text = "declare variable $database external;\n" },
                    new SnippetTextElement { Text = "db:info($database)" }
                }
            };

            Snippet dbListSnippet = new Snippet
            {
                Elements = {
                    new SnippetTextElement { Text = "(: Show the databases  :)\n" },
                    new SnippetTextElement { Text = "db:list()" }
                }
            };

            this.snippets.Add("Basic", basicSnippet);
            this.snippets.Add("Appchecker rule", ruleSnippet);
            this.snippets.Add("Database info", dbInfoSnippet);
            this.snippets.Add("Database list", dbListSnippet);
        }