Browse Source

Реализован более трудный случай, когда в названии доверительного свойства есть пробел #65

трудность в том, что нужно учесть это в URL.
Сделать путём регулярных выражений НЕ получилось.
Т.к. непонятно, как сделать глобальную замену содержимого обратных ссылок.
pull/120/head
Artur Galyamov 2 years ago
parent
commit
da59f8af8d
  1. 29
      routers/web/repo/resource.go

29
routers/web/repo/resource.go

@ -4,7 +4,6 @@ import (
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/routers/web/user"
"errors"
"fmt"
"net/http"
"regexp"
@ -41,15 +40,29 @@ func GetRenderedResourcesWithSearchLinks(ctx *context.Context, repo interface{},
return "", err
}
resourceSubstitutionPattern := fmt.Sprintf(`- \[ \] $1 [найти](/explore/%s?tab=&q=$1)`, strings.ToLower(fieldName))
resourcesWithLinks := regExp.ReplaceAll([]byte(resources), []byte(resourceSubstitutionPattern))
resourceNamesMatches := regExp.FindAllStringSubmatch(resources, -1)
if resourceNamesMatches == nil {
return "", err
}
var resourcesWithSafeURLs = strings.Clone(resources)
var resourceName string
var searchQS string
for _, matches := range resourceNamesMatches {
resourceName = matches[1]
searchQS = strings.ReplaceAll(resourceName, " ", "+")
resourceSubstitutionPattern := fmt.Sprintf(
`- \[ \] %s [найти](/explore/%s?tab=&q=%s)`,
resourceName,
strings.ToLower(fieldName),
searchQS)
if resourcesWithLinks == nil {
return "", errors.New("not found matches in resources")
resourcesWithSafeURLs = strings.Replace(resourcesWithSafeURLs, resourceName, resourceSubstitutionPattern, -1)
}
var renderedResourcesWithLinks string
renderedResourcesWithLinks, err = user.GetRenderedTextFieldByValue(ctx, repo, string(resourcesWithLinks))
var renderedResourcesWithSafeURLs string
renderedResourcesWithSafeURLs, err = user.GetRenderedTextFieldByValue(ctx, repo, resourcesWithSafeURLs)
return renderedResourcesWithLinks, err
return renderedResourcesWithSafeURLs, err
}

Loading…
Cancel
Save