From: "mdalessio (Mike Dalessio) via ruby-core" Date: 2026-08-05T13:40:55+00:00 Subject: [ruby-core:126271] [Ruby Feature#22229] Allow GCI.escapeHTML to take a custom escape table Issue #22229 has been updated by mdalessio (Mike Dalessio). I would also like to have this feature. Loofah (used by Rails's sanitization stack) currently has this code to re-implement `escapeHTML` with a custom table: https://github.com/flavorjones/loofah/blob/main/lib/loofah/html5/scrub.rb#L275-L299, as does the Rouge gem (and probably others). ---------------------------------------- Feature #22229: Allow GCI.escapeHTML to take a custom escape table https://bugs.ruby-lang.org/issues/22229#change-118360 * Author: byroot (Jean Boussier) * Status: Open ---------------------------------------- ### Use case `CGI.escapeHTML` has a fixed escape table: ```c HTML_ESCAPE('\'', "'"), HTML_ESCAPE('&', "&"), HTML_ESCAPE('"', """), HTML_ESCAPE('<', "<"), HTML_ESCAPE('>', ">"), ``` But in some context you may want to escape more or less characters than that, or escape them differently. One example of this is Active Support JSON serialization, which by defaults escape `<>&` as `\u003e\u003c\u0026`, to ensure that the generated JSON can safely be interpolated inside a `", "<" => "<", ">" => ">") ``` - The escape table keys must be single characters (currently ASCII only, but could be muti-byte characters if deemed necessary). ### Implementation Pull Request: https://github.com/ruby/cgi/pull/55 (NB: it's at proof of concept / demo stage, if the feature is accepted I can polish it). -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/