chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] More thoughts on Ersatz


From: Matt Gushee
Subject: Re: [Chicken-users] More thoughts on Ersatz
Date: Wed, 13 Mar 2013 23:05:13 -0600

Hi, Ivan+group--

On Wed, Mar 13, 2013 at 6:39 PM, Ivan Raikov <address@hidden> wrote:   

1)  {% endblock <block_name> %}: the current grammar does not accept identifiers after endblock. Is this something required by Jinja?

It's not required, but it's allowed. And, as should be obvious, it doesn't really do anything, just possibly makes the template structure more readable.

    3) {% if not loop.last %}: this should work.  Can you check whether "if loop.last" works?

Okay, I just tried the following two templates:

  A)
    {% for word in words %}
        {{ word }}{% if loop.last %}!{% endif %}
    {% endfor %}

  B)
    {% for word in words %}
        {{ word }}{% if not loop.last %},{% endif %}
    {% endfor %}

A works for me, but B does not. The error looks like this:

  Error: (ident-expr->name) invalid identifier _expression_: #<texpr>

    Call history:

    runtime.scm:52: loop     
    runtime.scm:50: utf8#string-length     
    runtime.scm:52: loop     
    runtime.scm:50: utf8#string-length     
    runtime.scm:961: Tstr     
    runtime.scm:325: tmpl-ctx-buffer     
    runtime.scm:324: display     
    ersatz-lib.scm:204: datatype#invoke-variant-case     
    ersatz-lib.scm:204: display     
    eval.scm:291: eval-statement     
    eval.scm:238: datatype#invoke-variant-case     
    eval.scm:280: select-case     
    eval.scm:275: eval-expr     
    eval.scm:25: datatype#invoke-variant-case     
    eval.scm:84: ident-expr->name     
    runtime.scm:125: error          <--

I thought the error I got before was in the parser, but I'm not really sure now. I ran the current exercise in CSI, whereas the code I had trouble with before was compiled. By the way, I have Chicken 4.8.0.1 on Arch Linux 32-bit, with Ersatz 1.3.

5) Tvalues: I am an SML/Ocaml groupie and fanatical believer in types :-D But if it will help, I will add a sexpr->tvalue and tvalue->sexpr procedures that can convert between Scheme values and template values.

I wouldn't mind that.
 
6)  Yes, you can build templates "in-memory". Take a look at the template-statement data type. I will add this to the documentation as well.

Okay; I thought that might be the case, but I didn't really understand how to use statements. Maybe now that I've used the library a bit, I'll take another look at statements.
 
7) Name: 'tori' is a bit too generic, I think. Presumably German is the native language of Chicken, so I chose what I think expresses the nature of templates, yet is somewhat self-deprecating, as ersatz usually means 'poor substitute' in English and my native Bulgarian.

Not tori, torii! Okay, I'll explain this. You didn't say whether you got my (possibly not-so-funny) joke or not, but perhaps others will find it slightly amusing.

So, this templating library is derived from Jinja. Jinja in Japanese means a Shinto shrine (and by the way, certain shrines are called "jingu"--hence the name of the OCaml library, Jingoo). Well, most Shinto shrines have a distinctive type of gateway called a *torii*--I'm sure everyone here has seen pictures of them. And note the double 'i'--that signifies a long, or more precisely, doubled vowel sound. Well, now, consider the word 'tori' (with a single 'i'). The fundamental meaning of *tori* is 'bird'--however, when used in reference to food, it usually means a particular kind of bird: chicken!

So there you have it! I think it's pretty clever, but if you really prefer Ersatz, I guess I can live with that. But be warned: if you ever get tired of maintaining the egg and I happen to take it over, I will probably change the name (<evil laughter>).

Oh, and by the way [if you're not a (human) language geek, you can skip this part], I am curious as to whether my pun makes sense to Japanese people. See, the distinction between the long and short vowel sounds (as in *torii* vs. *tori*) is often difficult for non-native Japanese speakers--they really sound very similar if your ears are not accustomed to it. Yet, whenever I have complained about this to Japanese people, their response is almost invariable some version of "What do you mean? They're completely different." On the other hand, I'm pretty sure I have heard Japanese comedians on a number of occasions making puns in exactly this way.

--
Matt Gushee

reply via email to

[Prev in Thread] Current Thread [Next in Thread]