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?
|
// TODO: Somehow localise these?
|
||||||
var SpaceGap = []byte(" ")
|
var SpaceGap = []byte(" ")
|
||||||
var httpProtBytes = []byte("http://")
|
var httpProtBytes = []byte("http://")
|
||||||
|
var DoubleForwardSlash = []byte("//")
|
||||||
var InvalidURL = []byte("<red>[Invalid URL]</red>")
|
var InvalidURL = []byte("<red>[Invalid URL]</red>")
|
||||||
var InvalidTopic = []byte("<red>[Invalid Topic]</red>")
|
var InvalidTopic = []byte("<red>[Invalid Topic]</red>")
|
||||||
var InvalidProfile = []byte("<red>[Invalid Profile]</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(bytesSinglequote)
|
||||||
sb.Write(urlMention)
|
sb.Write(urlMention)
|
||||||
sb.Write(bytesGreaterthan)
|
sb.Write(bytesGreaterthan)
|
||||||
sb.WriteString("@" + menUser.Name)
|
sb.WriteByte('@')
|
||||||
|
sb.WriteString(menUser.Name)
|
||||||
sb.Write(URLClose)
|
sb.Write(URLClose)
|
||||||
lastItem = i
|
lastItem = i
|
||||||
i--
|
i--
|
||||||
|
@ -560,11 +562,22 @@ func ParseMessage(msg string, sectionID int, sectionType string /*, user User*/)
|
||||||
urlLen, ok := PartialURLStringLen(msg[i:])
|
urlLen, ok := PartialURLStringLen(msg[i:])
|
||||||
if len(msg) < i+urlLen {
|
if len(msg) < i+urlLen {
|
||||||
//fmt.Println("o1")
|
//fmt.Println("o1")
|
||||||
|
if urlLen == 2 {
|
||||||
|
sb.Write(DoubleForwardSlash)
|
||||||
|
} else {
|
||||||
sb.Write(InvalidURL)
|
sb.Write(InvalidURL)
|
||||||
|
}
|
||||||
i += len(msg) - 1
|
i += len(msg) - 1
|
||||||
lastItem = i
|
lastItem = i
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
if urlLen == 2 {
|
||||||
|
sb.Write(DoubleForwardSlash)
|
||||||
|
i += urlLen
|
||||||
|
lastItem = i
|
||||||
|
i--
|
||||||
|
continue
|
||||||
|
}
|
||||||
//fmt.Println("msg[i:i+urlLen]:", "'"+msg[i:i+urlLen]+"'")
|
//fmt.Println("msg[i:i+urlLen]:", "'"+msg[i:i+urlLen]+"'")
|
||||||
if !ok {
|
if !ok {
|
||||||
//fmt.Printf("o2: i = %d; i+urlLen = %d\n",i,i+urlLen)
|
//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("", "")
|
||||||
msgList.Add("haha", "haha")
|
msgList.Add("haha", "haha")
|
||||||
msgList.Add("<b>t</b>", "<b>t</b>")
|
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("http://", "<red>[Invalid URL]</red>")
|
||||||
msgList.Add("https://", "<red>[Invalid URL]</red>")
|
msgList.Add("https://", "<red>[Invalid URL]</red>")
|
||||||
msgList.Add("ftp://", "<red>[Invalid URL]</red>")
|
msgList.Add("ftp://", "<red>[Invalid URL]</red>")
|
||||||
msgList.Add("git://", "<red>[Invalid URL]</red>")
|
msgList.Add("git://", "<red>[Invalid URL]</red>")
|
||||||
msgList.Add("ssh://", "ssh://")
|
msgList.Add("ssh://", "ssh://")
|
||||||
|
|
||||||
msgList.Add("// ", "<red>[Invalid URL]</red> ")
|
msgList.Add("// ", "// ")
|
||||||
msgList.Add("// //", "<red>[Invalid URL]</red> <red>[Invalid URL]</red>")
|
msgList.Add("// //", "// //")
|
||||||
|
msgList.Add("// // //", "// // //")
|
||||||
msgList.Add("http:// ", "<red>[Invalid URL]</red> ")
|
msgList.Add("http:// ", "<red>[Invalid URL]</red> ")
|
||||||
msgList.Add("https:// ", "<red>[Invalid URL]</red> ")
|
msgList.Add("https:// ", "<red>[Invalid URL]</red> ")
|
||||||
msgList.Add("ftp:// ", "<red>[Invalid URL]</red> ")
|
msgList.Add("ftp:// ", "<red>[Invalid URL]</red> ")
|
||||||
msgList.Add("git:// ", "<red>[Invalid URL]</red> ")
|
msgList.Add("git:// ", "<red>[Invalid URL]</red> ")
|
||||||
msgList.Add("ssh:// ", "ssh:// ")
|
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:// t", "<red>[Invalid URL]</red> t")
|
||||||
|
|
||||||
msgList.Add("http:", "http:")
|
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("haha\nhaha\nhaha", "haha<br>haha<br>haha")
|
||||||
msgList.Add("//"+url, "<a href='//"+url+"'>//"+url+"</a>")
|
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(" //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://"+url, "<a href='https://"+url+"'>https://"+url+"</a>")
|
||||||
msgList.Add("https://t", "<a href='https://t'>https://t</a>")
|
msgList.Add("https://t", "<a href='https://t'>https://t</a>")
|
||||||
msgList.Add("http://"+url, "<a href='http://"+url+"'>http://"+url+"</a>")
|
msgList.Add("http://"+url, "<a href='http://"+url+"'>http://"+url+"</a>")
|
||||||
|
|
Loading…
Reference in New Issue