From: Robby <rtr@blueyonder.co.uk>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] httpd scripting
Date: Tue, 3 Jun 2003 09:42:20 +0000 [thread overview]
Message-ID: <5YZCa.5429$iO3.35296367@news-text.cableinet.net> (raw)
In-Reply-To: <3EDB4C63.5080902@proweb.co.uk>
In article <20030602163818.316ebbf5.spam@broster.co.uk>,
spam@broster.co.uk (Ian Broster) writes:
>> the "code fragments in the HTML" model is not very scalable
>>
>> in fact, content management becomes a total nightmare
>
> I've come to the conclusion that neither 'code in HTML' nor 'HTML
> in code' are very good! Neither are easy to read, quotes mess
> everything up and it's hard to debug.
>
> My thought is to try to raise the abstraction higher.
> Here's how I'd like to code a server generated page.
>
> int some_data[5][5]; /*eg*/
> create_my data(some_data);
> ...
> {
> new_web_page(template);
> add(some_data, how_to_add_intgers);
> add(sometext, how_to_add_text);
> ...
> done(); /* composes the page and writes it out*/
> }
>
>
> Note that the ordering is not 'linear'. It doesn't matter which
> order the add() calls come. the 'how_to_add_text' things
> (whatever they are?) describe how the thing is presented in
> the markup language.
>
> Perhaps this has overtones of a Tk-like interface.
> Perhaps it's more object oriented. One
> day, I'd like to try to find the time to investigate.
> Maybe something already exists?
>
> ian
This kind of reminds me of a posting to comp.compilers, which I love to whip
out whenever somebody wants to understand function pointers or variable
arguments. I don't know if this "just" works in plan9, though. I haven't
had the need to try something like this out yet.
Robby
> From telnet@wagner.Princeton.EDU.composers Wed Jul 8 06:40:19 1998
> Newsgroups: comp.compilers
> Subject: Re: writing an assembler!
> Date: 8 Jul 1998 01:40:01 -0400
> Organization: Chemistry Department, Princeton University
> Message-ID: <98-07-062@comp.compilers>
> Keywords: macros, design
> Lines: 70
> In article <98-07-005@comp.compilers>, "Dr Richard A. O'Keefe" <ok@atlas.otago.ac.nz> writes:
> > These days, my language of choice for doing this would be Lisp or Ada
> > (sensible macros are about *trees*, not strings!) but you can
> > certainly use C as an assembler quite effectively.
> > [It's a disgusting hack, but it's a great disgusting hack. -John]
>
> You can get away with tree-like behavior in C if you use varargs stuff.
> I'll risk my reputation (:-)) by admitting to an even more disgusting hack:
> ---
> void new_section(char *title, char *img_name, int h, int w) {
> emit(html_list,
> html_p,
> html_hr,
> html_br,
> html_region, "center",
> html_region, "h1",
> html_text, title,
> html_tag, "img",
> html_param, "src", html_string, fname,
> html_param, "height", html_text, h,
> html_param, "width", html_text, w,
> 0,
> 0);
> }
> ---
> typedef void (*html_func)(va_list *);
>
> void emit(html_func first, ...) {
> va_list ap;
>
> va_start(ap, first);
> (*first)(&ap);
> va_end(ap);
> }
>
> void html_list(va_list *ap) {
> html_func f;
>
> while (1) {
> f = va_arg(ap, html_func);
> if (f == 0) break;
>
> (*f)(ap);
> }
> }
>
> [etc]
> ---
>
> A disgusting hack? Absolutely.
>
> But it's also an order of magnitude more powerful than any other
> dynamic HTML tool I've worked with, and it only took me an hour or so
> to implement.
> ---------------------------------------------------------------------------
> Tim Hollebeek
> email: tim@wfn-shop.princeton.edu
> URL: http://wfn-shop.princeton.edu/~tim
>
> [Wow, that's loathsome. I really like it. -John]
next prev parent reply other threads:[~2003-06-03 9:42 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-06-01 0:47 Skip Tavakkolian
2003-06-01 13:27 ` Kenji Arisawa
2003-06-01 14:24 ` Skip Tavakkolian
2003-06-01 15:28 ` boyd, rounin
2003-06-01 14:58 ` Skip Tavakkolian
2003-06-01 15:59 ` boyd, rounin
2003-06-01 20:56 ` Kenji Arisawa
2003-06-02 11:55 ` matt
2003-06-02 12:12 ` David Butler
2003-06-02 16:22 ` matt
2003-06-02 12:35 ` Charles Forsyth
2003-06-02 13:08 ` matt
2003-06-02 13:51 ` Charles Forsyth
2003-06-02 15:38 ` Ian Broster
2003-06-02 16:12 ` matt
[not found] ` <e38733ba634d64e975019d2c0de81b2b@proxima.alt.za>
2003-06-02 16:15 ` spam
2003-06-02 17:55 ` Joel Salomon
2003-06-03 9:42 ` Robby [this message]
2003-06-03 12:50 ` William Ahern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='5YZCa.5429$iO3.35296367@news-text.cableinet.net' \
--to=rtr@blueyonder.co.uk \
--cc=9fans@cse.psu.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).