コード例 #1
0
    private (string, string, string) GetRouteMatchedTagParser(SiteArticleDefinition definition, string routeToMatch)
    {
        if (definition is null)
        {
            Log.Debug("SiteDefinition is null. Falling back to adaptive parser.");
            return("adaptive-parser", "", "");
        }

        if (definition.RouteTemplates?.Length > 0)
        {
            var matcher = new RouteMatcher();
            foreach (var articleRoute in definition.RouteTemplates)
            {
                if (matcher.Match(articleRoute.Template, "/" + routeToMatch) != null)
                {
                    Log.Information("Matched route {routeName} on template {template}", articleRoute.Name, articleRoute.Template);
                    return(articleRoute.Parser, articleRoute.ArticleSelector, articleRoute.ParagraphSelector);
                }
            }

            // Might have forgotten to create a **catch-all template, fall back to adaptive parser
            Log.Warning("Missing **catch-all template. Falling back to adaptive parser.");
            return("adaptive-parser", "", "");
        }
        else
        {
            // No route templates defined, fall back to older style definition or adpative parser
            Log.Debug("No route templates defined. falling back to {@parser}", definition);
            return(string.IsNullOrEmpty(definition.Parser) ? "adaptive-parser" : definition.Parser,
                   definition.ArticleSelector, definition.ParagraphSelector);
        }
    }
コード例 #2
0
 public string ParseTagsBySelector(SiteArticleDefinition options)
 {
     return(ParseTagsBySelector("", "p"));
 }
コード例 #3
0
 public string ParseTagsBySelector(SiteArticleDefinition options)
 {
     return(ParseTagsBySelector(options.ArticleSelector, options.ParagraphSelector));
 }