Skip to content

Commit

Permalink
less tap
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Sep 4, 2012
1 parent 0372fb5 commit db45266
Show file tree
Hide file tree
Showing 24 changed files with 119 additions and 59 deletions.
3 changes: 2 additions & 1 deletion lib/Mojo/Asset/Memory.pm
Expand Up @@ -45,7 +45,8 @@ sub get_chunk {

sub move_to {
my ($self, $to) = @_;
return $self->tap(sub { spurt $_->{content}, $to });
spurt $self->{content}, $to;
return $self;
}

sub size { length shift->{content} }
Expand Down
15 changes: 9 additions & 6 deletions lib/Mojo/ByteStream.pm
Expand Up @@ -20,8 +20,9 @@ my @UTILS = (
for my $name (@UTILS) {
my $sub = Mojo::Util->can($name);
*{__PACKAGE__ . "::$name"} = sub {
my ($self, @args) = @_;
return $self->tap(sub { $$_ = $sub->($$_, @args) });
my $self = shift;
$$self = $sub->($$self, @_);
return $self;
};
}
}
Expand All @@ -39,13 +40,15 @@ sub clone {
}

sub decode {
my ($self, $e) = @_;
return $self->tap(sub { $$_ = Mojo::Util::decode $e || 'UTF-8', $$_ });
my $self = shift;
$$self = Mojo::Util::decode shift || 'UTF-8', $$self;
return $self;
}

sub encode {
my ($self, $e) = @_;
return $self->tap(sub { $$_ = Mojo::Util::encode $e || 'UTF-8', $$_ });
my $self = shift;
$$self = Mojo::Util::encode shift || 'UTF-8', $$self;
return $self;
}

sub say {
Expand Down
9 changes: 7 additions & 2 deletions lib/Mojo/Content.pm
Expand Up @@ -95,7 +95,10 @@ sub parse {
$self->_body;

# No content
return $self->tap(sub { $_->{state} = 'finished' }) if $self->skip_body;
if ($self->skip_body) {
$self->{state} = 'finished';
return $self;
}

# Relaxed parsing
my $headers = $self->headers;
Expand Down Expand Up @@ -145,7 +148,9 @@ sub parse {
}

sub parse_body {
shift->tap(sub { $_->{state} = 'body' })->parse(@_);
my $self = shift;
$self->{state} = 'body';
return $self->parse(@_);
}

sub progress {
Expand Down
4 changes: 3 additions & 1 deletion lib/Mojo/Content/MultiPart.pm
Expand Up @@ -6,7 +6,9 @@ use Mojo::Util 'b64_encode';
has parts => sub { [] };

sub new {
shift->SUPER::new(@_)->tap(sub { $_->on(read => \&_read) });
my $self = shift->SUPER::new(@_);
$self->on(read => \&_read);
return $self;
}

sub body_contains {
Expand Down
4 changes: 3 additions & 1 deletion lib/Mojo/Content/Single.pm
Expand Up @@ -8,7 +8,9 @@ has asset => sub { Mojo::Asset::Memory->new(auto_upgrade => 1) };
has auto_upgrade => 1;

sub new {
shift->SUPER::new(@_)->tap(sub { $_->{read} = $_->on(read => \&_read) });
my $self = shift->SUPER::new(@_);
$self->{read} = $self->on(read => \&_read);
return $self;
}

sub body_contains { shift->asset->contains(shift) >= 0 }
Expand Down
12 changes: 7 additions & 5 deletions lib/Mojo/DOM.pm
Expand Up @@ -163,8 +163,9 @@ sub parent {
}

sub parse {
my ($self, $html) = @_;
return $self->tap(sub { $_->[0]->parse($html) });
my $self = shift;
$self->[0]->parse(@_);
return $self;
}

sub prepend { shift->_add(0, @_) }
Expand Down Expand Up @@ -337,9 +338,10 @@ sub _parse {
}

sub _parser {
my ($self, $method, @args) = @_;
return $self->[0]->$method unless @args;
return $self->tap(sub { $_->[0]->$method(@args) });
my ($self, $method) = (shift, shift);
return $self->[0]->$method unless @_;
$self->[0]->$method(@_);
return $self;
}

sub _text {
Expand Down
10 changes: 6 additions & 4 deletions lib/Mojo/EventEmitter.pm
Expand Up @@ -64,11 +64,13 @@ sub subscribers { shift->{events}{shift()} || [] }
sub unsubscribe {
my ($self, $name, $cb) = @_;

# All
return $self->tap(sub { delete $_->{events}{$name} }) unless $cb;

# One
$self->{events}{$name} = [grep { $cb ne $_ } @{$self->{events}{$name}}];
if ($cb) {
$self->{events}{$name} = [grep { $cb ne $_ } @{$self->{events}{$name}}];
}

# All
else { delete $self->{events}{$name} }

return $self;
}
Expand Down
3 changes: 2 additions & 1 deletion lib/Mojo/Exception.pm
Expand Up @@ -105,7 +105,8 @@ sub _detect {
for my $frame (reverse @trace) {
next unless -r $frame->[0];
open my $handle, '<:utf8', $frame->[0];
return $self->tap(sub { $_->_context($frame->[1], [[<$handle>]]) });
$self->_context($frame->[1], [[<$handle>]]);
return $self;
}

# More context
Expand Down
12 changes: 8 additions & 4 deletions lib/Mojo/Headers.pm
Expand Up @@ -98,8 +98,10 @@ sub parse {
while (defined(my $line = get_line \$self->{buffer})) {

# Check line size limit
return $self->tap(sub { $_->{limit} = $_->{state} = 'finished' })
if length $line > $max;
if (length $line > $max) {
$self->{limit} = $self->{state} = 'finished';
return $self;
}

# New header
if ($line =~ /^(\S+)\s*:\s*(.*)$/) { push @$headers, $1, $2 }
Expand All @@ -110,7 +112,8 @@ sub parse {
# Empty line
else {
$self->add(splice @$headers, 0, 2) while @$headers;
return $self->tap(sub { $_->{state} = 'finished' });
$self->{state} = 'finished';
return $self;
}
}

Expand All @@ -125,7 +128,8 @@ sub referrer { scalar shift->header(Referer => @_) }

sub remove {
my ($self, $name) = @_;
return $self->tap(sub { delete $_->{headers}{lc $name} });
delete $self->{headers}{lc $name};
return $self;
}

sub to_hash {
Expand Down
10 changes: 6 additions & 4 deletions lib/Mojo/Home.pm
Expand Up @@ -18,8 +18,10 @@ sub detect {
my $self = shift;

# Environment variable
return $self->tap(sub { $_->{parts} = [splitdir(abs_path $ENV{MOJO_HOME})] })
if $ENV{MOJO_HOME};
if ($ENV{MOJO_HOME}) {
$self->{parts} = [splitdir(abs_path $ENV{MOJO_HOME})];
return $self;
}

# Try to find home from lib directory
if (my $class = @_ ? shift : 'Mojo::HelloWorld') {
Expand Down Expand Up @@ -71,8 +73,8 @@ sub mojo_lib_dir { catdir(dirname(__FILE__), '..') }

sub parse {
my ($self, $path) = @_;
return $self unless defined $path;
return $self->tap(sub { $_->{parts} = [splitdir $path] });
$self->{parts} = [splitdir $path] if defined $path;
return $self;
}

sub rel_dir { catdir(@{shift->{parts} || []}, split '/', shift) }
Expand Down
4 changes: 3 additions & 1 deletion lib/Mojo/Log.pm
Expand Up @@ -24,7 +24,9 @@ has 'path';
my $LEVEL = {debug => 1, info => 2, warn => 3, error => 4, fatal => 5};

sub new {
shift->SUPER::new(@_)->tap(sub { $_->on(message => \&_message) });
my $self = shift->SUPER::new(@_);
$self->on(message => \&_message);
return $self;
}

sub debug { shift->log(debug => @_) }
Expand Down
10 changes: 7 additions & 3 deletions lib/Mojo/Message.pm
Expand Up @@ -103,10 +103,13 @@ sub dom {
}

sub error {
my ($self, @args) = @_;
my $self = shift;

# Set
return $self->tap(sub { $_->{error} = [@args] })->finish if @args;
if (@_) {
$self->{error} = [@_];
return $self->finish;
}

# Get
return unless my $err = $self->{error};
Expand All @@ -118,7 +121,8 @@ sub extract_start_line {
}

sub finish {
my $self = shift->tap(sub { $_->{state} = 'finished' });
my $self = shift;
$self->{state} = 'finished';
return $self->{finished}++ ? $self : $self->emit('finish');
}

Expand Down
9 changes: 6 additions & 3 deletions lib/Mojo/Server/Daemon.pm
Expand Up @@ -43,7 +43,8 @@ sub setuidgid {
sub start {
my $self = shift;
$self->_listen($_) for @{$self->listen};
return $self->tap(sub { $_->ioloop->max_connections($_->max_clients) });
$self->ioloop->max_connections($self->max_clients);
return $self;
}

sub _build_tx {
Expand All @@ -68,7 +69,8 @@ sub _build_tx {
$tx->on(
upgrade => sub {
my ($tx, $ws) = @_;
$self->{connections}{$id}{ws} = $ws->tap(sub { $_->server_handshake });
$ws->server_handshake;
$self->{connections}{$id}{ws} = $ws;
}
);
$tx->on(
Expand Down Expand Up @@ -213,7 +215,8 @@ sub _read {

sub _remove {
my ($self, $id) = @_;
$self->tap(sub { $_->ioloop->remove($id) })->_close($id);
$self->ioloop->remove($id);
$self->_close($id);
}

sub _user {
Expand Down
15 changes: 11 additions & 4 deletions lib/Mojo/Transaction.pm
Expand Up @@ -10,7 +10,9 @@ has req => sub { Mojo::Message::Request->new };
has res => sub { Mojo::Message::Response->new };

sub client_close {
shift->tap(sub { $_->res->finish })->server_close(@_);
my $self = shift;
$self->res->finish;
return $self->server_close(@_);
}

sub client_read { croak 'Method "client_read" not implemented by subclass' }
Expand Down Expand Up @@ -41,10 +43,13 @@ sub is_writing {
}

sub remote_address {
my ($self, $address) = @_;
my $self = shift;

# New address
return $self->tap(sub { $_->{remote_address} = $address }) if $address;
if (@_) {
$self->{remote_address} = shift;
return $self;
}

# Reverse proxy
if ($ENV{MOJO_REVERSE_PROXY}) {
Expand All @@ -64,7 +69,9 @@ sub resume {
}

sub server_close {
shift->tap(sub { $_->{state} = 'finished' })->emit('finish');
my $self = shift;
$self->{state} = 'finished';
return $self->emit('finish');
}

sub server_read { croak 'Method "server_read" not implemented by subclass' }
Expand Down
2 changes: 1 addition & 1 deletion lib/Mojo/Transaction/HTTP.pm
Expand Up @@ -19,7 +19,7 @@ sub client_read {
$self->{state} = 'finished' if $res->is_finished;

# Unexpected 100 Continue
$self->tap(sub { $_->{state} = $preserved })->res($res->new)
$self->res($res->new)->{state} = $preserved
if $self->{state} eq 'finished' && ($res->code // '') eq '100';

# Check for errors
Expand Down
8 changes: 6 additions & 2 deletions lib/Mojo/Transaction/WebSocket.pm
Expand Up @@ -107,7 +107,9 @@ sub client_write { shift->server_write(@_) }
sub connection { shift->handshake->connection }

sub finish {
shift->send([1, 0, 0, 0, CLOSE, ''])->tap(sub { $_->{finished} = 1 });
my $self = shift;
$self->send([1, 0, 0, 0, CLOSE, ''])->{finished} = 1;
return $self;
}

sub is_websocket {1}
Expand Down Expand Up @@ -184,7 +186,9 @@ sub req { shift->handshake->req }
sub res { shift->handshake->res }

sub resume {
shift->tap(sub { $_->handshake->resume });
my $self = shift;
$self->handshake->resume;
return $self;
}

sub send {
Expand Down
5 changes: 3 additions & 2 deletions lib/Mojo/Upload.pm
Expand Up @@ -10,8 +10,9 @@ has [qw(filename name)];
has headers => sub { Mojo::Headers->new };

sub move_to {
my ($self, $to) = @_;
return $self->tap(sub { $_->asset->move_to($to) });
my $self = shift;
$self->asset->move_to(@_);
return $self;
}

sub size { shift->asset->size }
Expand Down
3 changes: 2 additions & 1 deletion lib/Mojo/UserAgent.pm
Expand Up @@ -52,7 +52,8 @@ sub app {

# Default to singleton application
return $self->{app} || $singleton unless $app;
return $self->tap(sub { $_->{app} = $app });
$self->{app} = $app;
return $self;
}

sub app_url {
Expand Down
3 changes: 2 additions & 1 deletion lib/Mojolicious.pm
Expand Up @@ -152,7 +152,8 @@ sub handler {
# Process
unless (eval { $self->plugins->emit_chain(around_dispatch => $c) }) {
$self->log->fatal("Processing request failed: $@");
$tx->tap(sub { $_->res->code(500) })->resume;
$tx->res->code(500);
$tx->resume;
}

# Delayed
Expand Down
3 changes: 2 additions & 1 deletion lib/Mojolicious/Controller.pm
Expand Up @@ -269,7 +269,8 @@ sub rendered {
$app->plugins->emit_hook_reverse(after_dispatch => $self);
$app->sessions->store($self);
}
return $self->tap(sub { $_->tx->resume });
$self->tx->resume;
return $self;
}

sub req { shift->tx->req }
Expand Down
6 changes: 4 additions & 2 deletions lib/Mojolicious/Renderer.pm
Expand Up @@ -29,12 +29,14 @@ sub new {

sub add_handler {
my ($self, $name, $cb) = @_;
return $self->tap(sub { $_->handlers->{$name} = $cb });
$self->handlers->{$name} = $cb;
return $self;
}

sub add_helper {
my ($self, $name, $cb) = @_;
return $self->tap(sub { $_->helpers->{$name} = $cb });
$self->helpers->{$name} = $cb;
return $self;
}

sub get_data_template {
Expand Down

0 comments on commit db45266

Please sign in to comment.