git.shiar.nl
/
perl
/
plp
/
.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add charset to default content-type header if STDOUT is in UTF-8
[perl/plp/.git]
/
lib
/
PLP
/
Tie
/
Headers.pm
diff --git
a/lib/PLP/Tie/Headers.pm
b/lib/PLP/Tie/Headers.pm
index ef124912f886e4681e1873a1e09fdb5ab51f342e..8e023fb4fab45ce4cefb8ec8eee5dfac21b5e0ad 100644
(file)
--- a/
lib/PLP/Tie/Headers.pm
+++ b/
lib/PLP/Tie/Headers.pm
@@
-4,6
+4,8
@@
use strict;
use warnings;
use Carp;
use warnings;
use Carp;
+our $VERSION = '1.00';
+
=head1 PLP::Tie::Headers
Makes a hash case insensitive, and sets some headers. <_> equals <->, so C<$foo{CONTENT_TYPE}> is
=head1 PLP::Tie::Headers
Makes a hash case insensitive, and sets some headers. <_> equals <->, so C<$foo{CONTENT_TYPE}> is
@@
-24,12
+26,18
@@
sub TIEHASH {
{
'content-type' => 'Content-Type',
'x-plp-version' => 'X-PLP-Version',
{
'content-type' => 'Content-Type',
'x-plp-version' => 'X-PLP-Version',
- }
+ },
+ 1 # = content-type untouched
], $_[0];
}
sub FETCH {
my ($self, $key) = @_;
], $_[0];
}
sub FETCH {
my ($self, $key) = @_;
+ if ($self->[2] and defined $self->[0]->{'Content-Type'}) {
+ my $utf8 = eval { grep {$_ eq "utf8"} PerlIO::get_layers(*STDOUT) };
+ $self->[0]->{'Content-Type'} .= '; charset=utf-8' if $utf8;
+ $self->[2] = 0;
+ }
$key =~ tr/_/-/;
return $self->[0]->{ $self->[1]->{lc $key} };
}
$key =~ tr/_/-/;
return $self->[0]->{ $self->[1]->{lc $key} };
}
@@
-48,6
+56,7
@@
sub STORE {
} else {
$self->[1]->{lc $key} = $key;
}
} else {
$self->[1]->{lc $key} = $key;
}
+ $self->[2] = 0 if $key eq 'Content-Type';
return ($self->[0]->{$key} = $value);
}
return ($self->[0]->{$key} = $value);
}