Skip to content

Commit 8bd12cd

Browse files
committed
fix
1 parent 594edad commit 8bd12cd

File tree

26 files changed

+199
-140
lines changed

26 files changed

+199
-140
lines changed

models/actions/run.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWork
275275
return err
276276
}
277277
run.Index = index
278-
run.Title, _ = util.SplitStringAtByteN(run.Title, 255)
278+
run.Title = util.EllipsisDisplayString(run.Title, 255)
279279

280280
if err := db.Insert(ctx, run); err != nil {
281281
return err
@@ -308,7 +308,7 @@ func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWork
308308
} else {
309309
hasWaiting = true
310310
}
311-
job.Name, _ = util.SplitStringAtByteN(job.Name, 255)
311+
job.Name = util.EllipsisDisplayString(job.Name, 255)
312312
runJobs = append(runJobs, &ActionRunJob{
313313
RunID: run.ID,
314314
RepoID: run.RepoID,
@@ -402,7 +402,7 @@ func UpdateRun(ctx context.Context, run *ActionRun, cols ...string) error {
402402
if len(cols) > 0 {
403403
sess.Cols(cols...)
404404
}
405-
run.Title, _ = util.SplitStringAtByteN(run.Title, 255)
405+
run.Title = util.EllipsisDisplayString(run.Title, 255)
406406
affected, err := sess.Update(run)
407407
if err != nil {
408408
return err

models/actions/runner.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ func GetRunnerByID(ctx context.Context, id int64) (*ActionRunner, error) {
252252
// UpdateRunner updates runner's information.
253253
func UpdateRunner(ctx context.Context, r *ActionRunner, cols ...string) error {
254254
e := db.GetEngine(ctx)
255-
r.Name, _ = util.SplitStringAtByteN(r.Name, 255)
255+
r.Name = util.EllipsisDisplayString(r.Name, 255)
256256
var err error
257257
if len(cols) == 0 {
258258
_, err = e.ID(r.ID).AllCols().Update(r)
@@ -279,7 +279,7 @@ func CreateRunner(ctx context.Context, t *ActionRunner) error {
279279
// Remove OwnerID to avoid confusion; it's not worth returning an error here.
280280
t.OwnerID = 0
281281
}
282-
t.Name, _ = util.SplitStringAtByteN(t.Name, 255)
282+
t.Name = util.EllipsisDisplayString(t.Name, 255)
283283
return db.Insert(ctx, t)
284284
}
285285

models/actions/runner_token.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"code.gitea.io/gitea/models/db"
1111
repo_model "code.gitea.io/gitea/models/repo"
1212
user_model "code.gitea.io/gitea/models/user"
13-
"code.gitea.io/gitea/modules/base"
1413
"code.gitea.io/gitea/modules/timeutil"
1514
"code.gitea.io/gitea/modules/util"
1615
)
@@ -52,7 +51,7 @@ func GetRunnerToken(ctx context.Context, token string) (*ActionRunnerToken, erro
5251
if err != nil {
5352
return nil, err
5453
} else if !has {
55-
return nil, fmt.Errorf(`runner token "%s...": %w`, base.TruncateString(token, 3), util.ErrNotExist)
54+
return nil, fmt.Errorf(`runner token "%s...": %w`, util.TruncateRunes(token, 3), util.ErrNotExist)
5655
}
5756
return &runnerToken, nil
5857
}

models/actions/schedule.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func CreateScheduleTask(ctx context.Context, rows []*ActionSchedule) error {
6868

6969
// Loop through each schedule row
7070
for _, row := range rows {
71-
row.Title, _ = util.SplitStringAtByteN(row.Title, 255)
71+
row.Title = util.EllipsisDisplayString(row.Title, 255)
7272
// Create new schedule row
7373
if err = db.Insert(ctx, row); err != nil {
7474
return err

models/actions/task.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask
298298
if len(workflowJob.Steps) > 0 {
299299
steps := make([]*ActionTaskStep, len(workflowJob.Steps))
300300
for i, v := range workflowJob.Steps {
301-
name, _ := util.SplitStringAtByteN(v.String(), 255)
301+
name := util.EllipsisDisplayString(v.String(), 255)
302302
steps[i] = &ActionTaskStep{
303303
Name: name,
304304
TaskID: task.ID,

models/activities/action.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ import (
2020
repo_model "code.gitea.io/gitea/models/repo"
2121
"code.gitea.io/gitea/models/unit"
2222
user_model "code.gitea.io/gitea/models/user"
23-
"code.gitea.io/gitea/modules/base"
2423
"code.gitea.io/gitea/modules/git"
2524
"code.gitea.io/gitea/modules/log"
2625
"code.gitea.io/gitea/modules/setting"
2726
"code.gitea.io/gitea/modules/structs"
2827
"code.gitea.io/gitea/modules/timeutil"
28+
"code.gitea.io/gitea/modules/util"
2929

3030
"xorm.io/builder"
3131
"xorm.io/xorm/schemas"
@@ -226,7 +226,7 @@ func (a *Action) GetActUserName(ctx context.Context) string {
226226
// ShortActUserName gets the action's user name trimmed to max 20
227227
// chars.
228228
func (a *Action) ShortActUserName(ctx context.Context) string {
229-
return base.EllipsisString(a.GetActUserName(ctx), 20)
229+
return util.EllipsisDisplayString(a.GetActUserName(ctx), 20)
230230
}
231231

232232
// GetActDisplayName gets the action's display name based on DEFAULT_SHOW_FULL_NAME, or falls back to the username if it is blank.
@@ -260,7 +260,7 @@ func (a *Action) GetRepoUserName(ctx context.Context) string {
260260
// ShortRepoUserName returns the name of the action repository owner
261261
// trimmed to max 20 chars.
262262
func (a *Action) ShortRepoUserName(ctx context.Context) string {
263-
return base.EllipsisString(a.GetRepoUserName(ctx), 20)
263+
return util.EllipsisDisplayString(a.GetRepoUserName(ctx), 20)
264264
}
265265

266266
// GetRepoName returns the name of the action repository.
@@ -275,7 +275,7 @@ func (a *Action) GetRepoName(ctx context.Context) string {
275275
// ShortRepoName returns the name of the action repository
276276
// trimmed to max 33 chars.
277277
func (a *Action) ShortRepoName(ctx context.Context) string {
278-
return base.EllipsisString(a.GetRepoName(ctx), 33)
278+
return util.EllipsisDisplayString(a.GetRepoName(ctx), 33)
279279
}
280280

281281
// GetRepoPath returns the virtual path to the action repository.

models/issues/issue_update.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func ChangeIssueTitle(ctx context.Context, issue *Issue, doer *user_model.User,
177177
}
178178
defer committer.Close()
179179

180-
issue.Title, _ = util.SplitStringAtByteN(issue.Title, 255)
180+
issue.Title = util.EllipsisDisplayString(issue.Title, 255)
181181
if err = UpdateIssueCols(ctx, issue, "name"); err != nil {
182182
return fmt.Errorf("updateIssueCols: %w", err)
183183
}
@@ -440,7 +440,7 @@ func NewIssue(ctx context.Context, repo *repo_model.Repository, issue *Issue, la
440440
}
441441

442442
issue.Index = idx
443-
issue.Title, _ = util.SplitStringAtByteN(issue.Title, 255)
443+
issue.Title = util.EllipsisDisplayString(issue.Title, 255)
444444

445445
if err = NewIssueWithIndex(ctx, issue.Poster, NewIssueOptions{
446446
Repo: repo,

models/issues/pull.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *Iss
572572
}
573573

574574
issue.Index = idx
575-
issue.Title, _ = util.SplitStringAtByteN(issue.Title, 255)
575+
issue.Title = util.EllipsisDisplayString(issue.Title, 255)
576576

577577
if err = NewIssueWithIndex(ctx, issue.Poster, NewIssueOptions{
578578
Repo: repo,

models/project/project.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ func NewProject(ctx context.Context, p *Project) error {
256256
return util.NewInvalidArgumentErrorf("project type is not valid")
257257
}
258258

259-
p.Title, _ = util.SplitStringAtByteN(p.Title, 255)
259+
p.Title = util.EllipsisDisplayString(p.Title, 255)
260260

261261
return db.WithTx(ctx, func(ctx context.Context) error {
262262
if err := db.Insert(ctx, p); err != nil {
@@ -311,7 +311,7 @@ func UpdateProject(ctx context.Context, p *Project) error {
311311
p.CardType = CardTypeTextOnly
312312
}
313313

314-
p.Title, _ = util.SplitStringAtByteN(p.Title, 255)
314+
p.Title = util.EllipsisDisplayString(p.Title, 255)
315315
_, err := db.GetEngine(ctx).ID(p.ID).Cols(
316316
"title",
317317
"description",

models/repo/release.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ func IsReleaseExist(ctx context.Context, repoID int64, tagName string) (bool, er
156156

157157
// UpdateRelease updates all columns of a release
158158
func UpdateRelease(ctx context.Context, rel *Release) error {
159-
rel.Title, _ = util.SplitStringAtByteN(rel.Title, 255)
159+
rel.Title = util.EllipsisDisplayString(rel.Title, 255)
160160
_, err := db.GetEngine(ctx).ID(rel.ID).AllCols().Update(rel)
161161
return err
162162
}

models/user/user.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ func (u *User) BeforeUpdate() {
190190
}
191191

192192
u.LowerName = strings.ToLower(u.Name)
193-
u.Location = base.TruncateString(u.Location, 255)
194-
u.Website = base.TruncateString(u.Website, 255)
195-
u.Description = base.TruncateString(u.Description, 255)
193+
u.Location = util.TruncateRunes(u.Location, 255)
194+
u.Website = util.TruncateRunes(u.Website, 255)
195+
u.Description = util.TruncateRunes(u.Description, 255)
196196
}
197197

198198
// AfterLoad is invoked from XORM after filling all the fields of this object.
@@ -501,9 +501,9 @@ func (u *User) GitName() string {
501501
// ShortName ellipses username to length
502502
func (u *User) ShortName(length int) string {
503503
if setting.UI.DefaultShowFullName && len(u.FullName) > 0 {
504-
return base.EllipsisString(u.FullName, length)
504+
return util.EllipsisDisplayString(u.FullName, length)
505505
}
506-
return base.EllipsisString(u.Name, length)
506+
return util.EllipsisDisplayString(u.Name, length)
507507
}
508508

509509
// IsMailable checks if a user is eligible

modules/base/tool.go

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ import (
1616
"strconv"
1717
"strings"
1818
"time"
19-
"unicode/utf8"
2019

2120
"code.gitea.io/gitea/modules/git"
2221
"code.gitea.io/gitea/modules/log"
2322
"code.gitea.io/gitea/modules/setting"
23+
"code.gitea.io/gitea/modules/util"
2424

2525
"github.com/dustin/go-humanize"
2626
)
@@ -35,7 +35,7 @@ func EncodeSha256(str string) string {
3535
// ShortSha is basically just truncating.
3636
// It is DEPRECATED and will be removed in the future.
3737
func ShortSha(sha1 string) string {
38-
return TruncateString(sha1, 10)
38+
return util.TruncateRunes(sha1, 10)
3939
}
4040

4141
// BasicAuthDecode decode basic auth string
@@ -116,27 +116,6 @@ func FileSize(s int64) string {
116116
return humanize.IBytes(uint64(s))
117117
}
118118

119-
// EllipsisString returns a truncated short string,
120-
// it appends '...' in the end of the length of string is too large.
121-
func EllipsisString(str string, length int) string {
122-
if length <= 3 {
123-
return "..."
124-
}
125-
if utf8.RuneCountInString(str) <= length {
126-
return str
127-
}
128-
return string([]rune(str)[:length-3]) + "..."
129-
}
130-
131-
// TruncateString returns a truncated string with given limit,
132-
// it returns input string if length is not reached limit.
133-
func TruncateString(str string, limit int) string {
134-
if utf8.RuneCountInString(str) < limit {
135-
return str
136-
}
137-
return string([]rune(str)[:limit])
138-
}
139-
140119
// StringsToInt64s converts a slice of string to a slice of int64.
141120
func StringsToInt64s(strs []string) ([]int64, error) {
142121
if strs == nil {

modules/base/tool_test.go

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -113,36 +113,6 @@ func TestFileSize(t *testing.T) {
113113
assert.Equal(t, "2.0 EiB", FileSize(size))
114114
}
115115

116-
func TestEllipsisString(t *testing.T) {
117-
assert.Equal(t, "...", EllipsisString("foobar", 0))
118-
assert.Equal(t, "...", EllipsisString("foobar", 1))
119-
assert.Equal(t, "...", EllipsisString("foobar", 2))
120-
assert.Equal(t, "...", EllipsisString("foobar", 3))
121-
assert.Equal(t, "f...", EllipsisString("foobar", 4))
122-
assert.Equal(t, "fo...", EllipsisString("foobar", 5))
123-
assert.Equal(t, "foobar", EllipsisString("foobar", 6))
124-
assert.Equal(t, "foobar", EllipsisString("foobar", 10))
125-
assert.Equal(t, "测...", EllipsisString("测试文本一二三四", 4))
126-
assert.Equal(t, "测试...", EllipsisString("测试文本一二三四", 5))
127-
assert.Equal(t, "测试文...", EllipsisString("测试文本一二三四", 6))
128-
assert.Equal(t, "测试文本一二三四", EllipsisString("测试文本一二三四", 10))
129-
}
130-
131-
func TestTruncateString(t *testing.T) {
132-
assert.Equal(t, "", TruncateString("foobar", 0))
133-
assert.Equal(t, "f", TruncateString("foobar", 1))
134-
assert.Equal(t, "fo", TruncateString("foobar", 2))
135-
assert.Equal(t, "foo", TruncateString("foobar", 3))
136-
assert.Equal(t, "foob", TruncateString("foobar", 4))
137-
assert.Equal(t, "fooba", TruncateString("foobar", 5))
138-
assert.Equal(t, "foobar", TruncateString("foobar", 6))
139-
assert.Equal(t, "foobar", TruncateString("foobar", 7))
140-
assert.Equal(t, "测试文本", TruncateString("测试文本一二三四", 4))
141-
assert.Equal(t, "测试文本一", TruncateString("测试文本一二三四", 5))
142-
assert.Equal(t, "测试文本一二", TruncateString("测试文本一二三四", 6))
143-
assert.Equal(t, "测试文本一二三", TruncateString("测试文本一二三四", 7))
144-
}
145-
146116
func TestStringsToInt64s(t *testing.T) {
147117
testSuccess := func(input []string, expected []int64) {
148118
result, err := StringsToInt64s(input)

modules/issue/template/unmarshal.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func unmarshal(filename string, content []byte) (*api.IssueTemplate, error) {
109109

110110
it.Content = string(content)
111111
it.Name = path.Base(it.FileName) // paths in Git are always '/' separated - do not use filepath!
112-
it.About, _ = util.SplitStringAtByteN(it.Content, 80)
112+
it.About = util.EllipsisDisplayString(it.Content, 80)
113113
} else {
114114
it.Content = templateBody
115115
if it.About == "" {

modules/markup/html_link.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func linkProcessor(ctx *RenderContext, node *html.Node) {
173173

174174
uri := node.Data[m[0]:m[1]]
175175
remaining := node.Data[m[1]:]
176-
if util.IsLikelySplitLeftPart(remaining) {
176+
if util.IsLikelyEllipsisLeftPart(remaining) {
177177
return
178178
}
179179
replaceContent(node, m[0], m[1], createLink(ctx, uri, uri, "" /*link*/))

modules/markup/html_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,12 +207,12 @@ func TestRender_links(t *testing.T) {
207207
"ftps://gitea.com",
208208
`<p>ftps://gitea.com</p>`)
209209

210-
t.Run("LinkSplit", func(t *testing.T) {
211-
input, _ := util.SplitStringAtByteN("http://10.1.2.3", 12)
210+
t.Run("LinkEllipsis", func(t *testing.T) {
211+
input := util.EllipsisDisplayString("http://10.1.2.3", 12)
212212
assert.Equal(t, "http://10…", input)
213213
test(input, "<p>http://10…</p>")
214214

215-
input, _ = util.SplitStringAtByteN("http://10.1.2.3", 13)
215+
input = util.EllipsisDisplayString("http://10.1.2.3", 13)
216216
assert.Equal(t, "http://10.…", input)
217217
test(input, "<p>http://10.…</p>")
218218
})

modules/templates/mailer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import (
1111
"strings"
1212
texttmpl "text/template"
1313

14-
"code.gitea.io/gitea/modules/base"
1514
"code.gitea.io/gitea/modules/log"
1615
"code.gitea.io/gitea/modules/setting"
16+
"code.gitea.io/gitea/modules/util"
1717
)
1818

1919
var mailSubjectSplit = regexp.MustCompile(`(?m)^-{3,}\s*$`)
@@ -24,7 +24,7 @@ func mailSubjectTextFuncMap() texttmpl.FuncMap {
2424
"dict": dict,
2525
"Eval": evalTokens,
2626

27-
"EllipsisString": base.EllipsisString,
27+
"EllipsisString": util.EllipsisDisplayString,
2828
"AppName": func() string {
2929
return setting.AppName
3030
},

modules/templates/util_string.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"html/template"
99
"strings"
1010

11-
"code.gitea.io/gitea/modules/base"
11+
"code.gitea.io/gitea/modules/util"
1212
)
1313

1414
type StringUtils struct{}
@@ -54,7 +54,7 @@ func (su *StringUtils) Cut(s, sep string) []any {
5454
}
5555

5656
func (su *StringUtils) EllipsisString(s string, maxLength int) string {
57-
return base.EllipsisString(s, maxLength)
57+
return util.EllipsisDisplayString(s, maxLength)
5858
}
5959

6060
func (su *StringUtils) ToUpper(s string) string {

0 commit comments

Comments
 (0)