The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Dancer::Serializer::Abstract;

use strict;
use warnings;
use Carp;
use base 'Dancer::Engine';

sub serialize   { confess 'must be implemented' }
sub deserialize { confess 'must be implemented' }

# must be implemented to delcare if the serializer can be used or not
# most of the time, just use :
# Dancer::ModuleLoader->load('Your::Serializer::Deps');
sub loaded {0}

# should be implemented, fallback to text/plain if not
sub content_type {'text/plain'}

# most serializer don't have to overload this one
sub support_content_type {
    my ($self, $ct) = @_;
    return unless $ct;
    my @toks = split ';', $ct;
    $ct = lc($toks[0]);
    return $ct eq $self->content_type;
}

1;