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; }