package Template::Plugin::JavaScriptLiteral; use strict; use warnings; use Template::Plugin::Filter qw( ); our @ISA = 'Template::Plugin::Filter'; my %translations = ( "\r" => "\\r", "\n" => "\\n", "'" => "\\'", "\\" => "\\\\", ); my $meta_chars_class = join '', map quotemeta, keys %translations; my $meta_chars_re = qr/([$meta_chars_class])/; sub init { my $self = shift; $self->install_filter('jslit'); return $self; } sub filter { my ($self, $text) = @_; $text =~ s/$meta_chars_re/$translations{$1}/g; return "'$text'"; } 1;