On Tuesday 28 August 2007, Kai Peters wrote:
> Hi Tim ~
>
> tried to think of a situation where I'd use that and could
> not come up with anything - do you have a practical example
> you can share?
:-) I use many.
 The code below has been modified to remove any dependencies, so
it may break when you test it, but any error should be obvious, and
hopefully the concept is clear.
Data stored in the anonymous context is presistant,
 
I use it to create html buttons with inline javascript for rollover effects. 
It has two helpful characteristics: 
1)"Dictionary style" argument list. 
2)No need to redundantly call with a large 'args list
context [    
        type: "button" name: "button" value: "click me" 
        bgc: "#cccccc" color: "black" hcolor: "lightblue"
        fs: "12px" fw: "normal" hbgc: "black" onclick: ""
        ;; previous defined words
        kws: [type name value bgc color hbgc hcolor fs fw onclick]
        set 'do-button1 func[
                "create a button using 'button function with keywords" 
                        [catch] args[block!] 
                        "keywords: type, name, value, bgc, color, hbgc, hcolor, 
fs, fw, onclick" 
                        /local use-onclick test blk][
                foreach[key val] args[
                        if not in self key
                                [throw make error! rejoin["Unknown key: " form 
key 
                                                          ". Use one of: [" 
form kws "]"]]
                        if key = 'onclick[use-onclick: true]
                        either word? val[
                                set in self key get val
                                ][set in self key val]
                        ]
                blk: copy ["<input type=^"" self/type "^" name=^"" 
                        self/name "^" value=^"" 
                        self/value "^" style=^"background-color: " 
                    self/bgc "; color: " self/color "; font-weight: " 
                    self/fw "; font-size: " self/fs 
                    ";^" onmouseout=^"this.style.backgroundColor='"     
                    self/bgc "';this.style.color='" self/color 
                    "'^" onmouseover=^"this.style.backgroundColor='" 
                    self/hbgc "';this.style.color='"
                        self/hcolor "'^"" 
                        ]                       
                if use-onclick[
                        append blk [" onclick=^"" self/onclick "^"" ]
                        ]
                append blk ">"
                ]
        ]       

-- 
To unsubscribe from the list, just send an email to 
lists at rebol.com with unsubscribe as the subject.

Reply via email to