[stringtemplate-interest] Why an == operator is sometimes necessary, and how to implement it (ST3/C#)

Harald Mueller harald_m_mueller at gmx.de
Fri Mar 12 11:23:58 PST 2010


Ahem - I mixed up two versions of my code: NameIsReplace is just the same as NameEquals.
And for those who want to try it - below is some test code - not the tersest one, but that's how we used it.

Regards
Harald M.

static void Main() {
    var sb = new StringBuilder();
    using (TextWriter tw = new StringWriter(sb)) {
        string ressourceName = typeof(Program).Namespace + ".Templ.stg";
        Stream baseStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(ressourceName);
        StringTemplateGroup g = new StringTemplateGroup(new StreamReader(baseStream), typeof(DefaultTemplateLexer));
        StringTemplate st = g.GetTemplateDefinition("Init");

        Table t1 = new Table { Name = "T1" };
        Table t2 = new Table { Name = "T2" };
        Table t3 = new Table { Name = "T3" };
        st.SetAttribute("Tables", new[] { t1, t2, t3 });
        st.SetAttribute("Target",
            new Join("1", t1,
                new Join("1.1", t1),
                new Join("1.2", t2,
                    new Join("1.2.1", t1,
                        new Join("1.2.1.1", t1)
                    ),
                    new Join("1.2.2", t2),
                    new Join("1.2.3", t3)
                    )));
        st.Write(new AutoIndentWriter(tw));
    }
    Console.WriteLine(sb.ToString());
}

-- 
GMX DSL: Internet, Telefon und Entertainment für nur 19,99 EUR/mtl.!
http://portal.gmx.net/de/go/dsl01


More information about the stringtemplate-interest mailing list