Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Catalyst: Users

[RFC] refactoring of component resolution methods + warnings

 

 

Catalyst users RSS feed   Index | Next | Previous | View Threaded


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/

Catalyst users RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.