From: Chuck E. <ec...@mi...> - 2001-04-30 13:00:03
|
At 08:48 AM 4/30/2001 -0400, Geoff Talvola wrote: >Allow $(count formatter=myFormatter) where myFormatter is a function you >provide in a dictionary of functions like so: formatters = >{'myFormatter':myFormatter}. Then you can support whatever funky number >and date formats you want. Sounds reasonable. >Also, how about allowing types and classes in there too as "default" >formatters for those types? formatters = {types.IntType: myIntFormatter, >MyClass: myClassFormatter} Ditto. >And finally, how about allowing just a single value in valueContainers >instead of a list. I was concerned with detecting sequences vs. objects. Suppose you have an object that responds to __getitem__, like MiscUtils.DataTable does. Is that a single object, or a sequence? Under my proposed interface, passing "table" would treat it like a sequence. Passing "[table]" would treat it like an object. >print rnv('foo = $(foo formatter=fooFormatter); bar = $bar; qux.flimflam = >$qux.flimflam', > locals(), > formatters = {'fooFormatter': fooFormatter, > types.IntType: intFormatter, > FlimFlam: flimFlamFormatter}) I can dig that. I would still like a "format=" argument for the times when, as a template writer, I just want to say: $(foo format=5.2f) Actually, NeXTSTEP had a little formatting specifier syntax somewhat similar to what I see in Excel. Something like: #.## (give 2 decimals) #.##;(#.##) (put negative numbers in parens) Maybe down the road. If we support args in RNV, then we should probably have a hook for interpreting those arguments. I guess that would be a dictionary mapping arg name (format, formatter, maxLen, ...) to the function that handles it. arg names would be case insensitive. There would be a default dictionary in the module, used if no dictionary was passed in. I'd like to go with parens for the syntax, but I want to know if there is support for that in the more advanced templates. -Chuck |