Skip to content

Instantly share code, notes, and snippets.

@miyagawa
Last active October 26, 2015 17:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save miyagawa/b412e7bef8ffe882a948 to your computer and use it in GitHub Desktop.
Save miyagawa/b412e7bef8ffe882a948 to your computer and use it in GitHub Desktop.
package Plack::Builder;
sub new { ... }
sub enable {
my $self = shift;
...
}
sub enable_if {
my $self = shift;
...
}
sub mount {
my $self = shift;
...
}
package Plack::Builder::DSL;
our @EXPORT = qw( builder enable enable_if mount );
my $builder = Plack::Builder::Unbound->new;
sub builder {
my $block = shift;
(my $old, $builder) = ($builder, Plack::Builder->new);
my $app = $block->();
my $res = $builder->to_app($app);
$builder = $old;
$res;
}
sub enable { $builder->enable(@_) }
sub enable_if { $builder->enable_if(@_) }
sub mount { $builder->mount(@_) }
package Plack::Builder::Unbound;
sub new { ... }
sub enable { croak "Can't call enable() outside builder {} block" }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment