Avoid a few allocations for mentions.
Add six new parser test cases. Stop treating lone double forward slashes as URLs. Fixes #52
This commit is contained in:
parent
462464e47e
commit
13fa2326bd
@ -16,6 +16,7 @@ import (
|
||||
// TODO: Somehow localise these?
|
||||
var SpaceGap = []byte(" ")
|
||||
var httpProtBytes = []byte("http://")
|
||||
var DoubleForwardSlash = []byte("//")
|
||||
var InvalidURL = []byte("<red>[Invalid URL]</red>")
|
||||
var InvalidTopic = []byte("<red>[Invalid Topic]</red>")
|
||||
var InvalidProfile = []byte("<red>[Invalid Profile]</red>")
|
||||
@ -531,7 +532,8 @@ func ParseMessage(msg string, sectionID int, sectionType string /*, user User*/)
|
||||
sb.Write(bytesSinglequote)
|
||||
sb.Write(urlMention)
|
||||
sb.Write(bytesGreaterthan)
|
||||
sb.WriteString("@" + menUser.Name)
|
||||
sb.WriteByte('@')
|
||||
sb.WriteString(menUser.Name)
|
||||
sb.Write(URLClose)
|
||||
lastItem = i
|
||||
i--
|
||||
@ -560,11 +562,22 @@ func ParseMessage(msg string, sectionID int, sectionType string /*, user User*/)
|
||||
urlLen, ok := PartialURLStringLen(msg[i:])
|
||||
if len(msg) < i+urlLen {
|
||||
//fmt.Println("o1")
|
||||
sb.Write(InvalidURL)
|
||||
if urlLen == 2 {
|
||||
sb.Write(DoubleForwardSlash)
|
||||
} else {
|
||||
sb.Write(InvalidURL)
|
||||
}
|
||||
i += len(msg) - 1
|
||||
lastItem = i
|
||||
break
|
||||
}
|
||||
if urlLen == 2 {
|
||||
sb.Write(DoubleForwardSlash)
|
||||
i += urlLen
|
||||
lastItem = i
|
||||
i--
|
||||
continue
|
||||
}
|
||||
//fmt.Println("msg[i:i+urlLen]:", "'"+msg[i:i+urlLen]+"'")
|
||||
if !ok {
|
||||
//fmt.Printf("o2: i = %d; i+urlLen = %d\n",i,i+urlLen)
|
||||
|
@ -145,22 +145,23 @@ func TestParser(t *testing.T) {
|
||||
msgList.Add("", "")
|
||||
msgList.Add("haha", "haha")
|
||||
msgList.Add("<b>t</b>", "<b>t</b>")
|
||||
msgList.Add("//", "<red>[Invalid URL]</red>")
|
||||
msgList.Add("//", "//")
|
||||
msgList.Add("http://", "<red>[Invalid URL]</red>")
|
||||
msgList.Add("https://", "<red>[Invalid URL]</red>")
|
||||
msgList.Add("ftp://", "<red>[Invalid URL]</red>")
|
||||
msgList.Add("git://", "<red>[Invalid URL]</red>")
|
||||
msgList.Add("ssh://", "ssh://")
|
||||
|
||||
msgList.Add("// ", "<red>[Invalid URL]</red> ")
|
||||
msgList.Add("// //", "<red>[Invalid URL]</red> <red>[Invalid URL]</red>")
|
||||
msgList.Add("// ", "// ")
|
||||
msgList.Add("// //", "// //")
|
||||
msgList.Add("// // //", "// // //")
|
||||
msgList.Add("http:// ", "<red>[Invalid URL]</red> ")
|
||||
msgList.Add("https:// ", "<red>[Invalid URL]</red> ")
|
||||
msgList.Add("ftp:// ", "<red>[Invalid URL]</red> ")
|
||||
msgList.Add("git:// ", "<red>[Invalid URL]</red> ")
|
||||
msgList.Add("ssh:// ", "ssh:// ")
|
||||
|
||||
msgList.Add("// t", "<red>[Invalid URL]</red> t")
|
||||
msgList.Add("// t", "// t")
|
||||
msgList.Add("http:// t", "<red>[Invalid URL]</red> t")
|
||||
|
||||
msgList.Add("http:", "http:")
|
||||
@ -183,6 +184,11 @@ func TestParser(t *testing.T) {
|
||||
msgList.Add("haha\nhaha\nhaha", "haha<br>haha<br>haha")
|
||||
msgList.Add("//"+url, "<a href='//"+url+"'>//"+url+"</a>")
|
||||
msgList.Add("//a", "<a href='//a'>//a</a>")
|
||||
msgList.Add(" //a", " <a href='//a'>//a</a>")
|
||||
msgList.Add("//a ", "<a href='//a'>//a</a> ")
|
||||
msgList.Add(" //a ", " <a href='//a'>//a</a> ")
|
||||
msgList.Add("d //a ", "d <a href='//a'>//a</a> ")
|
||||
msgList.Add("ddd ddd //a ", "ddd ddd <a href='//a'>//a</a> ")
|
||||
msgList.Add("https://"+url, "<a href='https://"+url+"'>https://"+url+"</a>")
|
||||
msgList.Add("https://t", "<a href='https://t'>https://t</a>")
|
||||
msgList.Add("http://"+url, "<a href='http://"+url+"'>http://"+url+"</a>")
|
||||
|
Loading…
Reference in New Issue
Block a user