[Catalyst] Request paths - rejoining Chained actions together.

Tomas Doran bobtfish at bobtfish.net
Fri May 9 13:00:07 BST 2008


Hi

I'm building quite a complex app, which has a number of ways of  
locating things, and I want to be able to rejoin chains..

Some example URLs:

/volume/*/track/*/format/*
/track/*format/*

This becomes:

sub tracksequence : Chained('/') PathPart('track') CaptureArgs(1) {}

sub volume : Chained('/') PathPart('volume') CaptureArgs(1) {}
sub trackonvolume : Chained('volume') CaptureArgs(1) {}

sub format : Chained('tracksequence', 'trackonvolume') PathPart 
('format') Args(1) {}

But this doesn't work...

So what I've got instead is:

sub formattracksequence : Chained('tracksequence') PathPart('format')  
Args(1) { $c->forward('format'); }
sub formattrackonvolume: Chained('tracksequence', 'trackonvolume')  
PathPart('format') Args(1) { $c->forward('format') }
sub format : Private {}

Which works fine.. However, this is just a subset of my URL  
complexity, and I have *multiple* points where I want to be able to  
chain one function into two (or more) chains..

My actual URLs look like /volume/track/*/format/*bitrate/*/ 
someoperation or track/*/format/*bitrate/*/someoperation

and having to maintain two seperate sets of chains is pretty painful..

Is there any sane way of doing this? Am I missing something obvious?

Cheers
Tom




More information about the Catalyst mailing list