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 = ""
|
||||
i += parseWhile(node.text, username, UsernameIdent, i)
|
||||
|
||||
let el = <>span(
|
||||
class="user-mention",
|
||||
data-username=username,
|
||||
newText("@" & username)
|
||||
)
|
||||
if username.len == 0:
|
||||
result.add(newText(current & "@"))
|
||||
else:
|
||||
let el = <>span(
|
||||
class="user-mention",
|
||||
data-username=username,
|
||||
newText("@" & username)
|
||||
)
|
||||
|
||||
result.add(newText(current))
|
||||
current = ""
|
||||
result.add(el)
|
||||
result.add(newText(current))
|
||||
current = ""
|
||||
result.add(el)
|
||||
|
||||
result.add(newText(current))
|
||||
|
||||
|
|
@ -156,27 +159,25 @@ proc processMentions(node: XmlNode): XmlNode =
|
|||
return node
|
||||
else:
|
||||
result = newElement(node.tag)
|
||||
result.attrs = node.attrs
|
||||
for n in items(node):
|
||||
result.add(processMentions(n))
|
||||
else:
|
||||
return node
|
||||
|
||||
|
||||
|
||||
proc rstToHtml*(content: string): string =
|
||||
result = rstgen.rstToHtml(content, {roSupportMarkdown},
|
||||
docConfig)
|
||||
try:
|
||||
var node = parseHtml(newStringStream(result))
|
||||
if node.kind == xnElement:
|
||||
let quotedNode = processQuotes(node)
|
||||
let mentionedNode = processMentions(quotedNode)
|
||||
node = processQuotes(node)
|
||||
|
||||
result = ""
|
||||
add(result, mentionedNode, indWidth=0, addNewLines=false)
|
||||
node = processMentions(node)
|
||||
result = ""
|
||||
add(result, node, indWidth=0, addNewLines=false)
|
||||
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.} =
|
||||
if config.smtpAddress.len == 0:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue