summaryrefslogtreecommitdiffstats
path: root/lib/OXx/Encoding.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/OXx/Encoding.pm')
-rw-r--r--lib/OXx/Encoding.pm40
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/OXx/Encoding.pm b/lib/OXx/Encoding.pm
index e69de29..729c5a3 100644
--- a/lib/OXx/Encoding.pm
+++ b/lib/OXx/Encoding.pm
@@ -0,0 +1,40 @@
+package OXx::Encoding;
+use MooseX::Role::Parameterized;
+use namespace::autoclean;
+
+use OXx::Encoding::Types;
+
+parameter encoding => (
+ isa => 'Encoding',
+ required => 1,
+);
+
+parameter html_encoding => (
+ isa => 'Str',
+ lazy => 1,
+ default => sub { shift->encoding },
+);
+
+role {
+ my $p = shift;
+
+ around request_class => sub {
+ my $orig = shift;
+ my $self = shift;
+
+ my $super = $self->$orig(@_);
+
+ return Moose::Meta::Class->create_anon_class(
+ superclasses => [$super],
+ roles => [
+ 'OXx::Encoding::Role::Request' => {
+ encoding => $p->encoding,
+ html_encoding => $p->html_encoding,
+ },
+ ],
+ cache => 1,
+ )->name;
+ };
+}
+
+1;