parsing link

This commit is contained in:
Simon Petit 2024-11-16 00:00:28 +01:00
parent 95fd30239e
commit 9c703e5afe

View File

@ -29,7 +29,7 @@ function last() {
return stack[stack_pointer] return stack[stack_pointer]
} }
function replaceEmAndStrong(line, result, start, end) { function replaceInline(line, result, start, end) {
# Replace occurrences of **...** with <strong>...</strong> # Replace occurrences of **...** with <strong>...</strong>
while (match(line, /\*\*([^*]+)\*\*/)) { while (match(line, /\*\*([^*]+)\*\*/)) {
start = RSTART start = RSTART
@ -45,6 +45,20 @@ function replaceEmAndStrong(line, result, start, end) {
# Build the result: before match, <em>, content, </em>, after match # Build the result: before match, <em>, content, </em>, after match
line = substr(line, 1, start-1) "<em>" substr(line, start+1, RLENGTH-2) "</em>" substr(line, end+1) line = substr(line, 1, start-1) "<em>" substr(line, start+1, RLENGTH-2) "</em>" substr(line, end+1)
} }
while (match(line, /\[([^\]]+)\]\([^\)]+\)/)) {
start = RSTART
end = RSTART + RLENGTH - 1
matched = substr($0, RSTART, RLENGTH)
if (match(matched, /\[([^\]]+)\]/)) {
matched_link = substr(matched, RSTART+1, RLENGTH-2)
}
if (match(matched, /\([^\)]+\)/)) {
matched_url = substr(matched, RSTART+1, RLENGTH-2)
}
# Build the result: before match, <a href="url">, content, </a>, after match
line = substr(line, 1, start-1) "<a href=\"" matched_url "\">" matched_link "</a>" substr(line, end+1)
}
return line return line
} }
@ -124,7 +138,7 @@ function closeOne() {
env = last() env = last()
if (env == "none") { if (env == "none") {
# If no block, print a paragraph # If no block, print a paragraph
print "<p>" replaceEmAndStrong($0) "</p>" print "<p>" replaceInline($0) "</p>"
} else if (env == "blockquote") { } else if (env == "blockquote") {
print $0 print $0
} }
@ -147,4 +161,4 @@ END {
print "</" env ">" print "</" env ">"
env = last() env = last()
} }
} }