diff --git a/htmgem.php b/htmgem.php
index 31c4639..527cb4e 100644
--- a/htmgem.php
+++ b/htmgem.php
@@ -75,12 +75,13 @@ function addTextAttributes(&$line) {
* Escapes the HTML entities yet contained in the Gemtext, keeps multiple spaces.
* @param $text1, $text2 texts to process
*/
-function htmlEscape(&$text1, &$text2=null) {
- $text1 = htmlspecialchars($text1, ENT_HTML5, "UTF-8", false);
+function htmlEscape(&$text) {
+ $text = htmlspecialchars($text, ENT_HTML5, "UTF-8", false);
+}
+function keepSpaces(&$text) {
# https://en.wikipedia.org/wiki/Whitespace_character#Unicode
- $text1 = preg_replace("# #", "  ", $text1); #TODO: a way to not touch single spaces as " " > " "
- if (!is_null($text2)) return htmlEscape($text2);
+ $text = preg_replace("# #", "  ", $text);
}
$mode = null;
@@ -100,6 +101,7 @@ foreach ($fileLines as $line) {
$h_level = strlen($sharps[1]);
$text = $sharps[2];
htmlEscape($text);
+ keepSpaces($text);
switch ($h_level) {
case 1: print("
".$text."
\n"); break;
case 2: print("".$text."
\n"); break;
@@ -110,12 +112,14 @@ foreach ($fileLines as $line) {
$url_link = $linkParts[1];
$url_label = $linkParts[2];
if (empty($url_label)) $url_label = $url_link;
- htmlEscape($url_link, $url_label);
+ htmlEscape($url_link);
+ keepSpaces($url_link);
+ htmlEscape($url_label);
+ keepSpaces($url_label);
if ($mode_textAttributes) addTextAttributes($url_label);
print("".$url_label."
\n");
} elseif ('"""' == $line3) {
$mode_textAttributes = !$mode_textAttributes;
- $reDo = true;
} elseif ("```" == $line3) {
$mode="pre";
print("\n");
@@ -128,6 +132,7 @@ foreach ($fileLines as $line) {
print("
\n");
else
htmlEscape($quote);
+ keepSpaces($quote);
print("".$quote."
\n");
} elseif ("*" == $line1 && "**" != $line2) {
$mode = "ul";
@@ -135,6 +140,7 @@ foreach ($fileLines as $line) {
print("
\n");
} else {
htmlEscape($line);
+ keepSpaces($line);
if ($mode_textAttributes) addTextAttributes($line);
print("$line
\n");
}
@@ -155,6 +161,7 @@ foreach ($fileLines as $line) {
print("
\n");
else
htmlEscape($quote);
+ keepSpaces($quote);
print("".$quote."
\n");
} else {
print("\n");
@@ -169,6 +176,7 @@ foreach ($fileLines as $line) {
print("- \n");
else
htmlEscape($li);
+ keepSpaces($li);
print("
- ".$li."\n");
} else {
$mode = null;
@@ -176,7 +184,6 @@ foreach ($fileLines as $line) {
$reDo = true;
}
}
- $line = "";
}
}
diff --git a/tests/test.gmi b/tests/test.gmi
index bd86141..753c8c0 100644
--- a/tests/test.gmi
+++ b/tests/test.gmi
@@ -61,16 +61,16 @@ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praese
"""
```
-Preformatted text with **bold**, //italic//, and so on…
+Preformatted text with **bold**, //italic//, and so on… But still not HTML stuff.
```
# Quotations
-## Two consecutives lines of quotations
+## Two consecutives physical lines of quotations
> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-## Two separated lines of quotations
+## Two separated physical lines of quotations
> Quotations: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.