diff options
author | Jesse Luehrs <doy@tozt.net> | 2012-09-24 10:43:25 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2012-09-24 10:43:25 -0500 |
commit | 8f2f8e15b34067343931ffa9f47a4295baca8a6c (patch) | |
tree | c74a71e5c393ba3690f99a592bc8203632884ad6 | |
parent | 1aedc237afa0840ad9408d646359d197031d4dff (diff) | |
download | web-request-8f2f8e15b34067343931ffa9f47a4295baca8a6c.tar.gz web-request-8f2f8e15b34067343931ffa9f47a4295baca8a6c.zip |
don't make encoding a separate attribute in ::Request either
-rw-r--r-- | lib/Web/Request.pm | 54 |
1 files changed, 23 insertions, 31 deletions
diff --git a/lib/Web/Request.pm b/lib/Web/Request.pm index 6d3538b..acc5fff 100644 --- a/lib/Web/Request.pm +++ b/lib/Web/Request.pm @@ -376,31 +376,22 @@ has all_uploads => ( }, ); -has encoding => ( - accessor => '_encoding', - isa => 'Str', - predicate => 'has_encoding', - clearer => '_clear_encoding', - builder => 'default_encoding', - trigger => sub { - my $self = shift; - $self->_clear_encoded_data; - }, -); - has _encoding_obj => ( - is => 'ro', - isa => 'Object', # no idea what this should be - lazy => 1, - clearer => '_clear_encoding_obj', - default => sub { Encode::find_encoding(shift->encoding) }, + is => 'rw', + isa => 'Object', # no idea what this should be + clearer => '_clear_encoding_obj', + predicate => 'has_encoding', ); -sub BUILDARGS { - my $class = shift; - my $params = $class->SUPER::BUILDARGS(@_); - delete $params->{encoding} unless defined $params->{encoding}; - return $params; +sub BUILD { + my $self = shift; + my ($params) = @_; + if (defined $params->{encoding}) { + $self->encoding($params->{encoding}); + } + else { + $self->encoding($self->default_encoding); + } } sub new_from_env { @@ -480,18 +471,19 @@ sub decode { sub encoding { my $self = shift; - my ($encoding) = @_; - return $self->_encoding unless @_; - - if (defined($encoding)) { - return $self->_encoding($encoding); - } - else { - $self->_clear_encoding; + if (@_ > 0) { + my ($encoding) = @_; $self->_clear_encoded_data; - return; + if (defined($encoding)) { + $self->_encoding_obj(Encode::find_encoding($encoding)); + } + else { + $self->_clear_encoding_obj; + } } + + return $self->_encoding_obj ? $self->_encoding_obj->name : undef; } sub _clear_encoded_data { |