2009-03-31 4 views
1

В этом примере я чередуюсь с кодом перед тем, как перейти к шаблону, я просто хотел удостовериться, что я не пропустил некоторые уже встроенные функции stringtemplate.Zebra striping встроенный в 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); 
     } 

ответ

3

Я не эксперт StringTemplate, но я found a thread on the mailing list, что, кажется, обеспечивает более простое решение, что у вас есть сейчас.

+0

Ты мой герой, спасибо! – Dave

+0

ссылка не работает :( – fernandopasik

+0

@fernandopasik Я думаю, что указанная тема из списка рассылки [stringtemplate-interest Нечетное даже форматирование строк] (http://www.antlr3.org/pipermail/stringtemplate-interest/2008-May/ 001471.html) (по крайней мере URL-адрес почти идентичен) – Filou

Смежные вопросы