[antlr-interest] ST#, attribute renderers, and format

Christopher Brown chris77550 at gmail.com
Fri Feb 22 04:40:46 PST 2008


Hi,

The StringTemplate format option doesn't seem to be supported in
StringTemplate 3.0.1 for C#.  This is described here:

http://www.antlr.org/wiki/display/ST/Object+rendering

...on the second part of the page, under the "Format Options" header.
As a quick reminder, it should allow me to register a formatter that
lets me use a template variable as follows:

$name;format="html"$
$name;format="javascript"$

...so that I can apply appropriate escaping in the template, instead
of forcing the underlying data to the output format.  In many cases,
I'm rendering business objects, and I can't for example replace the
business object's string properties with some custom wrapper class.

I *can* register a basic attribute renderer, for example:

public class FmtRenderer : IAttributeRenderer {
 public string ToString(object o) {
  return o.ToString();
 }
 public string ToString(object o, string formatName) {
  return formatName;
 }
}

...but only the first ToString(object o) method is ever called.
Suspiciously enough, the Wiki example page I referred to above doesn't
provide a C# example.

I've tried searching on the web, looking through the source code, and
so on, with no success.  How can I get this working?

Thanks,
Christopher


More information about the antlr-interest mailing list