Fixes "mention" transformation and parsing quirks.
This commit is contained in:
parent
eeda927085
commit
b2c60f3995
1 changed files with 17 additions and 16 deletions
33
utils.nim
33
utils.nim
|
|
@ -132,15 +132,18 @@ proc replaceMentions(node: XmlNode): seq[XmlNode] =
|
||||||
var username = ""
|
var username = ""
|
||||||
i += parseWhile(node.text, username, UsernameIdent, i)
|
i += parseWhile(node.text, username, UsernameIdent, i)
|
||||||
|
|
||||||
let el = <>span(
|
if username.len == 0:
|
||||||
class="user-mention",
|
result.add(newText(current & "@"))
|
||||||
data-username=username,
|
else:
|
||||||
newText("@" & username)
|
let el = <>span(
|
||||||
)
|
class="user-mention",
|
||||||
|
data-username=username,
|
||||||
|
newText("@" & username)
|
||||||
|
)
|
||||||
|
|
||||||
result.add(newText(current))
|
result.add(newText(current))
|
||||||
current = ""
|
current = ""
|
||||||
result.add(el)
|
result.add(el)
|
||||||
|
|
||||||
result.add(newText(current))
|
result.add(newText(current))
|
||||||
|
|
||||||
|
|
@ -156,27 +159,25 @@ proc processMentions(node: XmlNode): XmlNode =
|
||||||
return node
|
return node
|
||||||
else:
|
else:
|
||||||
result = newElement(node.tag)
|
result = newElement(node.tag)
|
||||||
|
result.attrs = node.attrs
|
||||||
for n in items(node):
|
for n in items(node):
|
||||||
result.add(processMentions(n))
|
result.add(processMentions(n))
|
||||||
else:
|
else:
|
||||||
return node
|
return node
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
proc rstToHtml*(content: string): string =
|
proc rstToHtml*(content: string): string =
|
||||||
result = rstgen.rstToHtml(content, {roSupportMarkdown},
|
result = rstgen.rstToHtml(content, {roSupportMarkdown},
|
||||||
docConfig)
|
docConfig)
|
||||||
try:
|
try:
|
||||||
var node = parseHtml(newStringStream(result))
|
var node = parseHtml(newStringStream(result))
|
||||||
if node.kind == xnElement:
|
if node.kind == xnElement:
|
||||||
let quotedNode = processQuotes(node)
|
node = processQuotes(node)
|
||||||
let mentionedNode = processMentions(quotedNode)
|
|
||||||
|
|
||||||
result = ""
|
node = processMentions(node)
|
||||||
add(result, mentionedNode, indWidth=0, addNewLines=false)
|
result = ""
|
||||||
|
add(result, node, indWidth=0, addNewLines=false)
|
||||||
except:
|
except:
|
||||||
raise
|
echo("[WARNING] Could not parse rst html.")
|
||||||
# echo("[WARNING] Could not parse rst html.")
|
|
||||||
|
|
||||||
proc sendMail(config: Config, subject, message, recipient: string, from_addr = "forum@nim-lang.org", otherHeaders:seq[(string, string)] = @[]) {.async.} =
|
proc sendMail(config: Config, subject, message, recipient: string, from_addr = "forum@nim-lang.org", otherHeaders:seq[(string, string)] = @[]) {.async.} =
|
||||||
if config.smtpAddress.len == 0:
|
if config.smtpAddress.len == 0:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue