_html: Let's try Perl again
This commit is contained in:
parent
48466907fd
commit
cc5d770939
137
qsgen2
137
qsgen2
@ -797,106 +797,53 @@ function _cleanup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_html() {
|
_html() {
|
||||||
local content="${1}"
|
local content="$1"
|
||||||
local debug=false
|
local debug=false
|
||||||
|
|
||||||
if ${debug}; then _msg debug "_html: Converting QStags in content"; fi
|
if (${debug}) _msg debug "_html: Converting QStags in content"
|
||||||
|
|
||||||
# Define the Python code for parsing and replacing specific QStags
|
perl -pe '
|
||||||
local python_code=$(cat <<EOF
|
BEGIN {
|
||||||
import re
|
%qstags = (
|
||||||
# Define a function to replace QStags
|
"#BR" => "<br/>\n",
|
||||||
def replace_qstags(match):
|
"#BD" => "<b>", "#EBD" => "</b>\n",
|
||||||
qstag = match.group(0)
|
"#I" => "<i>", "#EI" => "</i>\n",
|
||||||
return qstag_dict.get(qstag, qstag) # Replace using the table or return unchanged
|
"#P" => "<p>", "#EP" => "</p>\n",
|
||||||
qstag_dict = {
|
"#Q" => "<blockquote>", "#EQ" => "</blockquote>\n",
|
||||||
"#H1": "<h1>",
|
"#C" => "<code>", "#EC" => "</code>\n",
|
||||||
"#EH1": "</h1>",
|
"#H1" => "<h1>", "#EH1" => "</h1>\n",
|
||||||
"#H2": "<h2>",
|
"#H2" => "<h2>", "#EH2" => "</h2>\n",
|
||||||
"#EH2": "</h2>",
|
"#H3" => "<h3>", "#EH3" => "</h3>\n",
|
||||||
"#P": "<p>",
|
"#H4" => "<h4>", "#EH4" => "</h4>\n",
|
||||||
"#EP": "</p>",
|
"#H5" => "<h5>", "#EH5" => "</h5>\n",
|
||||||
"#BR": "<br/>",
|
"#H6" => "<h6>", "#EH6" => "</h6>\n",
|
||||||
"#BD": "<b>",
|
"#STRONG" => "<strong>", "#ESTRONG" => "</strong>\n",
|
||||||
"#EBD": "</b>",
|
"#EM" => "<em>", "#EEM" => "</em>\n",
|
||||||
"#I": "<i>",
|
"#DV" => "<div>", "#EDV" => "</div>\n",
|
||||||
"#EI": "</i>",
|
"#SPN" => "<span>", "#ESPN" => "</span>\n",
|
||||||
"#STRONG": "<strong>",
|
"#UL" => "<ul>", "#EUL" => "</ul>\n",
|
||||||
"#ESTRONG": "</strong>",
|
"#OL" => "<ol>", "#EOL" => "</ol>\n",
|
||||||
"#EM": "<em>",
|
"#LI" => "<li>", "#ELI" => "</li>\n",
|
||||||
"#EM": "</em>",
|
"#U" => "<u>", "#EU" => "</u>\n",
|
||||||
"#DIV": "<div>",
|
"#TBL" => "<table>", "#ETBL" => "</table>\n",
|
||||||
"#EDIV": "</div>",
|
"#TR" => "<tr>", "#ETR" => "</tr>\n",
|
||||||
"#SPAN": "<span>",
|
"#TD" => "<td>", "#ETD" => "</td>\n",
|
||||||
"#ESPAN": "</span>",
|
"#TH" => "<th>", "#ETH" => "</th>\n",
|
||||||
"#UL": "<ul>",
|
"#ART" => "<article>", "#EART" => "</article>\n",
|
||||||
"#EUL": "</ul>",
|
"#SEC" => "<section>", "#ESEC" => "</section>\n",
|
||||||
"#OL": "<ol>",
|
"#ASIDE" => "<aside>", "#EASIDE" => "</aside>\n",
|
||||||
"#EOL": "</ol>",
|
"#NAV" => "<nav>", "#ENAV" => "</nav>\n",
|
||||||
"#LI": "<li>",
|
"#BTN" => "<button>", "#EBTN" => "</button>\n",
|
||||||
"#ELI": "</li>",
|
"#SEL" => "<select>", "#ESEL" => "</select>\n",
|
||||||
"#U": "<u>",
|
"#OPT" => "<option>", "#EOPT" => "</option>\n",
|
||||||
"#EU": "</u>",
|
"#LT" => "<", "#GT" => ">", "#NUM" => "#"
|
||||||
"#TABLE": "<table>",
|
);
|
||||||
"#ETABLE": "</table>",
|
|
||||||
"#TR": "<tr>",
|
|
||||||
"#ETR": "</tr>",
|
|
||||||
"#TD": "<td>",
|
|
||||||
"#ETD": "</td>",
|
|
||||||
"#TH": "<th>",
|
|
||||||
"#ETH": "</th>",
|
|
||||||
"#ART": "<article>",
|
|
||||||
"#EART": "</article>",
|
|
||||||
"#SEC": "<section>",
|
|
||||||
"#ESEC": "</section>",
|
|
||||||
"#ASIDE": "<aside>",
|
|
||||||
"#EASIDE": "</aside>",
|
|
||||||
"#NAV": "<nav>",
|
|
||||||
"#ENAV": "</nav>",
|
|
||||||
"#BTN": "<button>",
|
|
||||||
"#EBTN": "</button>",
|
|
||||||
"#SEL": "<select>",
|
|
||||||
"#ESEL": "</select>",
|
|
||||||
"#OPT": "<option>",
|
|
||||||
"#EOPT": "</option>",
|
|
||||||
"#LT": "<",
|
|
||||||
"#GT": ">",
|
|
||||||
"#NUM": "#",
|
|
||||||
"#H1": "<h1>",
|
|
||||||
"#H2": "<h2>",
|
|
||||||
"#H3": "<h3>",
|
|
||||||
"#H4": "<h4>",
|
|
||||||
"#H5": "<h5>",
|
|
||||||
"#H6": "<h6>",
|
|
||||||
"#EH1": "</h1>",
|
|
||||||
"#EH2": "</h2>",
|
|
||||||
"#EH3": "</h3>",
|
|
||||||
"#EH4": "</h4>",
|
|
||||||
"#EH5": "</h5>",
|
|
||||||
"#EH6": "</h6>",
|
|
||||||
}
|
}
|
||||||
|
while (my ($key, $value) = each %qstags) {
|
||||||
# Define the regular expression pattern for QStags, excluding specific ones
|
s/(?<!\S)\Q$key\E\b/$value/g;
|
||||||
pattern = r'(?<=\s)(#(?!link|image|ytvideo|updated|version)\w+)'
|
}
|
||||||
|
' <<< "$content"
|
||||||
# Replace QStags using the defined function
|
|
||||||
result = re.sub(pattern, replace_qstags, '''$content''', flags=re.MULTILINE)
|
|
||||||
|
|
||||||
# Handle QStags at the beginning of lines separately
|
|
||||||
result = re.sub(r'^(#(?!link|image|ytvideo|updated|version)\w+)', replace_qstags, result, flags=re.MULTILINE)
|
|
||||||
|
|
||||||
print(result)
|
|
||||||
EOF
|
|
||||||
)
|
|
||||||
|
|
||||||
# Execute the Python code and capture the output
|
|
||||||
local html_content=$(python -c "${python_code}")
|
|
||||||
|
|
||||||
echo "${html_content}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Time to test the first function
|
# Time to test the first function
|
||||||
#_msg std "Running function blogs"
|
#_msg std "Running function blogs"
|
||||||
|
Loading…
Reference in New Issue
Block a user