]> Sergey Matveev's repositories - path-extractor.git/commitdiff
Getting line number now works
authorEdgar HIPP <hipp.edg@gmail.com>
Sat, 16 Jan 2016 06:06:50 +0000 (07:06 +0100)
committerEdgar HIPP <hipp.edg@gmail.com>
Sat, 16 Jan 2016 06:06:50 +0000 (07:06 +0100)
extractor.go
pe_test.go

index 326855cf59e52e409b2d65661aba738550730982..c19b7d5cae73c091b2f8e4599b17cd98461cd7aa 100644 (file)
@@ -32,6 +32,7 @@ func postProcess(input string) string {
 func GetAllMatches(input string, options MatchOptions) []string {
        result := []string{}
        candidatePath := string("")
+       restOfLine := string("")
        indexes := pathExtractor(input)
        for _, index := range indexes {
                candidatePath = input[index[0]:index[1]]
@@ -46,12 +47,22 @@ func GetAllMatches(input string, options MatchOptions) []string {
                        candidatePath = replaceGitPath(candidatePath)
                }
                candidatePath = postProcess(candidatePath)
-               lineNumber := 45
-               columnNumber := 1
                if options.format == "ackmate" {
-                       candidatePath = fmt.Sprint(candidatePath, ":", lineNumber, ":", columnNumber)
+                       restOfLine = input[index[1]:]
+                       cursorPos := getCursorPosition(restOfLine)
+                       candidatePath = fmt.Sprint(candidatePath, cursorPos)
                }
                result = append(result, candidatePath)
        }
        return result
 }
+
+func getCursorPosition(input string) string {
+       r := regexp.MustCompile("^(:[0-9]+(:[0-9]+)?)$")
+       temp := [][]byte{}
+       temp = r.FindSubmatch([]byte(input))
+       if len(temp) <= 1 {
+               return ""
+       }
+       return string(temp[1])
+}
index 7e52783ef9be9d5d92ebc37c3578884d7746081e..3f24886f209bf927c03132b674ad2ff36ec369c7 100644 (file)
@@ -183,7 +183,19 @@ func TestEverything(t *testing.T) {
        if output[0] == "test.js" {
                t.Errorf("Ackmate should not forget number", output)
        }
-       if output[0] != "test.js:45:1" {
+       if output[0] != "test.js:45" {
+               t.Errorf("Ackmate should output right line number", output)
+       }
+
+       output = GetAllMatches("test.js:45:12", MatchOptions{format: "ackmate"})
+       if len(output) != 1 {
+               t.Errorf("Ackmate doesnt match", output)
+       }
+
+       if output[0] == "test.js" {
+               t.Errorf("Ackmate should not forget number", output)
+       }
+       if output[0] != "test.js:45:12" {
                t.Errorf("Ackmate should output right line number", output)
        }
 }