On 07/04/2013 03:53 PM, Harald Oehlmann wrote:

> Sorry, Massimo, I did not get it...
> 
> 1) Cache: what is cached:

a Tcl script obtained from either a pure Tcl script (trivial case) or a
template which implies parsing and transformation into pure Tcl

> 1.a) the verbatim .rvt file?

No, as I said it's Tcl code produced by the parser

> 1.b) or the parsed html output of the rvt. file ?

Each chunk of HTML is set as argument of a "puts -nonewline ..." and
interleaved with the embedded Tcl code

> 
> I would consider 1.b) as quite dangerous, as already a
> "<? [clock now] ?>" would not work any more...
> 

I think I have dissolved your concerns: Rivet has been working that way
ever since. In your case "[clock now]" would go into the cache entry

> 2) About the new command "parse -string xxx" -
> This sounds logic to me. We have something like "<bod><h1><? db get
> header ?></h1></body>" in a data base and then, put it into the tag
> replacement, so essentially do:
> subst $template
> where the command tags are not "[]" but "<??>".
> 
> Ok, in which scope, the tags are evaluated ?
> 2.a) current scope
> 2.b) global scope

the scope of the caller, as for the 'parse' command

> 
> I think this is useful, no issue Massimo.
> 
> So parse may be implemented as:
> proc parse filename {
>     set f [open $filename r]
>     set res [parse -string [read $f]]
>     close $f
>     return $res
> }


in this case the caching would be lost unless we build a new C function

::rivet::read_file_cached <filename>

which should return either the cached content or read the file, cache
the content and then return it

-- 
-- Massimo Manghi

Dipartimento di Neuroscienze
Unità di Biofisica e Fisica Sanitaria
via Volturno 39
43125 Parma

---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-dev-unsubscr...@tcl.apache.org
For additional commands, e-mail: rivet-dev-h...@tcl.apache.org

Reply via email to