diff --git a/lib/calcms/HTML/Template/Compiled/Plugin/Hyphen.pm b/lib/calcms/HTML/Template/Compiled/Plugin/Hyphen.pm
new file mode 100644
index 0000000..8aed12a
--- /dev/null
+++ b/lib/calcms/HTML/Template/Compiled/Plugin/Hyphen.pm
@@ -0,0 +1,26 @@
+package HTML::Template::Compiled::Plugin::Hyphen;
+use strict;
+use warnings;
+
+HTML::Template::Compiled->register(__PACKAGE__);
+
+sub escape_whitespace {
+ my ($s) = @_;
+ $s =~ s/\s/-/g;
+ $s =~ s/\-+/-/g;
+ $s =~ s/\-$//g;
+ $s =~ s/^\-//g;
+ return $s;
+}
+
+sub register {
+ my ($class) = @_;
+ my %plugs = (
+ escape => {
+ HYPHEN => \&escape_whitespace
+ },
+ );
+ return \%plugs;
+}
+
+return 1;
diff --git a/lib/calcms/template.pm b/lib/calcms/template.pm
index 6d360f7..74e797e 100644
--- a/lib/calcms/template.pm
+++ b/lib/calcms/template.pm
@@ -8,6 +8,7 @@ use feature 'state';
use Data::Dumper;
use HTML::Template::Compiled();
use HTML::Template::Compiled::Plugin::XMLEscape();
+use HTML::Template::Compiled::Plugin::Hyphen();
#use HTML::Template::JIT();
use JSON();
@@ -119,6 +120,7 @@ sub initTemplate($) {
default_escape => $default_escape,
cache => 1,
utf8 => 1,
+ plugin => [qw(HTML::Template::Compiled::Plugin::Hyphen)]
);
}