diff --git a/common/parser.go b/common/parser.go
index 90a5b921..52721ddd 100644
--- a/common/parser.go
+++ b/common/parser.go
@@ -633,8 +633,8 @@ func ParseMessage2(msg string, sectionID int, sectionType string, settings *Pars
case 'h', 'f', 'g', '/':
//fmt.Println("s3")
fch := msg[i+1]
- if fch == 't' && len(msg) > i+5 && msg[i+2] == 't' && msg[i+3] == 'p' {
- if len(msg) > i+6 && msg[i+4] == 's' && msg[i+5] == ':' && msg[i+6] == '/' {
+ if msg[i] == 'h' && fch == 't' && len(msg) > i+5 && msg[i+2] == 't' && msg[i+3] == 'p' {
+ if msg[i+4] == 's' && msg[i+5] == ':' && len(msg) > i+6 && msg[i+6] == '/' {
// Do nothing
} else if msg[i+4] == ':' && msg[i+5] == '/' {
// Do nothing
@@ -642,16 +642,16 @@ func ParseMessage2(msg string, sectionID int, sectionType string, settings *Pars
continue
}
} else if len(msg) > i+4 {
- if fch == 't' && msg[i+2] == 'p' && msg[i+3] == ':' && msg[i+4] == '/' {
+ if fch == 't' && msg[i+2] == 'p' && msg[i+3] == ':' && msg[i+4] == '/' && msg[i] == 'f' {
// Do nothing
- } else if fch == 'i' && msg[i+2] == 't' && msg[i+3] == ':' && msg[i+4] == '/' {
+ } else if fch == 'i' && msg[i+2] == 't' && msg[i+3] == ':' && msg[i+4] == '/' && msg[i] == 'g' {
// Do nothing
- } else if fch == '/' {
+ } else if fch == '/' && msg[i] == '/' {
// Do nothing
} else {
continue
}
- } else if fch == '/' {
+ } else if fch == '/' && msg[i] == '/' {
// Do nothing
} else {
continue
diff --git a/parser_test.go b/parser_test.go
index 6284a9cc..395eaf90 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -197,16 +197,17 @@ func TestParser(t *testing.T) {
l.Add("http:// t", "[Invalid URL] t")
l.Add("g", "g")
- l.Add("g/", "//") // todo: fix this
+ l.Add("g/", "g/")
+ l.Add("g//", "g//")
l.Add("/g", "/g")
l.Add("/gg", "/gg")
l.Add("/g/", "/g/")
l.Add("hi", "hi")
l.Add("hit", "hit")
l.Add("hit:", "hit:")
- l.Add("hit:/", "/") // todo: fix this
- l.Add("hit://", "") // todo: fix this
- l.Add("hit://t", "t") // todo: fix this
+ l.Add("hit:/", "hit:/")
+ l.Add("hit://", "hit://")
+ l.Add("hit://t", "hit://t")
l.Add("h", "h")
l.Add("ht", "ht")
l.Add("htt", "htt")
@@ -216,6 +217,9 @@ func TestParser(t *testing.T) {
//t l.Add("http:/d", "http:/d")
l.Add("http:d", "http:d")
l.Add("https:", "https:")
+ l.Add("gttps:", "gttps:")
+ l.Add("gttps:/", "gttps:/")
+ l.Add("gttps://", "gttps://")
l.Add("ftp:", "ftp:")
l.Add("git:", "git:")
l.Add("ssh:", "ssh:")
@@ -424,6 +428,25 @@ func TestParser(t *testing.T) {
c.Site.URL = pre
c.Config.SslSchema = pre2
+ l = &METriList{nil}
+ l.Add("//", "//")
+ l.Add("//z", "//z")
+ l.Add("//"+url, "//"+url)
+ l.Add("https://www.youtube.com/watch?v=lalalalala&t=1", "https://www.youtube.com/watch?v=lalalalala&t=1")
+ l.Add("#tid-1", "#tid-1")
+ c.GuestUser.Perms.AutoLink = false
+ for _, item := range l.Items {
+ if res := c.ParseMessage(item.Msg, 1, "forums", nil, nil); res != item.Expects {
+ if item.Name != "" {
+ t.Error("Name: ", item.Name)
+ }
+ t.Error("Testing string '" + item.Msg + "'")
+ t.Error("Bad output:", "'"+res+"'")
+ t.Error("Expected:", "'"+item.Expects+"'")
+ break
+ }
+ }
+
c.AddHashLinkType("nnid-", func(sb *strings.Builder, msg string, i *int) {
tid, intLen := c.CoerceIntString(msg[*i:])
*i += intLen