]> git.draconx.ca Git - homepage.git/blobdiff - lib/xhtml-compat.rb
Merge the remove_wj filter into xhtml_compat.
[homepage.git] / lib / xhtml-compat.rb
index 25fe2e2a6e3a88f5cb92efac5555d084309ab1ba..1c738d9e7447c374bce3c15d442ac9c801f8e14f 100644 (file)
@@ -1,7 +1,7 @@
-# Nick's web site: xhtml_compat filter.  Add whitespace before the end
-# of empty element tags to improve compatibility with old browsers.
+# Nick's web site: xhtml_compat filter.  Perform fixups to improve
+# XHTML compatibility with various user agents.
 #
-# Copyright © 2020 Nick Bowler
+# Copyright © 2019-2021 Nick Bowler
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -20,9 +20,17 @@ class XhtmlCompatFilter < Nanoc::Filter
     identifier :xhtml_compat
 
     def run(content, params = {})
+        # Old versions of Netscape get confused by <hr/> but have no problem
+        # with <hr />, so avoid that by adding spaces to such elements.
         text = content.gsub(/([^[:space:]])\/>/m, '\1 />');
+
+        # Even older versions of Netscape interpret any script as Javascript,
+        # which causes major problems with the CDATA hack; solve that by making
+        # the whole thing look like a Javascript comment.
         text.gsub!("<![CDATA[]]x><!--]]>", '/*\&')
         text.gsub!("<![CDATA[-->]]>", '\&*/')
-        return text
+
+        # Delete any zero-width word joiners added for XSLT processing.
+        return text.delete "\u2060"
     end
 end