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().
This commit is contained in:
parent
e64855b424
commit
e942b41917
1 changed files with 45 additions and 33 deletions
78
lib/util.gd
78
lib/util.gd
|
|
@ -2,36 +2,47 @@ extends Object
|
||||||
class_name Util
|
class_name Util
|
||||||
|
|
||||||
#region HTML RegEx and UnEscape HTML
|
#region HTML RegEx and UnEscape HTML
|
||||||
static var _img_re: RegEx = RegEx.create_from_string(r'<img[^>]*src=["\']([^"\']+)["\'][^>]*/?>')
|
static var _img_re: RegEx:
|
||||||
static var _h2_open_re: RegEx = RegEx.create_from_string(r'<h2[^>]*>')
|
get():
|
||||||
static var _p_open_re: RegEx = RegEx.create_from_string(r'<p[^>]*>')
|
if not _img_re: _img_re = RegEx.create_from_string(r'<img[^>]*src=["\']([^"\']+)["\'][^>]*/?>', true)
|
||||||
static var _ul_re: RegEx = RegEx.create_from_string(r'</?ul[^>]*>')
|
return _img_re
|
||||||
static var _div_re: RegEx = RegEx.create_from_string(r'</?div[^>]*>')
|
|
||||||
static var _any_tag_re: RegEx = RegEx.create_from_string(r'<[^>]*>')
|
static var _h2_open_re: RegEx:
|
||||||
static var _html_replacements: Dictionary[String, String] = {
|
get():
|
||||||
"<": "<",
|
if not _h2_open_re: _h2_open_re = RegEx.create_from_string(r'<h2[^>]*>', 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'<p[^>]*>', true)
|
||||||
"/": "/",
|
return _p_open_re
|
||||||
"`": "`",
|
|
||||||
" ": " ",
|
static var _ul_re: RegEx:
|
||||||
"©": "©",
|
get():
|
||||||
"®": "®",
|
if not _ul_re: _ul_re = RegEx.create_from_string(r'</?ul[^>]*>', true)
|
||||||
"€": "€",
|
return _ul_re
|
||||||
"£": "£",
|
|
||||||
"¥": "¥",
|
static var _div_re: RegEx:
|
||||||
"–": "–",
|
get():
|
||||||
"—": "—",
|
if not _div_re: _div_re = RegEx.create_from_string(r'</?div[^>]*>', 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
|
#endregion
|
||||||
|
|
||||||
static func convert_html_to_bbcode(html: String) -> String:
|
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:
|
static func html_unescape(text: String) -> String:
|
||||||
for key in _html_replacements.keys():
|
var new_text: String = String(text)
|
||||||
text = text.replace(key, _html_replacements[key])
|
for key: String in _html_replacements.keys():
|
||||||
return text
|
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:
|
static func resize_img_to_max_dim(img: Image, max_dim: int) -> Image:
|
||||||
var width: int
|
var width: int
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue