private static ISnippetCache buildCache(string directory)
        {
            var files = new SnippetApplicationFiles(".".ToFullPath().AppendPath("src"), directory);

            var cache = new SnippetCache();

            var scanners = new ISnippetScanner[]
            {
                new CLangSnippetScanner("cs"),
                new CLangSnippetScanner("js"),
                new BlockCommentScanner("<!--", "-->", "spark", "lang-html"),
                new BlockCommentScanner("<!--", "-->", "htm", "lang-html"),
                new BlockCommentScanner("<!--", "-->", "html", "lang-html"),
                new BlockCommentScanner("<!--", "-->", "xml", "lang-xml"),
                new BlockCommentScanner("/*", "*/", "css", "lang-css"),
                new RazorSnippetScanner(),
                new RubySnippetScanner(),
            };

            scanners.Each(finder => {
                files.FindFiles(finder.MatchingFileSet).Each(file => {
                    var scanner = new SnippetReader(file, finder, snippet => {
                        snippet.File = file.Path;
                        cache.Add(snippet);
                    });

                    scanner.Start();
                });
            });


            return(cache);
        }
 public SnippetReader(IFubuFile file, ISnippetScanner scanner, Action<Snippet> onFound)
 {
     _file = file;
     _scanner = scanner;
     _onFound = onFound;
 }