> I want to pass all of the given refinements to another function.

There's a better way of doing this. Just 'append (you have to replace
'append with a better 'append, though) the refinements of the function to
the function as a path.

Like this:


; A replacement 'append function that doesn't evaluate 'series and uses a
refined path for 'insert.
append: function [
 {Appends a value to the tail of a series and returns the series head.}
 series [series! port!]
 value
 /only {Appends a block value into a block series as a block}
 ][
 Refined_Insert
 ][
 Refined_Insert: to path! 'insert
 if only [head insert tail :Refined_Insert 'only]
 head Refined_Insert tail :series :value
 ]

And this function shows how to use it:

SNA_switch: function [
 "Selects a choice and evaluates what follows it."
 value "Value to search for."
 cases [block!] "Block of cases to search."
 /case "Value is case-sensitive."
 /only "Treats a series value as a single value."
 /any "Enables the * and ? wildcards."
 /default Default_Case "Default case if no others are found."
 ][
 Refined_Select
 ][
 Refined_Select: to path! 'select
 if case [head insert tail :Refined_Select 'case]
 if only [head insert tail :Refined_Select 'only]
 if any [head insert tail :Refined_Select 'any]
 either found? value: Refined_Select cases value [
  do value
  ][
  either default [
   do Default_Case
   ][
   none
   ]
  ]
 ]

I hope that helps!

Andrew Martin
Refined REBOLite...
ICQ: 26227169
http://members.xoom.com/AndrewMartin/
-><-

Reply via email to