簡體   English   中英

斑馬條紋內置到字符串模板?

[英]Zebra striping built-in to stringtemplate?

在這個例子中,我在傳入模板之前對代碼進行了條帶化,我只是想確保我沒有錯過一些已經內置的 stringtemplate 功能。

using System;
using System.Linq;
using Antlr.StringTemplate;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Tests
{
    [TestClass]
    public class RandomTests
    {
        [TestMethod]
        public void has_a_table()
        {
            var users = new[] {
                new { LastName = "Doe", FirstName = "John", Age = 30 },
                new { LastName = "Smith", FirstName = "Bob", Age = 28 }
            };

            var columns = new[] {
                new { Template = "$it.LastName$", Head = "Last Name" },
                new { Template = "$it.FirstName$", Head = "First Name" }
            };

            var tableTemplate = @"
<table>
    <thead>
        <tr>
            <th scope=""col"">Index</th>
            $columns: { column |<th scope=""col"">$colum n.Head$</th>}$
        </tr>
    </thead>
    <tbody>
        $items:{ item |<tr$if(item.Stripe)$ class=""alt""$endif$><td>$i$</td>$item.Item:row()$</tr>}$
    </tbody>
</table>
";
            var rowTemplate = string.Join
            (
                "",
                (from column in columns
                 select
                    "<td>" + column.Template + "</td>"
                ).ToArray()
            );

            var templates = new StringTemplateGroup("table-templator");

            templates.DefineTemplate("table", tableTemplate);
            templates.DefineTemplate("row", rowTemplate);

            var template = templates.GetInstanceOf("table");

            var items = users
                .Select((item, index) => new { Stripe = index % 2 == 0, Item = item })
                .ToArray();

            template.SetAttribute("columns", columns);
            template.SetAttribute("items", items);

            var actual = template.ToString();

            Assert.IsNotNull(actual);
        }

我不是 StringTemplate 方面的專家,但我在郵件列表中發現了一個線程,它似乎提供了一個比您現在擁有的更簡單的解決方案。

有一個不錯的帖子,也許你可以找到最簡單的解決方案:

使用 StringTemplate 4 的可本地化文本模板引擎

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM