parent
70c42dd05a
commit
9917a69dc5
|
@ -1,4 +1,4 @@
|
|||
import strutils, strformat, htmlgen, xmltree, times
|
||||
import strutils, strformat, sequtils, htmlgen, xmltree, times, uri
|
||||
import regex
|
||||
|
||||
import types, utils
|
||||
|
@ -11,6 +11,7 @@ const
|
|||
usernameRegex = re"(^|[^A-z0-9_?])@([A-z0-9_]+)"
|
||||
picRegex = re"pic.twitter.com/[^ ]+"
|
||||
ellipsisRegex = re" ?…"
|
||||
hashtagRegex = re"([^\S])?([#$][A-z0-9]+)"
|
||||
ytRegex = re"(www.|m.)?youtu(be.com|.be)"
|
||||
twRegex = re"(www.|mobile.)?twitter.com"
|
||||
nbsp = $Rune(0x000A0)
|
||||
|
@ -40,6 +41,15 @@ proc reEmailToLink*(m: RegexMatch; s: string): string =
|
|||
let url = s[m.group(0)[0]]
|
||||
toLink("mailto://" & url, url)
|
||||
|
||||
proc reHashtagToLink*(m: RegexMatch; s: string): string =
|
||||
result = if m.group(0).len > 0: s[m.group(0)[0]] else: ""
|
||||
let hash = s[m.group(1)[0]]
|
||||
let link = toLink("/search?text=" & encodeUrl(hash), hash)
|
||||
if hash.any(isAlphaAscii):
|
||||
result &= link
|
||||
else:
|
||||
result &= hash
|
||||
|
||||
proc reUsernameToLink*(m: RegexMatch; s: string): string =
|
||||
var username = ""
|
||||
var pretext = ""
|
||||
|
@ -69,6 +79,7 @@ proc linkifyText*(text: string; prefs: Prefs; rss=false): string =
|
|||
result = xmltree.escape(stripText(text))
|
||||
result = result.replace(ellipsisRegex, "")
|
||||
result = result.replace(emailRegex, reEmailToLink)
|
||||
result = result.replace(hashtagRegex, reHashtagToLink)
|
||||
if rss:
|
||||
result = result.replace(urlRegex, reUrlToLink)
|
||||
result = result.replace(usernameRegex, reUsernameToFullLink)
|
||||
|
|
Loading…
Reference in New Issue