Compare commits

...

2 Commits

Author SHA1 Message Date
jolheiser 3faedb8236
fix: search results
Signed-off-by: jolheiser <git@jolheiser.com>
2024-08-10 18:15:27 -05:00
jolheiser 11d534f89f
feat: allow regex search
Signed-off-by: jolheiser <git@jolheiser.com>
2024-08-10 12:16:19 -05:00
4 changed files with 19 additions and 22 deletions

View File

@ -18,8 +18,10 @@ type GrepResult struct {
// Grep performs a naive "code search" via git grep // Grep performs a naive "code search" via git grep
func (r Repo) Grep(search string) ([]GrepResult, error) { func (r Repo) Grep(search string) ([]GrepResult, error) {
// Plain-text search only if strings.HasPrefix(search, "=") {
re, err := regexp.Compile(regexp.QuoteMeta(search)) search = regexp.QuoteMeta(strings.TrimPrefix(search, "="))
}
re, err := regexp.Compile(search)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -11,20 +11,18 @@ type SearchContext struct {
func (s SearchContext) DedupeResults() [][]git.GrepResult { func (s SearchContext) DedupeResults() [][]git.GrepResult {
var ( var (
results [][]git.GrepResult results [][]git.GrepResult
currentFile string currentFile string
currentResults []git.GrepResult
) )
var idx int
for _, result := range s.Results { for _, result := range s.Results {
if result.File == currentFile { if result.File == currentFile {
currentResults = append(currentResults, result) results[idx] = append(results[idx], result)
continue continue
} }
if currentFile != "" { results = append(results, []git.GrepResult{result})
results = append(results, currentResults)
}
currentFile = result.File currentFile = result.File
currentResults = []git.GrepResult{result} idx++
} }
return results return results

View File

@ -21,20 +21,18 @@ type SearchContext struct {
func (s SearchContext) DedupeResults() [][]git.GrepResult { func (s SearchContext) DedupeResults() [][]git.GrepResult {
var ( var (
results [][]git.GrepResult results [][]git.GrepResult
currentFile string currentFile string
currentResults []git.GrepResult
) )
var idx int
for _, result := range s.Results { for _, result := range s.Results {
if result.File == currentFile { if result.File == currentFile {
currentResults = append(currentResults, result) results[idx] = append(results[idx], result)
continue continue
} }
if currentFile != "" { results = append(results, []git.GrepResult{result})
results = append(results, currentResults)
}
currentFile = result.File currentFile = result.File
currentResults = []git.GrepResult{result} idx++
} }
return results return results
@ -128,7 +126,7 @@ func repoSearchResult(repo, ref string, results []git.GrepResult) templ.Componen
var templ_7745c5c3_Var5 string var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(results[0].File) templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(results[0].File)
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `repo_search.templ`, Line: 50, Col: 230} return templ.Error{Err: templ_7745c5c3_Err, FileName: `repo_search.templ`, Line: 48, Col: 230}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
@ -154,7 +152,7 @@ func repoSearchResult(repo, ref string, results []git.GrepResult) templ.Componen
var templ_7745c5c3_Var6 string var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d ", len(results[1:]))) templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d ", len(results[1:])))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `repo_search.templ`, Line: 56, Col: 50} return templ.Error{Err: templ_7745c5c3_Err, FileName: `repo_search.templ`, Line: 54, Col: 50}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
@ -181,7 +179,7 @@ func repoSearchResult(repo, ref string, results []git.GrepResult) templ.Componen
var templ_7745c5c3_Var8 string var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(results[0].File) templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(results[0].File)
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `repo_search.templ`, Line: 58, Col: 230} return templ.Error{Err: templ_7745c5c3_Err, FileName: `repo_search.templ`, Line: 56, Col: 230}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {

View File

@ -206,7 +206,6 @@ func (rh repoHandler) repoSearch(w http.ResponseWriter, r *http.Request) error {
} }
results[idx].Content = buf.String() results[idx].Content = buf.String()
} }
} }
if err := html.RepoSearch(html.SearchContext{ if err := html.RepoSearch(html.SearchContext{