Add support for ' characters.
David Dorward [Mon, 13 Aug 2012 21:08:41 +0000 (22:08 +0100)]
Escape ' to '
Test support for the five characters that are escaped
Document which characters are escaped

Changes
lib/HTML/String.pm
lib/HTML/String/Value.pm
t/simple.t

diff --git a/Changes b/Changes
index 98c742f..8660178 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,2 +1,4 @@
+  - Support for single quotes (' to ')
+
 1.000000 - 2012-08-13
   - Initial release
index c040fe1..a16a0dd 100644 (file)
@@ -118,6 +118,19 @@ L<HTML::String::Overload> for more details.
 
 For integration with L<Template Toolkit|Template>, see L<HTML::String::TT>.
 
+=head1 CHARACTERS THAT WILL BE ESCAPED
+
+HTML::String concerns itself with characters that have special meaning in
+HTML. Those which begin and end tags (< and >), those which begin an entity
+(&) and those which delimit attribute values (" and '). It outputs them
+in a fashion compatible with HTML 4 and newer and all versions of XHTML
+(assuming support for named entities in the parser). There are no known
+incompatibilities with browsers. 
+
+HTML::String does not concern itself with other characters, it is assumed
+that HTML documents will be marked with a suitable character encoding via
+a Content-Type HTTP header and/or a meta element.
+
 =head1 EXPORTS
 
 =head2 html
@@ -144,7 +157,7 @@ mst - Matt S. Trout (cpan:MSTROUT) <mst@shadowcat.co.uk>
 
 =head1 CONTRIBUTORS
 
-None yet - maybe this software is perfect! (ahahahahahahahahaha)
+dorward - David Dorward (cpan:DORWARD) <david@dorward.me.uk>
 
 =head1 COPYRIGHT
 
index 6380081..38699ea 100644 (file)
@@ -56,6 +56,7 @@ sub _hsv_escaped_string {
                 s/</&lt;/g;
                 s/>/&gt;/g;
                 s/"/&quot;/g;
+                s/'/&#39;/g;
               } $_->[0]
             : $_->[0]
     ), @{$self->{parts}};
index 0d19327..0b5e2c3 100644 (file)
@@ -47,4 +47,12 @@ is(html('MyPkg')->new, 'foo');
 
 is(html('MyPkg')->load, 'bar');
 
+# Test that all characters that should be escaped are escaped
+
+my $raw_characters = q{<>&"'};
+my $expected_output = q{<tag>&lt;&gt;&amp;&quot;&#39;</tag>};
+my $html = html('<tag>').$raw_characters.html('</tag>');
+is($html, $expected_output);
+
+
 done_testing;