From e942b419172d11460507aeae49f55b95c8de4ec9 Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Mon, 9 Mar 2026 18:41:40 -0500 Subject: [PATCH] Updated Util Static vars were not being properly created, so instead use a C# function of '??=', which translates to defining a getter on the property, checking if it exists, if not, create it and assign it, then return the value. Made a duplicate of the string, and did replacements on the new string, before returning it in html_unescape(). --- lib/util.gd | 78 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/lib/util.gd b/lib/util.gd index 335e9409..1841f002 100644 --- a/lib/util.gd +++ b/lib/util.gd @@ -2,36 +2,47 @@ extends Object class_name Util #region HTML RegEx and UnEscape HTML -static var _img_re: RegEx = RegEx.create_from_string(r']*src=["\']([^"\']+)["\'][^>]*/?>') -static var _h2_open_re: RegEx = RegEx.create_from_string(r']*>') -static var _p_open_re: RegEx = RegEx.create_from_string(r']*>') -static var _ul_re: RegEx = RegEx.create_from_string(r']*>') -static var _div_re: RegEx = RegEx.create_from_string(r']*>') -static var _any_tag_re: RegEx = RegEx.create_from_string(r'<[^>]*>') -static var _html_replacements: Dictionary[String, String] = { - "<": "<", - ">": ">", - "&": "&", - """: "\"", - "'": "'", - "'": "'", - "/": "/", - "`": "`", - " ": " ", - "©": "©", - "®": "®", - "€": "€", - "£": "£", - "¥": "¥", - "–": "–", - "—": "—", - "‘": "‘", - "’": "’", - "“": "“", - "”": "”", - "…": "…", - "•": "•" - } +static var _img_re: RegEx: + get(): + if not _img_re: _img_re = RegEx.create_from_string(r']*src=["\']([^"\']+)["\'][^>]*/?>', true) + return _img_re + +static var _h2_open_re: RegEx: + get(): + if not _h2_open_re: _h2_open_re = RegEx.create_from_string(r']*>', true) + return _h2_open_re + +static var _p_open_re: RegEx: + get(): + if not _p_open_re: _p_open_re = RegEx.create_from_string(r']*>', true) + return _p_open_re + +static var _ul_re: RegEx: + get(): + if not _ul_re: _ul_re = RegEx.create_from_string(r']*>', true) + return _ul_re + +static var _div_re: RegEx: + get(): + if not _div_re: _div_re = RegEx.create_from_string(r']*>', true) + return _div_re + +static var _any_tag_re: RegEx: + get(): + if not _any_tag_re: _any_tag_re = RegEx.create_from_string(r'<[^>]*>', true) + return _any_tag_re + +static var _html_replacements: Dictionary[String, String]: + get(): + if not _html_replacements: _html_replacements = { + "<": "<", ">": ">", "&": "&", """: "\"", + "'": "'", "'": "'", "/": "/", "`": "`", + " ": " ", "©": "©", "®": "®", "€": "€", + "£": "£", "¥": "¥", "–": "–", "—": "—", + "‘": "‘", "’": "’", "“": "“", "”": "”", + "…": "…", "•": "•" + } + return _html_replacements #endregion static func convert_html_to_bbcode(html: String) -> String: @@ -70,9 +81,10 @@ static func convert_html_to_bbcode(html: String) -> String: static func html_unescape(text: String) -> String: - for key in _html_replacements.keys(): - text = text.replace(key, _html_replacements[key]) - return text + var new_text: String = String(text) + for key: String in _html_replacements.keys(): + new_text = new_text.replace(key, _html_replacements[key]) + return new_text static func resize_img_to_max_dim(img: Image, max_dim: int) -> Image: var width: int