Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Printing text with holes
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Pierre Weis <pierre.weis@i...>
Subject: Re: [Caml-list] Printing text with holes
[...]
> 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