I am developing an iPhone application and I use HTML to display formatted text.
I often display the same webpage, but with a different content. I would like to use a template HTML file, and then fill it with my different values.
I wonder if Objective-C has a template system similar to ERB in Ruby.
That would allow to do things like
Template:
<HTML>
<HEAD>
</HEAD>
<BODY>
<H1>{{{title}}}</H1>
<P>{{{content}}}</P>
</BODY>
</HTML>
Objective-C (or what it may be in an ideal world)
Template* template = [[Template alloc] initWithFile:@"my_template.tpl"];
[template fillMarker:@"title" withContent:@"My Title"];
[template fillMarker:@"content" withContent:@"My text here"];
[template process];
NSString* result = [template result];
[template release];
And the result string would contain:
<HTML>
<HEAD>
</HEAD>
<BODY>
<H1>My Title</H1>
<P>My text here</P>
</BODY>
</HTML>
The above example could be achieved with some text replacement, but that would be a pain to maintain. I would also need something like loops inside templates. For instance, if I have multiple items to display, I would like to generate multiple divs.
Thanks for reading :)
Have you considered using as template:
<HTML>
<HEAD>
</HEAD>
<BODY>
<H1>%@</H1>
<P>%@</P>
</BODY>
</HTML>
And then:
// just to get file name right
NSString* fn =
[NSString stringWithFormat:@"%@/my_template.tpl",
[[ NSBundle mainBundle ] resourcePath ]];
// template
NSError *error;
NSString* template =
[NSString stringWithContentsOfFile:fn
encoding:NSUTF8StringEncoding error:&error];
// result
NSString* result =
[NSString stringWithFormat:template,
@"MyTitle",
@"MyText"];
I think it's pretty much what you want.
Of course you'll have to add your template files as resources in the project.
https://github.com/groue/GRMustache may help you.
No, Objective-C has no built-in template system. Generally for simple uses you'd just use textual replacement (possibly via stringWithFormat:
) and for something more advanced you'd choose a full-fledged template system that suits your needs.
This works for me: http://mattgemmell.com/2008/05/20/mgtemplateengine-templates-with-cocoa/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With