develooper Front page | perl.perl6.language | Postings from June 2005

Creating a web templating engine

Thread Next
From:
=?iso-8859-2?Q?B=C1RTH=C1ZI_Andr=E1s?=
Date:
June 14, 2005 08:59
Subject:
Creating a web templating engine
Message ID:
Pine.LNX.4.61.0506141724160.25578@wish.hu
Hi,

I'm busy with creating a widget based web templating engine, but I have 
some problems, please help me. The engine would allow you to define 
widgets, and use those in your templates. I would like it to be an OO 
module.

In the template, you can write this:

  <server:input id="name" width="100px" maxlength="64" important="yes" />

When the template engine read it, it will call a subroutine:

  call_a_sub_for_input(id=>'name', width=>'100px', maxlength=>'64',
                       important=>'yes');

What this sub gives back, will be put into the output. I hope, you got the 
idea.

I have the code, that can parse the template, and the code, that would 
call the widget, so no problems with it. I don't know, how to put it 
together. I don't know, how should the programmer define a new widget, 
how it would be the most nicer way? How it can be detected by the template 
engine? I don't want a register function, like this:

$wte = new WTE;
$wte.register('input', &my_input_widget);

I don't prefer it, to be 20-30 register line in my programs, that does 
nothing, just register.

It would be OK, to just define a global subroutine, and allow the template 
engine to call widget_$name if it reads a widget, but...

sub widget_input(*%params) {
 	...
}

It's not nice. Maybe something like this?

new_widget :input => {
 	return "<input />";
}

It's almost a register function, but it's more compact, and I like it. But 
if I would like to get parameters from the widget caller, how can I manage 
it? Is it possible to call this new noname sub with parameters, and get it 
easily inside the sub, for example like this:?

new_widget :input => {
 	my $name = _something_{'id'};
 	return '<input name="' ~ $name ~ '" />';
}

And I have more questions, but that's enough for this mail. Did you got my 
problem?

Bye,
   Andras

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About