# Nick's web site: xhtml_compat filter. Perform fixups to improve # XHTML compatibility with various user agents. # # 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 # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . class XhtmlCompatFilter < Nanoc::Filter identifier :xhtml_compat def run(content, params = {}) # Old versions of Netscape get confused by
but have no problem # with
, 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!("]]>", '\&*/') # Delete any zero-width word joiners added for XSLT processing. return text.delete "\u2060" end end