At 03:47 PM 4/1/04 -0800, Guido van Rossum wrote: > > > as [rst_directive( > > > arguments=(1,0,1), > > > options={'class': directives.class_option}, > > > content=1 > > > ) > > > ] def admonition(*args): > > > return make_admonition(nodes.admonition, *args) > > > > I suppose so, but a generic function attribute decorator > > would do just as well. IOW, it doesn't have to be > > "rst_directive", just "attributes" would do fine. > >I like rst_directive(), because it's more specific -- it would catch >mistakes earlier. E.g. if you misspelled argumnets, attributes() >would have no clue about it; but rst_directive() should have specific >keywords. Yeah, that's why I wrote the example that way. Once you have an 'attributes()' decorator, it's easy to create task-specific versions of it, e.g.: def my_decorator(foo,bar,baz): return attributes(**locals()) And of course you can have defaults, and do validation of the attributes before the return statement. And there's an additional reason to use task-specific decorators: if you later decide that function attributes aren't as useful, or you need to change what the attributes are named, or you decide to stick all the options into an object and use only one attribute, you need only change the task-specific decorator, not all the things that call it.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4