public static IHtmlString ParseText(this IFubuPage page, string text, ParseTextOptions options = null, ITheme theme = null) { try { var cmsRenderer = page.ServiceLocator.GetInstance<ICmsRenderer>(); var cmsContext = page.ServiceLocator.GetInstance<ICmsContext>(); theme = theme ?? cmsContext.GetCurrentTheme(); var result = cmsRenderer.ParseText(text, cmsContext, theme, options); return new HtmlString(result.Read()); } catch (Exception ex) { var logger = page.ServiceLocator.GetInstance<Logger>(); logger.Error(ex, "Failed parsing text!"); return new HtmlString(text); } }
public virtual IRenderResult ParseText(string text, ICmsContext context, ITheme theme, ParseTextOptions options = null) { var parsers = _textParsers.ToList(); if (options != null && options.UseOnlyParsersTagged.Any()) { parsers = parsers.Where(x => options.UseOnlyParsersTagged.All(y => x.GetTags().Contains(y))).ToList(); } foreach (var textParser in parsers) { var useOptionsForNextLevel = options != null && !options.FilterOnlyFirstLevel; try { text = textParser.Parse(text, this, context, theme, x => ParseText(x, context, theme, useOptionsForNextLevel ? options : null).Read()); } catch (Exception) { //TODO:Log exception } } return(new RenderResult("text/html", x => x.Write(text), new Dictionary <Guid, RequestContext>(), context)); }