Fixes "mention" transformation and parsing quirks.

This commit is contained in:
Dominik Picheta 2018-05-14 18:28:55 +01:00
commit b2c60f3995

View file

@ -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: