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);
            }
        }
Esempio n. 2
0
        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));
        }