From: Filippo P. <pa...@sg...> - 2007-03-11 21:01:52
|
Hi all, I'm working on an Erlang template language based on String Template www.stringtemplate.org I've created a google project and a google group for discussion. Here are the links: http://code.google.com/p/sgte/ http://groups.google.com/group/sgte-code Any comments and suggestions are welcome. Cheers, filippo |
From: <kl...@ta...> - 2007-03-12 09:20:31
|
Filippo Pacini wrote: > Hi all, > I'm working on an Erlang template language based on String Template > www.stringtemplate.org > What would be the best way to let yaws handle .eg .st files Should I allow for external renderers to register their file suffixes and associate those to a render module. Maybe a good idea would be to rip the .yaws support out from yaws_server.erl, put it in an external module and then register that external module as the handler for pages with .yaws suffix ?? and then the same thing for cgi etc ... That way it will be easy to plug in any external rendering engine, for example a string template implementattion ?? /klacke -- Claes Wikstrom -- Caps lock is nowhere and http://www.tail-f.com -- everything is under control cellphone: +46 70 2097763 |
From: Bob I. <bo...@re...> - 2007-03-12 09:33:02
|
T24gMy8xMi8wNywgQ2xhZXMgV2lrc3Ryw7ZtIDxrbGFja2VAdGFpbC1mLmNvbT4gd3JvdGU6Cj4g RmlsaXBwbyBQYWNpbmkgd3JvdGU6Cj4gPiBIaSBhbGwsCj4gPiBJJ20gd29ya2luZyBvbiBhbiBF cmxhbmcgdGVtcGxhdGUgbGFuZ3VhZ2UgYmFzZWQgb24gU3RyaW5nIFRlbXBsYXRlCj4gPiB3d3cu c3RyaW5ndGVtcGxhdGUub3JnCj4gPgo+Cj4gV2hhdCB3b3VsZCBiZSB0aGUgYmVzdCB3YXkgdG8g bGV0IHlhd3MgaGFuZGxlIC5lZyAuc3QgZmlsZXMKPiBTaG91bGQgSSBhbGxvdyBmb3IgZXh0ZXJu YWwgcmVuZGVyZXJzIHRvIHJlZ2lzdGVyIHRoZWlyCj4gZmlsZSBzdWZmaXhlcyBhbmQgYXNzb2Np YXRlIHRob3NlIHRvIGEgcmVuZGVyIG1vZHVsZS4KPgo+IE1heWJlIGEgZ29vZCBpZGVhIHdvdWxk IGJlIHRvIHJpcCB0aGUgLnlhd3Mgc3VwcG9ydAo+IG91dCBmcm9tIHlhd3Nfc2VydmVyLmVybCwg cHV0IGl0IGluIGFuIGV4dGVybmFsIG1vZHVsZQo+IGFuZCB0aGVuIHJlZ2lzdGVyIHRoYXQgZXh0 ZXJuYWwgbW9kdWxlIGFzIHRoZSBoYW5kbGVyIGZvcgo+IHBhZ2VzIHdpdGggLnlhd3Mgc3VmZml4 ID8/IGFuZCB0aGVuIHRoZSBzYW1lIHRoaW5nIGZvciBjZ2kgZXRjIC4uLgo+Cj4gVGhhdCB3YXkg aXQgd2lsbCBiZSBlYXN5IHRvIHBsdWcgaW4gYW55IGV4dGVybmFsIHJlbmRlcmluZwo+IGVuZ2lu ZSwgZm9yIGV4YW1wbGUgYSBzdHJpbmcgdGVtcGxhdGUgaW1wbGVtZW50YXR0aW9uCgpJdCB3b3Vs ZCBiZSBncmVhdCBpZiB5YXdzIHdhcyBzcGxpdCBpbnRvIG1vcmUgY29tcG9uZW50cyBsaWtlIHRo YXQuIFdlCm9ubHkgdXNlIGl0IGJlY2F1c2UgaXQncyBhIHdvcmtpbmcgSFRUUCBzZXJ2ZXIgcHJv dG9jb2wKaW1wbGVtZW50YXRpb24uIFdlJ3JlIHNlcnZpbmcgYXBwbW9kcyBmcm9tIGl0LCBhbmQg bm90aGluZyBlbHNlIChub3QKZXZlbiBzdGF0aWMgZmlsZXMpLiBXZSd2ZSBhbHNvIGdvdCBhbGwg b2YgdGhlIGxvZ2dpbmcgc2h1dCBvZmYgYmVjYXVzZQp3ZSBoYXZlIGFwcGxpY2F0aW9uLXNwZWNp ZmljIGxvZ3MuIEkgd291bGQgcHJlZmVyIGEgbGlnaHRlciBhbmQgZWFzaWVyCnRvIHVuZGVyc3Rh bmQgc29sdXRpb24gdGhhbiBZYXdzLCBidXQgSSBjb3VsZG4ndCBmaW5kIGFuIGFsdGVybmF0aXZl CkhUVFAgaW1wbGVtZW50YXRpb24gdGhhdCB3YXMgaGFsZi1kZWNlbnQgYW5kIGRpZG4ndCBzdWZm ZXIgZnJvbSB0aGUKc2FtZSBraW5kIG9mIG1vbm9saXRoaWMgYmxvYXQgdGhhdCB5YXdzIGFuZCBo dHRwZCBkby4KCk9uIGFub3RoZXIgbm90ZSwgd2hlbiBJIHdhcyBwcm90b3R5cGluZyBzb21ldGhp bmcgdy8gWWF3cyB5ZXN0ZXJkYXkgSQp0aG91Z2h0IGl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlcmUg d2FzIGEgcmV0dXJuIHZhbHVlIHRoYXQgY291bGQgYmUKdXNlZCB0byBzZXJ2ZSBhIGZpbGUgZnJv bSBkaXNrIGZyb20gYW4gYXBwbW9kLiBSaWdodCBub3cgSSBqdXN0IHJlYWQKdGhlIHdob2xlIHRo aW5nIGFzIGEgYmluYXJ5IGFuZCByZXR1cm4gdGhhdCwgYnV0IGl0IHdvdWxkIGJlCnByZWZlcmFi bGUgaWYgSSBjb3VsZCBqdXN0IGdpdmUgdGhlIHBhdGggdG8geWF3cyBhbmQgbGV0IGl0IHNlcnZl IHRoZQpmaWxlLi4uIGUuZy4ge2ZpbGUsIENvbnRlbnRUeXBlLCBQYXRofS4gTWF5YmUgZXZlbiBh bGxvdyBJb0RldmljZSBpbgphZGRpdGlvbiB0byBwYXRocyB0byBzdXBwb3J0IGFscmVhZHkgb3Bl biBmaWxlcz8KCi1ib2IK |
From: Robert S. \(BJ/CBC\) <rob...@er...> - 2007-03-13 01:31:16
|
Hi Bob, But that is already possible, just use: {content, Mimetype, Content} OR {streamcontent,...} Here a fragment from an appmod I'm using: _Other -> F =3D WikiRoot++"/"++Page, {ok, Content} =3D file:read_file(F), {content, yaws_api:mime_type(Page), Content} end. Regards /Rob -----Original Message----- From: erl...@li... = [mailto:erl...@li...] On Behalf Of Bob = Ippolito Sent: 12 March 2007 17:33 To: Claes Wikstr=F6m Cc: erl...@li...; Filippo Pacini; Erlang Users' = List Subject: Re: [Erlyaws-list] sgte - erlang template engine On 3/12/07, Claes Wikstr=F6m <kl...@ta...> wrote: > Filippo Pacini wrote: > > Hi all, > > I'm working on an Erlang template language based on String Template=20 > > www.stringtemplate.org > > > > What would be the best way to let yaws handle .eg .st files Should I=20 > allow for external renderers to register their file suffixes and=20 > associate those to a render module. > > Maybe a good idea would be to rip the .yaws support out from=20 > yaws_server.erl, put it in an external module and then register that=20 > external module as the handler for pages with .yaws suffix ?? and then = > the same thing for cgi etc ... > > That way it will be easy to plug in any external rendering engine, for = > example a string template implementattion It would be great if yaws was split into more components like that. We = only use it because it's a working HTTP server protocol implementation. = We're serving appmods from it, and nothing else (not even static files). = We've also got all of the logging shut off because we have = application-specific logs. I would prefer a lighter and easier to = understand solution than Yaws, but I couldn't find an alternative HTTP = implementation that was half-decent and didn't suffer from the same kind = of monolithic bloat that yaws and httpd do. On another note, when I was prototyping something w/ Yaws yesterday I = thought it would be nice if there was a return value that could be used = to serve a file from disk from an appmod. Right now I just read the = whole thing as a binary and return that, but it would be preferable if I = could just give the path to yaws and let it serve the file... e.g. = {file, ContentType, Path}. Maybe even allow IoDevice in addition to = paths to support already open files? -bob -------------------------------------------------------------------------= Take Surveys. Earn Cash. Influence the Future of IT Join = SourceForge.net's Techsay panel and you'll get the chance to share your = opinions on IT & business topics through brief surveys-and earn cash = http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV _______________________________________________ Erlyaws-list mailing list Erl...@li... https://lists.sourceforge.net/lists/listinfo/erlyaws-list |
From: Bob I. <bo...@re...> - 2007-03-13 01:49:22
|
WWVzIG9mIGNvdXJzZSBpdCdzIHBvc3NpYmxlLCBJIHNhaWQgSSBkaWQgc29tZXRoaW5nIGFsbW9z dCBleGFjdGx5Cmxpa2UgdGhhdCBpbiBteSBvcmlnaW5hbCByZXBseS4uLiBidXQgdGhhdCdzIGNv ZGUgSSBzaG91bGRuJ3QgaGF2ZSB0bwp3cml0ZSEKCkkgc2hvdWxkIG9ubHkgaGF2ZSB0byByZXR1 cm4gc29tZXRoaW5nIGxpa2U6CntmaWxlLCB5YXdzX2FwaTptaW1lX3R5cGUoUGF0aCksIFBhdGh9 CgpZYXdzIHNob3VsZCB0YWtlIGNhcmUgb2Ygc2VuZGluZyB0aGF0IGZpbGUgdG8gdGhlIGNsaWVu dCBpbiB0aGUgbW9zdAplZmZpY2llbnQgd2F5IHBvc3NpYmxlLiBGb3IgbGFyZ2UgZmlsZXMgdGhh dCdzIG9idmlvdXNseSBub3QgZ29pbmcgdG8KYmUge2NvbnRlbnQsIF8sIF99LCBpdCdzIGdvaW5n IHRvIHdhbnQgdG8gcmVhZCBpdCBpbiBwYXJ0cyBhbmQgc3RyZWFtCml0LiBQb3NzaWJseSBhcyBh IHJhbmdlIHJlcXVlc3Qgb3Igc29tZXRoaW5nLiBNYXliZSBpdCB3b3VsZCB1c2UgYQpzZW5kZmls ZSBbMV0gdHlwZSBvcHRpbWl6YXRpb24gaW4gdGhlIGZ1dHVyZS4KClJlZ2FyZGxlc3MsIGl0IHNo b3VsZG4ndCBiZSBteSBidXNpbmVzcyB0byByZS1pbXBsZW1lbnQgc29tZXRoaW5nIHRoYXQKWWF3 cyBpcyBhbHJlYWR5IHZlcnkgZ29vZCBhdC4gTGlnaHR0cGQgaGFzIGEgZmVhdHVyZSBsaWtlIHRo aXMgdGhhdCdzCmRvbmUgYnkgdGhlIFgtU2VuZGZpbGUgSFRUUCBoZWFkZXIgYW5kIE5naW54IGhh cyBhIHNvbWV3aGF0IGxlc3MKY29udmVuaWVudCBYLUFjY2VsLVJlZGlyZWN0LiBSZWFsaXN0aWNh bGx5IGlmIEkgd2VyZSB1c2luZyB0aGlzIGluCnByb2R1Y3Rpb24gYW5kIHBlcmZvcm1hbmNlIG1h dHRlcmVkIEkgd291bGQgcHJvYmFibHkgYmUgdXNpbmcgbmdpbnggaW4KdGhlIGZyb250IHdpdGgg WC1BY2NlbC1SZWRpcmVjdCBmb3Igc3RhdGljIGZpbGVzLi4uIGJ1dCBpbiB0aGlzCnBhcnRpY3Vs YXIgY2FzZSBJIHdhbnRlZCB0aGUgZmVhdHVyZSBvbmx5IGJlY2F1c2UgaXQgd291bGQndmUgc2F2 ZWQgbWUKYSBmZXcgbGluZXMgb2YgY29kZS4KCi1ib2IKCk9uIDMvMTIvMDcsIFJvYmVydCBTY2ht ZXJzZWwgKEJKL0NCQykgPHJvYmVydC5zY2htZXJzZWxAZXJpY3Nzb24uY29tPiB3cm90ZToKPiBI aSBCb2IsCj4KPiBCdXQgdGhhdCBpcyBhbHJlYWR5IHBvc3NpYmxlLCBqdXN0IHVzZToKPiB7Y29u dGVudCwgTWltZXR5cGUsIENvbnRlbnR9IE9SCj4ge3N0cmVhbWNvbnRlbnQsLi4ufQo+Cj4gSGVy ZSBhIGZyYWdtZW50IGZyb20gYW4gYXBwbW9kIEknbSB1c2luZzoKPiAgICAgX090aGVyIC0+Cj4g ICAgICAgICBGID0gV2lraVJvb3QrKyIvIisrUGFnZSwKPiAgICAgICAgIHtvaywgQ29udGVudH0g PSBmaWxlOnJlYWRfZmlsZShGKSwKPiAgICAgICAgIHtjb250ZW50LCB5YXdzX2FwaTptaW1lX3R5 cGUoUGFnZSksIENvbnRlbnR9Cj4gICAgIGVuZC4KPgo+IFJlZ2FyZHMKPiAvUm9iCj4KPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IGVybHlhd3MtbGlzdC1ib3VuY2VzQGxpc3Rz LnNvdXJjZWZvcmdlLm5ldCBbbWFpbHRvOmVybHlhd3MtbGlzdC1ib3VuY2VzQGxpc3RzLnNvdXJj ZWZvcmdlLm5ldF0gT24gQmVoYWxmIE9mIEJvYiBJcHBvbGl0bwo+IFNlbnQ6IDEyIE1hcmNoIDIw MDcgMTc6MzMKPiBUbzogQ2xhZXMgV2lrc3Ryw7ZtCj4gQ2M6IGVybHlhd3MtbGlzdEBsaXN0cy5z b3VyY2Vmb3JnZS5uZXQ7IEZpbGlwcG8gUGFjaW5pOyBFcmxhbmcgVXNlcnMnIExpc3QKPiBTdWJq ZWN0OiBSZTogW0VybHlhd3MtbGlzdF0gc2d0ZSAtIGVybGFuZyB0ZW1wbGF0ZSBlbmdpbmUKPgo+ IE9uIDMvMTIvMDcsIENsYWVzIFdpa3N0csO2bSA8a2xhY2tlQHRhaWwtZi5jb20+IHdyb3RlOgo+ ID4gRmlsaXBwbyBQYWNpbmkgd3JvdGU6Cj4gPiA+IEhpIGFsbCwKPiA+ID4gSSdtIHdvcmtpbmcg b24gYW4gRXJsYW5nIHRlbXBsYXRlIGxhbmd1YWdlIGJhc2VkIG9uIFN0cmluZyBUZW1wbGF0ZQo+ ID4gPiB3d3cuc3RyaW5ndGVtcGxhdGUub3JnCj4gPiA+Cj4gPgo+ID4gV2hhdCB3b3VsZCBiZSB0 aGUgYmVzdCB3YXkgdG8gbGV0IHlhd3MgaGFuZGxlIC5lZyAuc3QgZmlsZXMgU2hvdWxkIEkKPiA+ IGFsbG93IGZvciBleHRlcm5hbCByZW5kZXJlcnMgdG8gcmVnaXN0ZXIgdGhlaXIgZmlsZSBzdWZm aXhlcyBhbmQKPiA+IGFzc29jaWF0ZSB0aG9zZSB0byBhIHJlbmRlciBtb2R1bGUuCj4gPgo+ID4g TWF5YmUgYSBnb29kIGlkZWEgd291bGQgYmUgdG8gcmlwIHRoZSAueWF3cyBzdXBwb3J0IG91dCBm cm9tCj4gPiB5YXdzX3NlcnZlci5lcmwsIHB1dCBpdCBpbiBhbiBleHRlcm5hbCBtb2R1bGUgYW5k IHRoZW4gcmVnaXN0ZXIgdGhhdAo+ID4gZXh0ZXJuYWwgbW9kdWxlIGFzIHRoZSBoYW5kbGVyIGZv ciBwYWdlcyB3aXRoIC55YXdzIHN1ZmZpeCA/PyBhbmQgdGhlbgo+ID4gdGhlIHNhbWUgdGhpbmcg Zm9yIGNnaSBldGMgLi4uCj4gPgo+ID4gVGhhdCB3YXkgaXQgd2lsbCBiZSBlYXN5IHRvIHBsdWcg aW4gYW55IGV4dGVybmFsIHJlbmRlcmluZyBlbmdpbmUsIGZvcgo+ID4gZXhhbXBsZSBhIHN0cmlu ZyB0ZW1wbGF0ZSBpbXBsZW1lbnRhdHRpb24KPgo+IEl0IHdvdWxkIGJlIGdyZWF0IGlmIHlhd3Mg d2FzIHNwbGl0IGludG8gbW9yZSBjb21wb25lbnRzIGxpa2UgdGhhdC4gV2Ugb25seSB1c2UgaXQg YmVjYXVzZSBpdCdzIGEgd29ya2luZyBIVFRQIHNlcnZlciBwcm90b2NvbCBpbXBsZW1lbnRhdGlv bi4gV2UncmUgc2VydmluZyBhcHBtb2RzIGZyb20gaXQsIGFuZCBub3RoaW5nIGVsc2UgKG5vdCBl dmVuIHN0YXRpYyBmaWxlcykuIFdlJ3ZlIGFsc28gZ290IGFsbCBvZiB0aGUgbG9nZ2luZyBzaHV0 IG9mZiBiZWNhdXNlIHdlIGhhdmUgYXBwbGljYXRpb24tc3BlY2lmaWMgbG9ncy4gSSB3b3VsZCBw cmVmZXIgYSBsaWdodGVyIGFuZCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBzb2x1dGlvbiB0aGFuIFlh d3MsIGJ1dCBJIGNvdWxkbid0IGZpbmQgYW4gYWx0ZXJuYXRpdmUgSFRUUCBpbXBsZW1lbnRhdGlv biB0aGF0IHdhcyBoYWxmLWRlY2VudCBhbmQgZGlkbid0IHN1ZmZlciBmcm9tIHRoZSBzYW1lIGtp bmQgb2YgbW9ub2xpdGhpYyBibG9hdCB0aGF0IHlhd3MgYW5kIGh0dHBkIGRvLgo+Cj4gT24gYW5v dGhlciBub3RlLCB3aGVuIEkgd2FzIHByb3RvdHlwaW5nIHNvbWV0aGluZyB3LyBZYXdzIHllc3Rl cmRheSBJIHRob3VnaHQgaXQgd291bGQgYmUgbmljZSBpZiB0aGVyZSB3YXMgYSByZXR1cm4gdmFs dWUgdGhhdCBjb3VsZCBiZSB1c2VkIHRvIHNlcnZlIGEgZmlsZSBmcm9tIGRpc2sgZnJvbSBhbiBh cHBtb2QuIFJpZ2h0IG5vdyBJIGp1c3QgcmVhZCB0aGUgd2hvbGUgdGhpbmcgYXMgYSBiaW5hcnkg YW5kIHJldHVybiB0aGF0LCBidXQgaXQgd291bGQgYmUgcHJlZmVyYWJsZSBpZiBJIGNvdWxkIGp1 c3QgZ2l2ZSB0aGUgcGF0aCB0byB5YXdzIGFuZCBsZXQgaXQgc2VydmUgdGhlIGZpbGUuLi4gZS5n LiB7ZmlsZSwgQ29udGVudFR5cGUsIFBhdGh9LiBNYXliZSBldmVuIGFsbG93IElvRGV2aWNlIGlu IGFkZGl0aW9uIHRvIHBhdGhzIHRvIHN1cHBvcnQgYWxyZWFkeSBvcGVuIGZpbGVzPwo+Cj4gLWJv Ygo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBUYWtlIFN1cnZleXMuIEVhcm4gQ2FzaC4gSW5mbHVlbmNl IHRoZSBGdXR1cmUgb2YgSVQgSm9pbiBTb3VyY2VGb3JnZS5uZXQncyBUZWNoc2F5IHBhbmVsIGFu ZCB5b3UnbGwgZ2V0IHRoZSBjaGFuY2UgdG8gc2hhcmUgeW91ciBvcGluaW9ucyBvbiBJVCAmIGJ1 c2luZXNzIHRvcGljcyB0aHJvdWdoIGJyaWVmIHN1cnZleXMtYW5kIGVhcm4gY2FzaCBodHRwOi8v d3d3LnRlY2hzYXkuY29tL2RlZmF1bHQucGhwP3BhZ2U9am9pbi5waHAmcD1zb3VyY2Vmb3JnZSZD SUQ9REVWREVWCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBFcmx5YXdzLWxpc3QgbWFpbGluZyBsaXN0Cj4gRXJseWF3cy1saXN0QGxpc3RzLnNvdXJj ZWZvcmdlLm5ldAo+IGh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZv L2VybHlhd3MtbGlzdAo+Cg== |
From: Bob I. <bo...@re...> - 2007-03-13 01:50:39
|
SSBmb3Jnb3QgdG8gaW5jbHVkZSB0aGUgWzFdIGZvb3Rub3RlIHJlZmVyZW5jZSB0byB0aGUgc2Vu ZGZpbGUgcGF0Y2g6Cmh0dHA6Ly93d3cuZXJsYW5nLm9yZy9waXBlcm1haWwvZXJsYW5nLXBhdGNo ZXMvMjAwMy1Ob3ZlbWJlci8wMDAwNjguaHRtbAoKT24gMy8xMi8wNywgQm9iIElwcG9saXRvIDxi b2JAcmVkaXZpLmNvbT4gd3JvdGU6Cj4gWWVzIG9mIGNvdXJzZSBpdCdzIHBvc3NpYmxlLCBJIHNh aWQgSSBkaWQgc29tZXRoaW5nIGFsbW9zdCBleGFjdGx5Cj4gbGlrZSB0aGF0IGluIG15IG9yaWdp bmFsIHJlcGx5Li4uIGJ1dCB0aGF0J3MgY29kZSBJIHNob3VsZG4ndCBoYXZlIHRvCj4gd3JpdGUh Cj4KPiBJIHNob3VsZCBvbmx5IGhhdmUgdG8gcmV0dXJuIHNvbWV0aGluZyBsaWtlOgo+IHtmaWxl LCB5YXdzX2FwaTptaW1lX3R5cGUoUGF0aCksIFBhdGh9Cj4KPiBZYXdzIHNob3VsZCB0YWtlIGNh cmUgb2Ygc2VuZGluZyB0aGF0IGZpbGUgdG8gdGhlIGNsaWVudCBpbiB0aGUgbW9zdAo+IGVmZmlj aWVudCB3YXkgcG9zc2libGUuIEZvciBsYXJnZSBmaWxlcyB0aGF0J3Mgb2J2aW91c2x5IG5vdCBn b2luZyB0bwo+IGJlIHtjb250ZW50LCBfLCBffSwgaXQncyBnb2luZyB0byB3YW50IHRvIHJlYWQg aXQgaW4gcGFydHMgYW5kIHN0cmVhbQo+IGl0LiBQb3NzaWJseSBhcyBhIHJhbmdlIHJlcXVlc3Qg b3Igc29tZXRoaW5nLiBNYXliZSBpdCB3b3VsZCB1c2UgYQo+IHNlbmRmaWxlIFsxXSB0eXBlIG9w dGltaXphdGlvbiBpbiB0aGUgZnV0dXJlLgo+Cj4gUmVnYXJkbGVzcywgaXQgc2hvdWxkbid0IGJl IG15IGJ1c2luZXNzIHRvIHJlLWltcGxlbWVudCBzb21ldGhpbmcgdGhhdAo+IFlhd3MgaXMgYWxy ZWFkeSB2ZXJ5IGdvb2QgYXQuIExpZ2h0dHBkIGhhcyBhIGZlYXR1cmUgbGlrZSB0aGlzIHRoYXQn cwo+IGRvbmUgYnkgdGhlIFgtU2VuZGZpbGUgSFRUUCBoZWFkZXIgYW5kIE5naW54IGhhcyBhIHNv bWV3aGF0IGxlc3MKPiBjb252ZW5pZW50IFgtQWNjZWwtUmVkaXJlY3QuIFJlYWxpc3RpY2FsbHkg aWYgSSB3ZXJlIHVzaW5nIHRoaXMgaW4KPiBwcm9kdWN0aW9uIGFuZCBwZXJmb3JtYW5jZSBtYXR0 ZXJlZCBJIHdvdWxkIHByb2JhYmx5IGJlIHVzaW5nIG5naW54IGluCj4gdGhlIGZyb250IHdpdGgg WC1BY2NlbC1SZWRpcmVjdCBmb3Igc3RhdGljIGZpbGVzLi4uIGJ1dCBpbiB0aGlzCj4gcGFydGlj dWxhciBjYXNlIEkgd2FudGVkIHRoZSBmZWF0dXJlIG9ubHkgYmVjYXVzZSBpdCB3b3VsZCd2ZSBz YXZlZCBtZQo+IGEgZmV3IGxpbmVzIG9mIGNvZGUuCj4KPiAtYm9iCj4KPiBPbiAzLzEyLzA3LCBS b2JlcnQgU2NobWVyc2VsIChCSi9DQkMpIDxyb2JlcnQuc2NobWVyc2VsQGVyaWNzc29uLmNvbT4g d3JvdGU6Cj4gPiBIaSBCb2IsCj4gPgo+ID4gQnV0IHRoYXQgaXMgYWxyZWFkeSBwb3NzaWJsZSwg anVzdCB1c2U6Cj4gPiB7Y29udGVudCwgTWltZXR5cGUsIENvbnRlbnR9IE9SCj4gPiB7c3RyZWFt Y29udGVudCwuLi59Cj4gPgo+ID4gSGVyZSBhIGZyYWdtZW50IGZyb20gYW4gYXBwbW9kIEknbSB1 c2luZzoKPiA+ICAgICBfT3RoZXIgLT4KPiA+ICAgICAgICAgRiA9IFdpa2lSb290KysiLyIrK1Bh Z2UsCj4gPiAgICAgICAgIHtvaywgQ29udGVudH0gPSBmaWxlOnJlYWRfZmlsZShGKSwKPiA+ICAg ICAgICAge2NvbnRlbnQsIHlhd3NfYXBpOm1pbWVfdHlwZShQYWdlKSwgQ29udGVudH0KPiA+ICAg ICBlbmQuCj4gPgo+ID4gUmVnYXJkcwo+ID4gL1JvYgo+ID4KPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tCj4gPiBGcm9tOiBlcmx5YXdzLWxpc3QtYm91bmNlc0BsaXN0cy5zb3VyY2Vmb3Jn ZS5uZXQgW21haWx0bzplcmx5YXdzLWxpc3QtYm91bmNlc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXRd IE9uIEJlaGFsZiBPZiBCb2IgSXBwb2xpdG8KPiA+IFNlbnQ6IDEyIE1hcmNoIDIwMDcgMTc6MzMK PiA+IFRvOiBDbGFlcyBXaWtzdHLDtm0KPiA+IENjOiBlcmx5YXdzLWxpc3RAbGlzdHMuc291cmNl Zm9yZ2UubmV0OyBGaWxpcHBvIFBhY2luaTsgRXJsYW5nIFVzZXJzJyBMaXN0Cj4gPiBTdWJqZWN0 OiBSZTogW0VybHlhd3MtbGlzdF0gc2d0ZSAtIGVybGFuZyB0ZW1wbGF0ZSBlbmdpbmUKPiA+Cj4g PiBPbiAzLzEyLzA3LCBDbGFlcyBXaWtzdHLDtm0gPGtsYWNrZUB0YWlsLWYuY29tPiB3cm90ZToK PiA+ID4gRmlsaXBwbyBQYWNpbmkgd3JvdGU6Cj4gPiA+ID4gSGkgYWxsLAo+ID4gPiA+IEknbSB3 b3JraW5nIG9uIGFuIEVybGFuZyB0ZW1wbGF0ZSBsYW5ndWFnZSBiYXNlZCBvbiBTdHJpbmcgVGVt cGxhdGUKPiA+ID4gPiB3d3cuc3RyaW5ndGVtcGxhdGUub3JnCj4gPiA+ID4KPiA+ID4KPiA+ID4g V2hhdCB3b3VsZCBiZSB0aGUgYmVzdCB3YXkgdG8gbGV0IHlhd3MgaGFuZGxlIC5lZyAuc3QgZmls ZXMgU2hvdWxkIEkKPiA+ID4gYWxsb3cgZm9yIGV4dGVybmFsIHJlbmRlcmVycyB0byByZWdpc3Rl ciB0aGVpciBmaWxlIHN1ZmZpeGVzIGFuZAo+ID4gPiBhc3NvY2lhdGUgdGhvc2UgdG8gYSByZW5k ZXIgbW9kdWxlLgo+ID4gPgo+ID4gPiBNYXliZSBhIGdvb2QgaWRlYSB3b3VsZCBiZSB0byByaXAg dGhlIC55YXdzIHN1cHBvcnQgb3V0IGZyb20KPiA+ID4geWF3c19zZXJ2ZXIuZXJsLCBwdXQgaXQg aW4gYW4gZXh0ZXJuYWwgbW9kdWxlIGFuZCB0aGVuIHJlZ2lzdGVyIHRoYXQKPiA+ID4gZXh0ZXJu YWwgbW9kdWxlIGFzIHRoZSBoYW5kbGVyIGZvciBwYWdlcyB3aXRoIC55YXdzIHN1ZmZpeCA/PyBh bmQgdGhlbgo+ID4gPiB0aGUgc2FtZSB0aGluZyBmb3IgY2dpIGV0YyAuLi4KPiA+ID4KPiA+ID4g VGhhdCB3YXkgaXQgd2lsbCBiZSBlYXN5IHRvIHBsdWcgaW4gYW55IGV4dGVybmFsIHJlbmRlcmlu ZyBlbmdpbmUsIGZvcgo+ID4gPiBleGFtcGxlIGEgc3RyaW5nIHRlbXBsYXRlIGltcGxlbWVudGF0 dGlvbgo+ID4KPiA+IEl0IHdvdWxkIGJlIGdyZWF0IGlmIHlhd3Mgd2FzIHNwbGl0IGludG8gbW9y ZSBjb21wb25lbnRzIGxpa2UgdGhhdC4gV2Ugb25seSB1c2UgaXQgYmVjYXVzZSBpdCdzIGEgd29y a2luZyBIVFRQIHNlcnZlciBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gV2UncmUgc2VydmluZyBh cHBtb2RzIGZyb20gaXQsIGFuZCBub3RoaW5nIGVsc2UgKG5vdCBldmVuIHN0YXRpYyBmaWxlcyku IFdlJ3ZlIGFsc28gZ290IGFsbCBvZiB0aGUgbG9nZ2luZyBzaHV0IG9mZiBiZWNhdXNlIHdlIGhh dmUgYXBwbGljYXRpb24tc3BlY2lmaWMgbG9ncy4gSSB3b3VsZCBwcmVmZXIgYSBsaWdodGVyIGFu ZCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBzb2x1dGlvbiB0aGFuIFlhd3MsIGJ1dCBJIGNvdWxkbid0 IGZpbmQgYW4gYWx0ZXJuYXRpdmUgSFRUUCBpbXBsZW1lbnRhdGlvbiB0aGF0IHdhcyBoYWxmLWRl Y2VudCBhbmQgZGlkbid0IHN1ZmZlciBmcm9tIHRoZSBzYW1lIGtpbmQgb2YgbW9ub2xpdGhpYyBi bG9hdCB0aGF0IHlhd3MgYW5kIGh0dHBkIGRvLgo+ID4KPiA+IE9uIGFub3RoZXIgbm90ZSwgd2hl biBJIHdhcyBwcm90b3R5cGluZyBzb21ldGhpbmcgdy8gWWF3cyB5ZXN0ZXJkYXkgSSB0aG91Z2h0 IGl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlcmUgd2FzIGEgcmV0dXJuIHZhbHVlIHRoYXQgY291bGQg YmUgdXNlZCB0byBzZXJ2ZSBhIGZpbGUgZnJvbSBkaXNrIGZyb20gYW4gYXBwbW9kLiBSaWdodCBu b3cgSSBqdXN0IHJlYWQgdGhlIHdob2xlIHRoaW5nIGFzIGEgYmluYXJ5IGFuZCByZXR1cm4gdGhh dCwgYnV0IGl0IHdvdWxkIGJlIHByZWZlcmFibGUgaWYgSSBjb3VsZCBqdXN0IGdpdmUgdGhlIHBh dGggdG8geWF3cyBhbmQgbGV0IGl0IHNlcnZlIHRoZSBmaWxlLi4uIGUuZy4ge2ZpbGUsIENvbnRl bnRUeXBlLCBQYXRofS4gTWF5YmUgZXZlbiBhbGxvdyBJb0RldmljZSBpbiBhZGRpdGlvbiB0byBw YXRocyB0byBzdXBwb3J0IGFscmVhZHkgb3BlbiBmaWxlcz8KPiA+Cj4gPiAtYm9iCj4gPiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gPiBUYWtlIFN1cnZleXMuIEVhcm4gQ2FzaC4gSW5mbHVlbmNlIHRoZSBG dXR1cmUgb2YgSVQgSm9pbiBTb3VyY2VGb3JnZS5uZXQncyBUZWNoc2F5IHBhbmVsIGFuZCB5b3Un bGwgZ2V0IHRoZSBjaGFuY2UgdG8gc2hhcmUgeW91ciBvcGluaW9ucyBvbiBJVCAmIGJ1c2luZXNz IHRvcGljcyB0aHJvdWdoIGJyaWVmIHN1cnZleXMtYW5kIGVhcm4gY2FzaCBodHRwOi8vd3d3LnRl Y2hzYXkuY29tL2RlZmF1bHQucGhwP3BhZ2U9am9pbi5waHAmcD1zb3VyY2Vmb3JnZSZDSUQ9REVW REVWCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ ID4gRXJseWF3cy1saXN0IG1haWxpbmcgbGlzdAo+ID4gRXJseWF3cy1saXN0QGxpc3RzLnNvdXJj ZWZvcmdlLm5ldAo+ID4gaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGlu Zm8vZXJseWF3cy1saXN0Cj4gPgo+Cg== |
From: Torbjorn T. <to...@to...> - 2007-03-12 09:39:05
Attachments:
yaws_tei.erl
|
Claes Wikström wrote: > Filippo Pacini wrote: >> Hi all, >> I'm working on an Erlang template language based on String Template >> www.stringtemplate.org >> > > What would be the best way to let yaws handle .eg .st files > Should I allow for external renderers to register their > file suffixes and associate those to a render module. > > Maybe a good idea would be to rip the .yaws support > out from yaws_server.erl, put it in an external module > and then register that external module as the handler for > pages with .yaws suffix ?? and then the same thing for cgi etc ... > > That way it will be easy to plug in any external rendering > engine, for example a string template implementattion > I wrote this little Yaws Template Interface the other day. Completely untested.... The idea is that any template engine easily could be integrated. Each engine only need to include the following: -behaviour(yaws_tei). Mod:compile(Filename) => {ok, Template} | {error, Reason} Mod:render(Template, Data) => {ok, Html} | {error, Reason} A user of the template engine then need to register the templatefile: For example: register("mypage.tralala", sgte) and then, when a page is to be delivered: .... Data = [{Key, Value}, ....], F = lookup("mypage.tralala"), {html, F(data)} It is possible to control weather the template file always should be read from disk or only when being refreshed manually, etc... --Tobbe |
From: Filippo P. <pa...@sg...> - 2007-03-12 13:06:41
|
I like this way to integrate different templates in yaws. I did a quick test with sgte and it seems to work with few modifications. The only problem I see is that sometimes it find useful compiling a template as a simple string instead of having it in a separate file (e.g. a sql query, or a small piece of html used in different pages). It would be nice to manage also this case. -- filippo Torbjorn Tornkvist wrote: > Claes Wikström wrote: >> >> What would be the best way to let yaws handle .eg .st files >> Should I allow for external renderers to register their >> file suffixes and associate those to a render module. >> >> Maybe a good idea would be to rip the .yaws support >> out from yaws_server.erl, put it in an external module >> and then register that external module as the handler for >> pages with .yaws suffix ?? and then the same thing for cgi etc ... >> >> That way it will be easy to plug in any external rendering >> engine, for example a string template implementattion >> > > I wrote this little Yaws Template Interface the other day. > Completely untested.... > > The idea is that any template engine easily could be integrated. > Each engine only need to include the following: > > -behaviour(yaws_tei). > > Mod:compile(Filename) => {ok, Template} | {error, Reason} > Mod:render(Template, Data) => {ok, Html} | {error, Reason} > > A user of the template engine then need to register the templatefile: > For example: > > register("mypage.tralala", sgte) > > and then, when a page is to be delivered: > > .... > Data = [{Key, Value}, ....], > F = lookup("mypage.tralala"), > {html, F(data)} > > It is possible to control weather the template file always should > be read from disk or only when being refreshed manually, etc... > |
From: Torbjorn T. <to...@to...> - 2007-03-12 15:09:10
|
Filippo Pacini wrote: > I like this way to integrate different templates in yaws. > > I did a quick test with sgte and it seems to work with few modifications. > > The only problem I see is that sometimes it find useful compiling a > template as a simple string instead of having it in a separate file > (e.g. a sql query, or a small piece of html used in different pages). > It would be nice to manage also this case. Yes, there could be. register_file/2 % as shown before register_template(Name, Template, Module) Example: register_template(myselect, "SELECT $join \",\" columns$ FROM $table$", sgte) ... lookup(myselect) etc... Cheers, tobbe > > -- > filippo > > > Torbjorn Tornkvist wrote: >> Claes Wikström wrote: >>> What would be the best way to let yaws handle .eg .st files >>> Should I allow for external renderers to register their >>> file suffixes and associate those to a render module. >>> >>> Maybe a good idea would be to rip the .yaws support >>> out from yaws_server.erl, put it in an external module >>> and then register that external module as the handler for >>> pages with .yaws suffix ?? and then the same thing for cgi etc ... >>> >>> That way it will be easy to plug in any external rendering >>> engine, for example a string template implementattion >>> >> I wrote this little Yaws Template Interface the other day. >> Completely untested.... >> >> The idea is that any template engine easily could be integrated. >> Each engine only need to include the following: >> >> -behaviour(yaws_tei). >> >> Mod:compile(Filename) => {ok, Template} | {error, Reason} >> Mod:render(Template, Data) => {ok, Html} | {error, Reason} >> >> A user of the template engine then need to register the templatefile: >> For example: >> >> register("mypage.tralala", sgte) >> >> and then, when a page is to be delivered: >> >> .... >> Data = [{Key, Value}, ....], >> F = lookup("mypage.tralala"), >> {html, F(data)} >> >> It is possible to control weather the template file always should >> be read from disk or only when being refreshed manually, etc... >> > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV |
From: Torbjorn T. <to...@to...> - 2007-03-13 14:10:53
|
I have updated the yaws_tei.erl code to support 'inline' templates as well. If anyone of the Template Engine creators would like to try it out in order to provide feedback, you'll find it here: http://www.tornkvist.org/yaws_tei.erl If you think it is useful, then I can commit it to CVS. Cheers, Tobbe |