mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	Close: #33588 --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: Giteabot <teabot@gitea.io>
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2023 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package internal
 | |
| 
 | |
| import (
 | |
| 	"strings"
 | |
| 
 | |
| 	"code.gitea.io/gitea/modules/indexer/internal"
 | |
| 	"code.gitea.io/gitea/modules/log"
 | |
| )
 | |
| 
 | |
| const (
 | |
| 	filenameMatchNumberOfLines = 7 // Copied from github search
 | |
| )
 | |
| 
 | |
| func FilenameIndexerID(repoID int64, filename string) string {
 | |
| 	return internal.Base36(repoID) + "_" + filename
 | |
| }
 | |
| 
 | |
| func ParseIndexerID(indexerID string) (int64, string) {
 | |
| 	index := strings.IndexByte(indexerID, '_')
 | |
| 	if index == -1 {
 | |
| 		log.Error("Unexpected ID in repo indexer: %s", indexerID)
 | |
| 	}
 | |
| 	repoID, _ := internal.ParseBase36(indexerID[:index])
 | |
| 	return repoID, indexerID[index+1:]
 | |
| }
 | |
| 
 | |
| func FilenameOfIndexerID(indexerID string) string {
 | |
| 	index := strings.IndexByte(indexerID, '_')
 | |
| 	if index == -1 {
 | |
| 		log.Error("Unexpected ID in repo indexer: %s", indexerID)
 | |
| 	}
 | |
| 	return indexerID[index+1:]
 | |
| }
 | |
| 
 | |
| // FilenameMatchIndexPos returns the boundaries of its first seven lines.
 | |
| func FilenameMatchIndexPos(content string) (int, int) {
 | |
| 	count := 1
 | |
| 	for i, c := range content {
 | |
| 		if c == '\n' {
 | |
| 			count++
 | |
| 			if count == filenameMatchNumberOfLines {
 | |
| 				return 0, i
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	return 0, len(content)
 | |
| }
 | |
| 
 | |
| func ParseKeywordAsPhrase(keyword string) (string, bool) {
 | |
| 	if strings.HasPrefix(keyword, `"`) && strings.HasSuffix(keyword, `"`) && len(keyword) > 1 {
 | |
| 		// only remove the prefix and suffix quotes, no need to decode the content at the moment
 | |
| 		return keyword[1 : len(keyword)-1], true
 | |
| 	}
 | |
| 	return "", false
 | |
| }
 |