caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Pierre Weis <pierre.weis@inria.fr>
To: martin_jambon@emailuser.net (Martin Jambon)
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Printing text with holes
Date: Mon, 29 Sep 2003 23:25:28 +0200 (MET DST)	[thread overview]
Message-ID: <200309292125.XAA18034@pauillac.inria.fr> (raw)
In-Reply-To: <Pine.LNX.4.40.0309291951590.9362-100000@pc-bioinfo1> from Martin Jambon at "Sep 29, 103 08:57:36 pm"

[...]
> Well, I just extracted some code from one of my CGI programs.
> Here, the purpose is to print one line of an HTML table, where one column
> should appear in bold face (using arrays containing strings "" or "<b>" or
> "</b>").
> Here is the code:
> 
> let print_binary_patch id bb be ranking p =
>   let volume1 = p.patch_1.volume in
>   let volume2 = p.patch_2.volume in
>   let vol_percentage1 = p.patch_1.relative_volume *. 100. in
>   let vol_percentage2 = p.patch_2.relative_volume *. 100. in
> 
>   let print_option = function
>       None -> ()
>     | Some s -> << ($s) >> in
>   <<
> <tr>
>   <td>$int{ranking} $matched_tags{p}
>   [<a href="$sumo_focus_url?id=$id&index=$int{p.patch_global.patch_number}&quick=false" target=_blank>View</a>]
>   [<a href="$sumo_focus_url?id=$id&index=$int{p.patch_global.patch_number}&quick=true" target=_blank>Quick view</a>]</td>
>   <td>${bb.(1)}$g{p.patch_global.patch_size}${be.(1)}</td>
>   <td>${bb.(2)}$r1{vol_percentage1}% ($r1{volume1})${be.(2)}</td>
>   <td>${bb.(3)}$r2{vol_percentage2}% ($r2{volume2})${be.(3)}</td>
>   <td>${bb.(4)}$int{p.patch_1.pdb_group_number}${be.(4)}</td>
>   <td>${bb.(5)}$int{p.patch_2.pdb_group_number}${be.(5)}</td>
>   <td>${bb.(6)}$f3{p.patch_global.patch_sumo_score}${be.(6)}</td>
> </tr>
> >>
> 
> This does not look very beautiful, but for me it is important to have a
> compact representation where one line of source code produces not less
> than one line of output. This allows to have a global overview of the
> output without having to run the program.
> The above piece of code has 28 holes... that we must be able to modify at
> any time, just because we don't print all the data.
> 
> I would like to thank everyone for expressing their opinion on the
> subject!
> 
> -- Martin

In this case, I surely would use a template file, read the template in
memory, build the substitution function (with a hash table ?) for the
dollar identifiers and then use string substitution with
Buffer.add_subtitute to produce the output in a Buffer.t value.

Hope this helps,

Pierre Weis

INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis/


-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  reply	other threads:[~2003-09-29 21:25 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-29 13:16 Martin Jambon
2003-09-29 14:10 ` Christian Lindig
2003-09-29 16:25 ` Benjamin Geer
2003-09-29 16:39 ` Brian Hurt
2003-09-29 17:45   ` Jean-Marc EBER
2003-09-29 18:22     ` Brian Hurt
2003-09-29 20:48       ` Pierre Weis
2003-09-29 21:52         ` Richard Jones
2003-09-29 22:07           ` Fred Yankowski
2003-09-29 22:14             ` Daniel M. Albro
2003-09-29 22:19               ` Richard Jones
2003-09-29 22:23             ` Matthieu Sozeau
2003-09-30  3:56             ` Brian Hurt
2003-09-30  4:40         ` Brian Hurt
2003-09-30  6:11           ` David Brown
2003-09-29 18:57     ` Martin Jambon
2003-09-29 21:25       ` Pierre Weis [this message]
2003-09-30 12:52       ` skaller
2003-09-30 17:48         ` Martin Jambon
2003-09-29 18:16   ` Richard Jones
2003-09-29 17:00 ` Pierre Weis
2003-09-29 17:03 ` Karl Zilles
2003-09-29 21:47   ` Pierre Weis
2003-09-30  7:20     ` Jean-Christophe Filliatre

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=200309292125.XAA18034@pauillac.inria.fr \
    --to=pierre.weis@inria.fr \
    --cc=caml-list@inria.fr \
    --cc=martin_jambon@emailuser.net \
    /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).