Dr. J. J. "One Eyed CrackerJack" Harbaugh 



-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
Of Maxim Olivier-Adlhoch
Sent: Wednesday, November 26, 2003 11:35 AM
To: Rebol-List (E-mail)
Subject: [REBOL] [encompass.r]



Hi all,


I just wanted to let everyone know of a nifty function I just uploaded
to the rebol.r repository, it is called emcompass.

I wanted to share it here, but its too large and will wordwrap pretty
badly...

http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=encomp
ass.r

There are a lot of comments in the code (per my usual coding style)

It lets you add code around a function and wraps all refinements to
it.  It is a follow up to the question I asked a week ago about
transfering all refinements to another function of the same/lesser
template.

'ENCOMPASS can be used to modify behaviour of code, without actually
tampering with the code itself.  It is especially usefull in patching
native! funcs.

simply put you can:
 -extend the argument list by adding new parameters or refinements, 
 -add pre-process code, executed before the function you are
enclosing.  -add pos-tprocess code, executed after the function you
are enclosing.  -the return value (if any) of the enclosed function
can be created/modified in the
  post-process, which is in turn returned by the encompassing
function.

the example within the rebol.org encompass.r script show how you can
add a confirm on every 'read done, in the case where you want to
monitor and intercept what a script is about to read, just before it
does.  Canceling the read, terminates the script.  

the example even adds a refinement to read /safe which prevent any
confirmation when you know the file is safe.

the patch replaces the global read statement, so calling this at the
begining of your code actually protects you from someone prying files
on your disk and sending them over the net without your knowledge.

good thing is that if the template to read changes in the future, you
have nothing to edit, it just continues using the new template,
because you do not have to tamper with it yourself. 


The example itself is simple, but it shows just how easy it is to
extend/restrict functionality of any function, method, action or
native.


hope some of you find it usefull, I know I really am!


ciao!


-MAx

PS: if some of you noticed it yesterday, I have severely updated it
last night, its worth getting the newer version (1.0.2)

-------------
Steel project coordinator
http://www.rebol.it/~steel
------------- 

-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.


-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to