Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Binding problem with 'do

From: tim:johnsons-web at: 1-Aug-2005 7:24

* Anton Rolls <[antonr--lexicon--net]> [050801 01:38]:
> Hi Tim, > > Your code below seems to be generating code using a macro. > It seems extremely unwieldy to me and needs a clever > bit of rebol to shrink it to its essence. > > What are the changing parts (what value and type are they) ? > > It looks to me like the changing parts are: > > - widget style > - widget feel > > where the feel is just used to detect different key presses (?) > > I would love to know the intention of your code so we > can refactor it.
<grin> We just did. We refactored it in rebol. Yes. python is cumbersome, but it scales well, and some customers want it. Even the code below could be factored more. FI: dispatch should be a method of kblists... tim
> Anton. > > > # Example: explicit > > def do_sql(name,layout): > > dispatch = { > > 'radio':kbLists.do_sql_radio(), > > 'text':kbLists.do_sql_text(), > > 'textarea':kbLists.do_sql_textarea(), > > 'decimal':kbLists.do_sql_decimal(), > > 'uinteger':kbLists.do_sql_uinteger(), > > 'select':kbLists.do_sql_select(), > > 'date':kbLists.do_sql_date(), > > 'checkbox':kbLists.do_sql_checkbox(), > > 'password':kbLists.do_sql_text(), > > } > > return ' %s %s,' % (name,dispatch[layout['type']])
to elaborate: python automagically builds in internal dictionary with the declared class members. Among other things, it allows testing for validity of keyword values... thus the 'for item in keys' test loop.
> > # Example: using builtin _dict_ in class constructor > > def __init__(self, url='', text='', **kw): > > self.target = None > > self.onClick = None > > self.onMouseOver = None > > self.onMouseOut = None > > self.url = url > > self.text = text > > # target ... text constitutue self.__dict__ when they are > > # preceded by 'self.' > > for item in kw.keys(): > > if self.__dict__.has_key(item): > > self.__dict__[item] = kw[item] > > else: > > raise KeyError, `item`+' not a valid parameter > > for this class.' > > -- > To unsubscribe from the list, just send an email to > lists at rebol.com with unsubscribe as the subject.
-- Tim Johnson <[tim--johnsons-web--com]> http://www.alaska-internet-solutions.com