private void scan(string text) { var file = new FakeFubuFile(text); var reader = new SnippetReader(file, new CLangSnippetScanner("cs"), theSnippets.Add); reader.Start(); }
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); }
private static List <SnippetLine> GetSnippet(SnippetRequest request) { Queryable queryable = QueryDriver.GetQueryable(request.Hit.Source); ISnippetReader snippet_reader; bool full_text = request.FullText; int ctx_length = request.ContextLength; int snp_length = request.SnippetLength; if (queryable == null) { Console.WriteLine("SnippetExecutor: No queryable object matches '{0}'", request.Hit.Source); snippet_reader = new SnippetReader(null, null, false, -1, -1); full_text = false; } else { snippet_reader = queryable.GetSnippet(request.QueryTerms, request.Hit, full_text, ctx_length, snp_length); } List <SnippetLine> snippetlines = new List <SnippetLine> (); if (snippet_reader == null) { return(snippetlines); } if (!full_text) { foreach (SnippetLine snippet_line in snippet_reader.GetSnippet()) { snippetlines.Add(snippet_line); } } else { SnippetLine snippet_line = new SnippetLine(); snippet_line.Line = 1; Fragment fragment = new Fragment(); fragment.QueryTermIndex = -1; StringBuilder sb = new StringBuilder(); string line; // Read data from snippet_reader and write while ((line = snippet_reader.ReadLine()) != null) { sb.Append(StringFu.CleanupInvalidXmlCharacters(line)); sb.Append("\n"); } fragment.Text = sb.ToString(); snippet_line.Fragments = new ArrayList(); snippet_line.Fragments.Add(fragment); snippetlines.Add(snippet_line); } snippet_reader.Close(); return(snippetlines); }
public ISnippetReader GetSnippet(string[] query_terms, Hit hit, bool full_text, int ctx_length, int snp_length) { string source = hit ["beagle:Source"]; hit ["beagle:Source"] = hit ["beagle:OrigSource"]; string network_node = hit ["beagle:NetworkNode"]; SnippetReader snippet_reader = null; // FIXME: Creating a snippet request, registering transports, all of this // doing everytime for hundreds of hits may become quite expensive. // In that case, pre generate one snippetrequest and use it over and over. // Form a correct snippet request SnippetRequest sreq = new SnippetRequest(); sreq.Hit = hit; sreq.QueryTerms = query_terms; sreq.FullText = full_text; sreq.ContextLength = ctx_length; sreq.SnippetLength = snp_length; // fake a blocking snippet retrieval sreq.RegisterAsyncResponseHandler(typeof(SnippetResponse), delegate(ResponseMessage response) { if (response is ErrorResponse) { Log.Error("Error retrieval snippet for {0} from network node {1}", hit.Uri, network_node); return; } snippet_reader = new SnippetReader((SnippetResponse)response); }); List <string[]> network_services = Conf.Networking.GetListOptionValues(Conf.Names.NetworkServices); foreach (string[] service in network_services) { if (network_node != service [0]) { continue; } sreq.Transports.Clear(); sreq.RegisterTransport(new HttpTransport(service [1])); // fake a blocking snippet retrieval try { sreq.SendAsyncBlocking(); } catch (Exception e) { Log.Debug(e, "Error while requesting snippet from {0} for {1}", service [1], hit.Uri); } break; } hit ["beagle:Source"] = source; // reset source return(snippet_reader); }
public ISnippetReader GetSnippet (string[] query_terms, Hit hit, bool full_text, int ctx_length, int snp_length) { string source = hit ["beagle:Source"]; hit ["beagle:Source"] = hit ["beagle:OrigSource"]; string network_node = hit ["beagle:NetworkNode"]; SnippetReader snippet_reader = null; // FIXME: Creating a snippet request, registering transports, all of this // doing everytime for hundreds of hits may become quite expensive. // In that case, pre generate one snippetrequest and use it over and over. // Form a correct snippet request SnippetRequest sreq = new SnippetRequest (); sreq.Hit = hit; sreq.QueryTerms = query_terms; sreq.FullText = full_text; sreq.ContextLength = ctx_length; sreq.SnippetLength = snp_length; // fake a blocking snippet retrieval sreq.RegisterAsyncResponseHandler (typeof (SnippetResponse), delegate (ResponseMessage response) { if (response is ErrorResponse) { Log.Error ("Error retrieval snippet for {0} from network node {1}", hit.Uri, network_node); return; } snippet_reader = new SnippetReader ((SnippetResponse) response); }); List<string[]> network_services = Conf.Networking.GetListOptionValues (Conf.Names.NetworkServices); foreach (string[] service in network_services) { if (network_node != service [0]) continue; sreq.Transports.Clear (); sreq.RegisterTransport (new HttpTransport (service [1])); // fake a blocking snippet retrieval try { sreq.SendAsyncBlocking (); } catch (Exception e) { Log.Debug (e, "Error while requesting snippet from {0} for {1}", service [1], hit.Uri); } break; } hit ["beagle:Source"] = source; // reset source return snippet_reader; }