From 5a302976aa5364da56824765d909c794fec33ad7 Mon Sep 17 00:00:00 2001 From: Yessiest <yessiest@memeware.net> Date: Fri, 7 Mar 2025 23:58:14 +0000 Subject: [PATCH] properly handling uri emplacement --- lib/mmmd/blankshell.rb | 4 ++-- lib/mmmd/renderers/html.rb | 1 + lib/mmmd/util.rb | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/mmmd/blankshell.rb b/lib/mmmd/blankshell.rb index 3628876..ec1c540 100644 --- a/lib/mmmd/blankshell.rb +++ b/lib/mmmd/blankshell.rb @@ -178,7 +178,7 @@ module PointBlank string = string.gsub(/\\([!"\#$%&'()*+,\-.\/:;<=>?@\[\\\]\^_`{|}~])/, '\\1') string = string.gsub("\n", " ") - URI.encode_uri_component( + MMMD::EntityUtils.encode_uri( MMMD::EntityUtils.decode_entities(string) ) end @@ -1210,7 +1210,7 @@ module PointBlank return '<', parts[1..] unless buffer.match?(/^<[\w\-_+]+:[^<>\s]+>$/) obj = build([buffer[1..-2]]) - obj.properties[:uri] = buffer[1..-2] + obj.properties[:uri] = MMMD::EntityUtils.encode_uri(buffer[1..-2]) [obj, parts[(cutoff + 1)..]] end end diff --git a/lib/mmmd/renderers/html.rb b/lib/mmmd/renderers/html.rb index 281f35e..fc768b5 100644 --- a/lib/mmmd/renderers/html.rb +++ b/lib/mmmd/renderers/html.rb @@ -315,6 +315,7 @@ module MMMD def read_title(element) title = element.properties[:title] + title = ::MMMD::EntityUtils.encode_entities(title) title.inspect end diff --git a/lib/mmmd/util.rb b/lib/mmmd/util.rb index f9efe09..483f362 100644 --- a/lib/mmmd/util.rb +++ b/lib/mmmd/util.rb @@ -48,5 +48,14 @@ module MMMD .gsub('"', """) .gsub("'", "'") end + + # Encode uri components that may break HTML syntax + # @param string [String] + # @return [String] + def self.encode_uri(string) + string.gsub('"', "%22") + .gsub("'", "%27") + .gsub(" ", "%20") + end end end