> 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/
-><-