コード例 #1
0
 public void SetUp()
 {
     _builder = new TokenBuilder <BlogTemplate>();
     _builder.Interpolate("{Content('", ".*", "')}", data => data.ToString());
     _builder.Interpolate("{Url('", @"(?<controller>.*)/(?<action>.*)(/(?<id>\d*)){0,1}", "')}", data => data.ToString());
     _builder.Tokenize(b => b.BlogTitle, @"{PageTitle}");
     _builder.Tokenize(b => b.JavaScriptIncludes, @"{JavaScriptIncludes}");
     _builder.TokenizeIf(b => b.Post, @"{Post}", b => b.Post != null, ctx => {
         ctx.Tokenize(b => b.PostTitle, @"{PostTitle}");
         ctx.Tokenize(b => b.PostDescription, @"{PostDescription}");
         ctx.Tokenize(b => b.PostBody, @"{PostBody}");
         ctx.Block(d => d.Comments, @"{Comments}", commentContext =>
         {
             commentContext.Tokenize(c => c.Email, @"{Comment.Email}");
             commentContext.Tokenize(c => c.Author, @"{Comment.Author}");
             commentContext.Tokenize(c => c.Text, @"{Comment.Text}");
         }).EndsWith(@"{/Comments}");
     }).EndsWith(@"{/Post}");
     _builder.Block(b => b.Posts, @"{Posts}", postContext => {
         postContext.Tokenize(d => d.PostTitle, @"{Post.Title}");
         postContext.Tokenize(d => d.PostDescription, @"{Post.Description}");
         postContext.Tokenize(d => d.PostBody, @"{Post.Body}");
         postContext.Tokenize(d => d.PostedOn.ToShortDateString(), @"{Post.Date}");
         postContext.Block(d => d.Comments, @"{Comments}", commentContext =>
         {
             commentContext.Tokenize(c => c.Email, @"{Comment.Email}");
             commentContext.Tokenize(c => c.Author, @"{Comment.Author}");
             commentContext.Tokenize(c => c.Text, @"{Comment.Text}");
         }).EndsWith(@"{/Comments}");
     }).EndsWith(@"{/Posts}");
 }
コード例 #2
0
ファイル: TokenBuilder.cs プロジェクト: johncoder/mimeo
        /// <summary>
        /// Defines a child block of tokens.
        /// </summary>
        /// <typeparam name="TChild"></typeparam>
        /// <param name="children"></param>
        /// <param name="identifier"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public ITokenBlock <TModel, TChild> Block <TChild>(Func <TModel, IEnumerable <TChild> > children, string identifier, ITokenRoot <TChild> context)
        {
            Ensure.ArgumentNotNull(children, "children");
            Ensure.ArgumentNotNullOrEmpty(identifier, "identifier");
            Ensure.ArgumentNotNull(context, "context");

            var blockToken = new BlockToken <TModel, TChild>
            {
                Resolve    = p => string.Empty,
                Identifier = string.Intern(identifier),
                Items      = model => GetEachChild(model, children)
            };

            _currentToken = blockToken;
            Token.Children.Add(_currentToken);

            foreach (var token in context.Token.Children)
            {
                _currentToken.AddChild(token);
            }

            return(new TokenBlockBuilder <TModel, TChild>(_currentToken));
        }
コード例 #3
0
 public void SetUp()
 {
     _builder = new TokenBuilder <BlogTemplate>();
 }
コード例 #4
0
ファイル: TokenBuilder.cs プロジェクト: johncoder/mimeo
        /// <summary>
        /// Defines a child conditional token for replacement.
        /// </summary>
        /// <typeparam name="TChild"></typeparam>
        /// <param name="replacement"></param>
        /// <param name="identifier"></param>
        /// <param name="condition"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public IConditionalToken <TModel, TChild> TokenizeIf <TChild>(Func <TModel, TChild> replacement, string identifier, Func <TModel, bool> condition, ITokenRoot <TChild> context)
        {
            Ensure.ArgumentNotNull(replacement, "replacement");
            Ensure.ArgumentNotNullOrEmpty(identifier, "identifier");
            Ensure.ArgumentNotNull(condition, "condition");
            Ensure.ArgumentNotNull(context, "context");

            var blockToken = new BlockToken <TModel, TChild>
            {
                Child      = replacement,
                Resolve    = p => string.Empty,
                Identifier = string.Intern(identifier),
                Condition  = condition
            };

            _currentToken = blockToken;
            Token.Children.Add(_currentToken);

            foreach (var token in context.Token.Children)
            {
                _currentToken.AddChild(token);
            }

            return(new TokenBlockBuilder <TModel, TChild>(_currentToken));
        }