--------------ms070108060207050503020303
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I haven't looked into it much but I too am not very satisfied with 
amrita for templating.  I'd like something more like PHP's Smarty.  
Haven't had much time to work on ruby web apps lately but when I get 
back to my on-hold web app I will probably look into other options.

Carl

Dick Davies wrote:

>I've sat down to write a data-driven webapp. Nice steep
>learning curve for me (I'm on my last week here so thought
>I'd waste it productively).
>
>So far FastCGI and PostGreSQL (this is an excuse for me
>to finally spend time learning SQL in detail, trolls please stfu).
>
>Few questions at the bottom of this, but it'd help to explain
>how I got into this mess first...
>
>[ Can I also place a hearty plug for Subversion here - I've 
>changed designs three or four times over the weekend and
>renaming files/classes and nesting libs has been a dream 
>with it. Definitely a refactoring-friendly VCS..]
>
>The db connection is wrapped in a class, Cnps, which I start up
>outside the fcgi mainloop, and is the only thing that is SQL
>savvy. The mainloop just calls methods on that class to get data
>on demand.
>
>It all works great - thanks to Carl and Ara for their 
>rubygarden wiki discussions on fastcgi - but
>I'm coming to the stage where I have had enough of 
>
>out"EOO"
><html><body>
>#{cnps.champ} is winning with a score of #{cnps.score(cnps.champ)}
></body>
></html>
>EOO
>
>
>and want to use some kind of template thing.
>
>First go was erb. Works well enough, but pretty verbose for 
>the Wiki Generation :) So plan B was to use redcloth  and erb,
>to generate eruby from redcloth templates, store them in another
>class and eval them when the requests come in.
>
>
>Problem with *that* is that I need placeholders in the Textile
>for each thing Eruby can parse , so I end up with a lot of <% %>
>noise in the templates.
>
>(Doing it the other way round seemed hard to do, since  I want to
>actually evaluate the dynamic tags at request time, but still preload
>the templates).
>
>So, Plan C. Use the  ability of RedCloth to create id tags to hook up
>to Amrita.
>
>So now we have 
>
>request comes in,
>fcgi decides what to display, 
>asks a helper class to get the template,
>executes the template using Amrita
>and returns the output.
>
>the helper class is responsible for converting the
>requested template (textile, (blue|red)cloth, whatever)
>to Amrita-ready html.
>
>Problem here is that Amrita doesn't duck type at all, and
>it'd really like a Hash. I was hoping to have Cnps just quack
>like a Hash, but it isn't going to happen.  Arse.
>
>
>So a few questions:
>
>Is there a way to delay evaluation of tags?
>In a 'do the simplest thing' frame of mind, is there a way to
>have ruby "" strings evaluated *after* construction?
>
>Amrita seems a bit musty, has it got a successor? Does Kwartz
>help me any?
>
>[ This would be my personal preference ]
>Is there a facility to extend RedCloth with custom tags?
>I could avoid the whole 'do a template from redcloth, then
>evaluate template' step that way, and create some kind of unholy 
>crossbreed of erb/amrita with redcloth?
>
>Something like  '>instance.method<' , then these tags get 
>processed first and return *more* Textile, which finally 
>gets converted...  I'd need to do the evaluation during
>to_html(), but that's kind of neat.
>
>Obviously I don't expect anyone else to
>put up with that, but if I could add my own tag, that'd be
>great. I could see it having lots of uses for others too.
>
>
>Am I reinventing a wheel here?
>

