From 7def81cf4266a66ed513807197708eacf1c7a2d2 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Thu, 30 Sep 2021 17:34:25 -0400
Subject: [PATCH] wikiheaders.pl: Don't treat chars in `code` blocks as
markdown.
Otherwise a formula like `x = y * 2;` would treat that '*' as the start of
an italicized section when converting to MediaWiki format, and match any
other '*' in the content as the end marker.
---
build-scripts/wikiheaders.pl | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/build-scripts/wikiheaders.pl b/build-scripts/wikiheaders.pl
index 2dc02f08b3..602b10939f 100755
--- a/build-scripts/wikiheaders.pl
+++ b/build-scripts/wikiheaders.pl
@@ -136,14 +136,21 @@ sub wikify_chunk {
#print("\n\nWIKIFY CHUNK:\n\n$str\n\n\n");
if ($wikitype eq 'mediawiki') {
+ # convert `code` things first, so they aren't mistaken for other markdown items.
+ my $codedstr = '';
+ while ($str =~ s/\A(.*?)\`(.*?)\`//ms) {
+ my $codeblock = $2;
+ $codedstr .= wikify_chunk($wikitype, $1, undef, undef);
+ # Convert obvious SDL things to wikilinks, even inside `code` blocks.
+ $codeblock =~ s/\b(SDL_[a-zA-Z0-9_]+)/[[$1]]/gms;
+ $codedstr .= "<code>$codeblock</code>";
+ }
+
# Convert obvious SDL things to wikilinks.
$str =~ s/\b(SDL_[a-zA-Z0-9_]+)/[[$1]]/gms;
# Make some Markdown things into MediaWiki...
- # <code></code> is also popular. :/
- $str =~ s/\`(.*?)\`/<code>$1<\/code>/gms;
-
# bold+italic
$str =~ s/\*\*\*(.*?)\*\*\*/'''''$1'''''/gms;
@@ -156,6 +163,8 @@ sub wikify_chunk {
# bullets
$str =~ s/^\- /* /gm;
+ $str = $codedstr . $str;
+
if (defined $code) {
$str .= "<syntaxhighlight lang='$codelang'>$code<\/syntaxhighlight>";
}