
brian.cassidy at nald
May 30, 2008, 6:56 AM
Post #1 of 1
(162 views)
Permalink
|
|
[RFC] refactoring of component resolution methods + warnings
|
|
Hey All, Further to my message from the 27th of May about component resolution, I have created a branch [1] to refactor how it works behind the scenes. Here is the excerpt from my updates to the Changes file: - Refactored component resolution (component(), models(), model(), et al). We now throw warnings for two reasons: 1) model() or view() was called with no arguments, and two results are returned -- set default_(model|view), current_(model|view) or current_(model|view)_instance instead 2) you call a component resolution method with a string, and it resorts to a regexp fallback wherein a result is returned -- if you really want to search, call the method with a regex as the argument In detail, I've gutted most of the private methods that were used for this task. In their place are 3 methods: (1) _filter_component() -- this hasn't changed. it handles components that ACCEPT_CONTEXT. (2) _comp_names() -- a slight implementation change. used, for example, when you need to grab all of the valid values for controllers. (3) _comp_search_prefixes() -- this combines the old _comp_singular, _comp_explicit and _comp_search methods in to one method. Although combining the 3 methods in to 1 sounds bad, the result is 32 lines long -- 19 if you take out blank lines and comments. Besides the refactoring, there is now an explicit regexp behavior for component searching. All of model(), view(), controller() and component() will accept a regexp and return (in list context) the matches. Example from the docs: # find all views that start with Foo my @foo_views = $c->view(qr{^Foo}); FYI: all of the existing tests pass, plus I've added a number of new tests for the regexp behavior. Please take a look and pass along your comments. -Brian [1] http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/5.70/branches/compres/ _______________________________________________ List: Catalyst[at]lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst[at]lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/
|