Jaws - coming soon - testers and advice wanted

bryan rasmussen <>
Mon Feb 20 10:44:54 CET 2006


I might be able to do testing, dependent on figuring out my schedule
which for the next 4 months is pretty hairy.

A propos the javascript: http://mcc.id.au/xpathjs/
xpath in javascript.

So perhaps it would be able to run an xpath, assuming that one gave
the a element an id :

//div[a[@id='myid']]

Cheers,
Bryan Rasmussen





On 2/20/06, Joe Armstrong (AL/EAB) <> wrote:
>
> Hello,
>
> Progress report - jaws (yaws + templates) is progressing nicely.
> I have finally "made up my mind" (TM) and decided on a template syntax
> (two years thought and half a dozen prototypes "down the drain") -
> a compiler for this syntax has now been up and running for a few weeks
> and I am finalising the Ajax support.
>
> jaws is a template language for yaws (jaws is inspired by PHP, velocity
> and AJAX)
> - this posting contains a "first look" at the syntax. I'm not going to
> describe the semantics - you have to *guess* - it's rather easy.
> (Hints all webpages and templates get compiled to single functions)
>
> A *single* jaws file contains templates for *many* webpages - so that an
> entire application can be shipped as a single file.
>
> Here's a simple example, assumed to be in the file foo.jaws
>
>      @module foo
>
>        @webPage test(_)
>        <? N = 25, "" ?>
>
>        <P>factorial <? N ?> is <? fac(N) ?>
>
>        @erl
>        fac(0) -> 1;
>        fac(N) -> N * fac(N-1).
>
>        @webPage form(A)
>        <form method="post" action="./foo.jaws?page=posted">
>       <input name="fac" size="20">
>        </form>
>
>        @webPage posted(A)
>        <? {ok, X} = yaws_api:postvar(A, "fac"),
>         N = list_to_integer(N), "" ?>
>
>      <? banner([{"name","joe"},{"likes", "Erlang"}]) ?>
>
>        <p>Fac <? N ?> is <? red(fac(N)) ?>
>
>        @template red(X)
>        <font color="red"><? X ?></font>
>
>        @template banner(X)
>
>        <p>Hello ${name:X} i hear you like ${likes:X}
>
>      @webPage ajax(A)
>        <div id="tag1">
>        ...
>        </div>
>
>        <a href='javascript:erlcall'("foo", "myfunc", "")'>update</a>
>
>        @webPage myfunc(A)
>
>        myfunc(Args) ->
>           [replace_contents("tag1", "<h1>Hi .... "].
>
>        @webPage redirect(A)
>        <? Headers = [{"redirect", "http:// ..."}], "" ?>
>
>        <h1> You'll soon be redirected.
>
> This defines eight webpages and two templates in one jaws file. It
> gives examples of
>
>        - template expansion
>        - form handling
>        - ajax
>        - header manipulation (in the redirect example)
>
> << computationally <? fac(N) ?> is about 10-20 times faster than PHP
> and it works for bignums :-) >>
>
> It seems to me to be desirable to have the code which handles a form
> *immediately after the code which defines the form* (and not in another
> file) - it also seems desirable to be able to program HTML with
> subroutines, like this:
>
>        @webPage foo(A)
>
>        Some html <? fancy_box(A) ?>
>        ... <? fancy_box(B) ?> ...
>
>        @template fancy_box(A)
>        <table> .... <? A ?> ... </table>
>
> Note also how the site of ajax call is lexically near to the code which
> handles the call.
>
> javascript:erlcall(M, F, A) allows javascript to call an arbitary Erlang
> {M,F,A}
> This is achieved with ajax and a JSON encoding. MFA returns a list
> of actions that are to be performed on the webpage - ie
> (replace_contents("tag1" , HTML))
> sets the innerHTML field of tag1 to HTML.
>
> At this stage I need two things:
>        1) Testers - a few good people who are interested in this kind
> of
>           stuff
>        2) javascript help - the result of myfunc(Args) is a list of
> actions to be
>           performed on a web page. A typical example is
>
>           replace_contents(Tag, Html)
>
>           When this is called in Erlang a JSON encoded term is sent
> back to the
> web page and after a little trickery
>
>        jsReplaceContents(tag, html) is called
>
> where
>
>        function jsReplaceContents(tag, html) {
>                document.getElementById(tag).innerHTML = html;
>        }
>
> I have defined a few simple functions (replace_contents(tag, HTML),
> delete_tag(Tag) etc.
>
> But I am really stretching my knowledge of javascript here.
>
> If any javascript guru wants to help please contact me.
>
> In particular does anybody have any ideas how to do this?
>
> If I have this
>
>         <div id="foo">
>          ....
>          ...  <a href="javascript:bar()">click</a>
>
>         </div>
>
>  I want bar() to compute the id if the nearest containing div - in this
> case "foo" any ideas how to do this? - do I really have to "walk the
> tree" from the root of the DOM tree?
>
> /Joe
>



More information about the erlang-questions mailing list