extractor.go | 17 ++++++++++++++--- pe_test.go | 14 +++++++++++++- diff --git a/extractor.go b/extractor.go index 326855cf59e52e409b2d65661aba738550730982..c19b7d5cae73c091b2f8e4599b17cd98461cd7aa 100644 --- a/extractor.go +++ b/extractor.go @@ -32,6 +32,7 @@ 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 @@ if isGitPath(candidatePath) { 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]) +} diff --git a/pe_test.go b/pe_test.go index 7e52783ef9be9d5d92ebc37c3578884d7746081e..3f24886f209bf927c03132b674ad2ff36ec369c7 100644 --- a/pe_test.go +++ b/pe_test.go @@ -183,7 +183,19 @@ 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) } }