--------------ms070108060207050503020303
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIPxjCC
BMgwggQxoAMCAQICBAIAApswDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCVVMxGDAWBgNV
BAoTD0dURSBDb3Jwb3JhdGlvbjEcMBoGA1UEAxMTR1RFIEN5YmVyVHJ1c3QgUm9vdDAeFw0w
MjA4MjcxOTA3MDBaFw0wNjAyMjMyMzU5MDBaMIHcMQswCQYDVQQGEwJHQjEXMBUGA1UEChMO
Q29tb2RvIExpbWl0ZWQxHTAbBgNVBAsTFENvbW9kbyBUcnVzdCBOZXR3b3JrMUYwRAYDVQQL
Ez1UZXJtcyBhbmQgQ29uZGl0aW9ucyBvZiB1c2U6IGh0dHA6Ly93d3cuY29tb2RvLm5ldC9y
ZXBvc2l0b3J5MR8wHQYDVQQLExYoYykyMDAyIENvbW9kbyBMaW1pdGVkMSwwKgYDVQQDEyND
b21vZG8gQ2xhc3MgMyBTZWN1cml0eSBTZXJ2aWNlcyBDQTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBALEeYGbgQwaeJ2gvApnHiN+F69tl7NRJZ3ouH83cFSzWHqzynUY6XQPA
PQUsWhgNWSVCo3LArSjSrTwx4ksH+16Y66gz1mmyWp7qLEmmJi5M8MyrQNKq3ixOgbW6e7hc
0Hu9R/XABtLA5NdH22JAr6EcUQMY27jQu5THPHnqJWSuJhnhPGZHZ5Kde1WrNMJ1btknjp2M
8B3aa5yGBKKQteqdjM/7OUOo8BgtnvcZECycL+HQsf/XWcTNQDL514HbURzyQVKBQbGDuMgJ
/pkiR4BPnMuu4CjVHKxwR7Alq6E4Qhdr+mpujV95+PYpAzCkbkbUhV2qQJk4dtseAX3lDKUC
AwEAAaOCAacwggGjMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93d3cucHVibGljLXRydXN0
LmNvbS9jZ2ktYmluL0NSTC8yMDA2L2NkcC5jcmwwHQYDVR0OBBYEFPZSIhcVEwgDWb8YlZ9I
tLnp/vhmMIGSBgNVHSAEgYowgYcwSQYKKoZIhvhjAQIBBTA7MDkGCCsGAQUFBwIBFi1odHRw
Oi8vd3d3LnB1YmxpYy10cnVzdC5jb20vQ1BTL09tbmlSb290Lmh0bWwwOgYMKwYBBAGyMQEC
AQMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdXJlLmNvbW9kby5uZXQvQ1AwWAYDVR0j
BFEwT6FJpEcwRTELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEcMBoG
A1UEAxMTR1RFIEN5YmVyVHJ1c3QgUm9vdIICAaMwKwYDVR0QBCQwIoAPMjAwMjA4MjcxOTA3
MzFagQ8yMDA1MDIyMzIzNTkwMFowDgYDVR0PAQH/BAQDAgHmMA8GA1UdEwQIMAYBAf8CAQAw
DQYJKoZIhvcNAQEFBQADgYEAtqewenGL4LqzgR42MnqGGNbxq005CHEGWmegSwHlMEBtibWe
Faqxx/QKxlwO6TfeqJfH3M7Ncft0AgfcXxUnCFMHdtS5BunCd1AeysmwwkaBgACtRKpc1iDZ
VTK+Vpbx6r2g47wNgDrqzPuaV+14pTY9VurR53TKNMPPsVHp4AwwggV5MIIEYaADAgECAhEA
0778lNvXcqTJcbJWukDeKDANBgkqhkiG9w0BAQUFADCB3DELMAkGA1UEBhMCR0IxFzAVBgNV
BAoTDkNvbW9kbyBMaW1pdGVkMR0wGwYDVQQLExRDb21vZG8gVHJ1c3QgTmV0d29yazFGMEQG
A1UECxM9VGVybXMgYW5kIENvbmRpdGlvbnMgb2YgdXNlOiBodHRwOi8vd3d3LmNvbW9kby5u
ZXQvcmVwb3NpdG9yeTEfMB0GA1UECxMWKGMpMjAwMiBDb21vZG8gTGltaXRlZDEsMCoGA1UE
AxMjQ29tb2RvIENsYXNzIDMgU2VjdXJpdHkgU2VydmljZXMgQ0EwHhcNMDMwNzA2MDAwMDAw
WhcNMDQwNzA1MjM1OTU5WjCB3zE1MDMGA1UECxMsQ29tb2RvIFRydXN0IE5ldHdvcmsgLSBQ
RVJTT05BIE5PVCBWQUxJREFURUQxRjBEBgNVBAsTPVRlcm1zIGFuZCBDb25kaXRpb25zIG9m
IHVzZTogaHR0cDovL3d3dy5jb21vZG8ubmV0L3JlcG9zaXRvcnkxHzAdBgNVBAsTFihjKTIw
MDMgQ29tb2RvIExpbWl0ZWQxGDAWBgNVBAMTD0NhcmwgWW91bmdibG9vZDEjMCEGCSqGSIb3
DQEJARYUY2FybEB5b3VuZ2Jsb29kcy5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
AKtIZSyfoppNIZm8EwguRgIMPh8Sohgro0UwKanm8DXCPiLWFd25/2WjoCB0VYUMXVEC7D+c
tvpruXiLH9lKuD2WNvdHUzr2EdyBP7uJ7Q7C4lMpIjQRtYCOeSH3CeZcy6FyLKZ8jOtV/BgH
fWsaX/z8u29bktnr1K18MCNIKq7RAgMBAAGjggGzMIIBrzAfBgNVHSMEGDAWgBT2UiIXFRMI
A1m/GJWfSLS56f74ZjAdBgNVHQ4EFgQUrG/w0IpUWEnwYe5gDksKWgjVwqcwDgYDVR0PAQH/
BAQDAgWgMAwGA1UdEwEB/wQCMAAwIAYDVR0lBBkwFwYIKwYBBQUHAwQGCysGAQQBsjEBAwUC
MEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQECAQEBMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2Vj
dXJlLmNvbW9kby5uZXQvQ1BTMIGwBgNVHR8EgagwgaUwOKA2oDSGMmh0dHA6Ly9jcmwuY29t
b2RvLm5ldC9DbGFzczNTZWN1cml0eVNlcnZpY2VzXzIuY3JsMDqgOKA2hjRodHRwOi8vY3Js
LmNvbW9kb2NhLmNvbS9DbGFzczNTZWN1cml0eVNlcnZpY2VzXzIuY3JsMC2gK6ApgSdDbGFz
czNTZWN1cml0eVNlcnZpY2VzXzJAY3JsLmNvbW9kby5uZXQwEQYJYIZIAYb4QgEBBAQDAgUg
MB8GA1UdEQQYMBaBFGNhcmxAeW91bmdibG9vZHMub3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAR
powtW8sldyqXAfqn276jiYMlTBSX6BH1pjnIHNiYECywMi1txd8hRB3c/iHXCyAHuYq3AgRI
WegFJ+8/B1jGcUxDjvzmSSjnhFSztT1oNJZUrw0yYhdp+yWDjov24sKFFWYwC4rsnO0y6y9D
U9qAyrKk7NuwHp/NPR2tujpnvStgFLk3hvJTUj3Cu//+OXuqPwk6pIDYvnsGkISIkYfO8kQz
F39TAlNLkyBIsrzZdTotnSNlkwgzW1Ys62MRjZsC6zlrv2dMPxn0iyrxxtse3d82EF1Y53B/
hWvgGoQfQtnsz9bJSPbl9CvfMqPO/fRxGomUcOCSr7NPdoafve+JMIIFeTCCBGGgAwIBAgIR
ANO+/JTb13KkyXGyVrpA3igwDQYJKoZIhvcNAQEFBQAwgdwxCzAJBgNVBAYTAkdCMRcwFQYD
VQQKEw5Db21vZG8gTGltaXRlZDEdMBsGA1UECxMUQ29tb2RvIFRydXN0IE5ldHdvcmsxRjBE
BgNVBAsTPVRlcm1zIGFuZCBDb25kaXRpb25zIG9mIHVzZTogaHR0cDovL3d3dy5jb21vZG8u
bmV0L3JlcG9zaXRvcnkxHzAdBgNVBAsTFihjKTIwMDIgQ29tb2RvIExpbWl0ZWQxLDAqBgNV
BAMTI0NvbW9kbyBDbGFzcyAzIFNlY3VyaXR5IFNlcnZpY2VzIENBMB4XDTAzMDcwNjAwMDAw
MFoXDTA0MDcwNTIzNTk1OVowgd8xNTAzBgNVBAsTLENvbW9kbyBUcnVzdCBOZXR3b3JrIC0g
UEVSU09OQSBOT1QgVkFMSURBVEVEMUYwRAYDVQQLEz1UZXJtcyBhbmQgQ29uZGl0aW9ucyBv
ZiB1c2U6IGh0dHA6Ly93d3cuY29tb2RvLm5ldC9yZXBvc2l0b3J5MR8wHQYDVQQLExYoYyky
MDAzIENvbW9kbyBMaW1pdGVkMRgwFgYDVQQDEw9DYXJsIFlvdW5nYmxvb2QxIzAhBgkqhkiG
9w0BCQEWFGNhcmxAeW91bmdibG9vZHMub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQCrSGUsn6KaTSGZvBMILkYCDD4fEqIYK6NFMCmp5vA1wj4i1hXduf9lo6AgdFWFDF1RAuw/
nLb6a7l4ix/ZSrg9ljb3R1M69hHcgT+7ie0OwuJTKSI0EbWAjnkh9wnmXMuhciymfIzrVfwY
B31rGl/8/LtvW5LZ69StfDAjSCqu0QIDAQABo4IBszCCAa8wHwYDVR0jBBgwFoAU9lIiFxUT
CANZvxiVn0i0uen++GYwHQYDVR0OBBYEFKxv8NCKVFhJ8GHuYA5LCloI1cKnMA4GA1UdDwEB
/wQEAwIFoDAMBgNVHRMBAf8EAjAAMCAGA1UdJQQZMBcGCCsGAQUFBwMEBgsrBgEEAbIxAQMF
AjBGBgNVHSAEPzA9MDsGDCsGAQQBsjEBAgEBATArMCkGCCsGAQUFBwIBFh1odHRwczovL3Nl
Y3VyZS5jb21vZG8ubmV0L0NQUzCBsAYDVR0fBIGoMIGlMDigNqA0hjJodHRwOi8vY3JsLmNv
bW9kby5uZXQvQ2xhc3MzU2VjdXJpdHlTZXJ2aWNlc18yLmNybDA6oDigNoY0aHR0cDovL2Ny
bC5jb21vZG9jYS5jb20vQ2xhc3MzU2VjdXJpdHlTZXJ2aWNlc18yLmNybDAtoCugKYEnQ2xh
c3MzU2VjdXJpdHlTZXJ2aWNlc18yQGNybC5jb21vZG8ubmV0MBEGCWCGSAGG+EIBAQQEAwIF
IDAfBgNVHREEGDAWgRRjYXJsQHlvdW5nYmxvb2RzLm9yZzANBgkqhkiG9w0BAQUFAAOCAQEA
EaaMLVvLJXcqlwH6p9u+o4mDJUwUl+gR9aY5yBzYmBAssDItbcXfIUQd3P4h1wsgB7mKtwIE
SFnoBSfvPwdYxnFMQ4785kko54RUs7U9aDSWVK8NMmIXafslg46L9uLChRVmMAuK7JztMusv
Q1PagMqypOzbsB6fzT0drbo6Z70rYBS5N4byU1I9wrv//jl7qj8JOqSA2L57BpCEiJGHzvJE
Mxd/UwJTS5MgSLK82XU6LZ0jZZMIM1tWLOtjEY2bAus5a79nTD8Z9Isq8cbbHt3fNhBdWOdw
f4Vr4BqEH0LZ7M/WyUj25fQr3zKjzv30cRqJlHDgkq+zT3aGn73viTGCBF4wggRaAgEBMIHy
MIHcMQswCQYDVQQGEwJHQjEXMBUGA1UEChMOQ29tb2RvIExpbWl0ZWQxHTAbBgNVBAsTFENv
bW9kbyBUcnVzdCBOZXR3b3JrMUYwRAYDVQQLEz1UZXJtcyBhbmQgQ29uZGl0aW9ucyBvZiB1
c2U6IGh0dHA6Ly93d3cuY29tb2RvLm5ldC9yZXBvc2l0b3J5MR8wHQYDVQQLExYoYykyMDAy
IENvbW9kbyBMaW1pdGVkMSwwKgYDVQQDEyNDb21vZG8gQ2xhc3MgMyBTZWN1cml0eSBTZXJ2
aWNlcyBDQQIRANO+/JTb13KkyXGyVrpA3igwCQYFKw4DAhoFAKCCAsEwGAYJKoZIhvcNAQkD
MQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDQwNTEwMTkyODAwWjAjBgkqhkiG9w0B
CQQxFgQUOWxrUUJqv8K8ekzaNTj0Q1WUp/4wUgYJKoZIhvcNAQkPMUUwQzAKBggqhkiG9w0D
BzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwIC
ASgwggEDBgkrBgEEAYI3EAQxgfUwgfIwgdwxCzAJBgNVBAYTAkdCMRcwFQYDVQQKEw5Db21v
ZG8gTGltaXRlZDEdMBsGA1UECxMUQ29tb2RvIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsTPVRl
cm1zIGFuZCBDb25kaXRpb25zIG9mIHVzZTogaHR0cDovL3d3dy5jb21vZG8ubmV0L3JlcG9z
aXRvcnkxHzAdBgNVBAsTFihjKTIwMDIgQ29tb2RvIExpbWl0ZWQxLDAqBgNVBAMTI0NvbW9k
byBDbGFzcyAzIFNlY3VyaXR5IFNlcnZpY2VzIENBAhEA0778lNvXcqTJcbJWukDeKDCCAQUG
CyqGSIb3DQEJEAILMYH1oIHyMIHcMQswCQYDVQQGEwJHQjEXMBUGA1UEChMOQ29tb2RvIExp
bWl0ZWQxHTAbBgNVBAsTFENvbW9kbyBUcnVzdCBOZXR3b3JrMUYwRAYDVQQLEz1UZXJtcyBh
bmQgQ29uZGl0aW9ucyBvZiB1c2U6IGh0dHA6Ly93d3cuY29tb2RvLm5ldC9yZXBvc2l0b3J5
MR8wHQYDVQQLExYoYykyMDAyIENvbW9kbyBMaW1pdGVkMSwwKgYDVQQDEyNDb21vZG8gQ2xh
c3MgMyBTZWN1cml0eSBTZXJ2aWNlcyBDQQIRANO+/JTb13KkyXGyVrpA3igwDQYJKoZIhvcN
AQEBBQAEgYAP+0zdLBQ005hUONEWOKwvYFTV0h7b2U+/auZfN0s4Wz4gFXSDSVmaMZAYRnur
xVO1NWAtQmq23FQphU9iJ8HIAMcSYI3BifCIZTell6MkbQhXZ6D4ytwzI3ZpuH+VYSgxoKrI
bUu4NTzY6CNHFw4qWOTuQswm7o8Z8zzPnMOCsgAAAAAAAA--------------ms070108060207050503020303--