On Thu, Jan 23, 2014 at 9:18 AM, Warren Young <warren@etr-usa.com> wrote:
get '/foo/*' => sub { ....
What is "get", exactly? I assume it is a function that takes a string and a coderef, and you're taking advantage of Perl's optional parentheses and fat comma to create a Perl-based DSL.
Exactly. A lot of Dancer is Perl-based DSL. It "prettier" than this: get( '/foo/*', sub { ... } )
I tried to answer this myself before posting. I thought it might be a package-global function, but there is no "sub get" in Dancer2.pm.
Dancer2 (unlike Dancer1) has a rather convoluted system for exporting functions to the right place. It's sort of defined in Dancer2::Core::DSL, but those functions get wrapped in something that provide the right "application" object when used. E.g. https://metacpan.org/source/XSAWYERX/Dancer2-0.11/lib/Dancer2/Core/DSL.pm#L1...
Another example: context->destroy_session
The only way I can think of for that to work without a sigil is for 'context' to be another global (?) function that returns an object reference, rather than be an object reference itself.
Exactly.
There is no "context" in Dancer2.pm, so I'm left wondering where it comes from.
It's another DSL keyword: https://metacpan.org/source/XSAWYERX/Dancer2-0.11/lib/Dancer2/Core/DSL.pm#L2...
I care about this because I'm trying to port a fairly complex app from Apache::ASP to Dancer2, and this app is already broken up into many separate modules.
As I've mentioned before on this list, I consider Dancer2 to be alpha quality as it is still in active development and is thus not stable (though it is getting better). I would absolutely not port anything important or complex to Dancer2. David -- David Golden <xdg@xdg.me> Take back your inbox! → http://www.bunchmail.com/ Twitter/IRC: @xdg