diff --git a/.deadcode-out b/.deadcode-out
index 054a5cfc07..7f3e77017a 100644
--- a/.deadcode-out
+++ b/.deadcode-out
@@ -83,9 +83,6 @@ code.gitea.io/gitea/modules/cache
WithNoCacheContext
RemoveContextData
-code.gitea.io/gitea/modules/charset
- BreakWriter.Write
-
code.gitea.io/gitea/modules/emoji
ReplaceCodes
diff --git a/modules/charset/breakwriter.go b/modules/charset/breakwriter.go
deleted file mode 100644
index a87e846466..0000000000
--- a/modules/charset/breakwriter.go
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2022 The Gitea Authors. All rights reserved.
-// SPDX-License-Identifier: MIT
-
-package charset
-
-import (
- "bytes"
- "io"
-)
-
-// BreakWriter wraps an io.Writer to always write '\n' as '
'
-type BreakWriter struct {
- io.Writer
-}
-
-// Write writes the provided byte slice transparently replacing '\n' with '
'
-func (b *BreakWriter) Write(bs []byte) (n int, err error) {
- pos := 0
- for pos < len(bs) {
- idx := bytes.IndexByte(bs[pos:], '\n')
- if idx < 0 {
- wn, err := b.Writer.Write(bs[pos:])
- return n + wn, err
- }
-
- if idx > 0 {
- wn, err := b.Writer.Write(bs[pos : pos+idx])
- n += wn
- if err != nil {
- return n, err
- }
- }
-
- if _, err = b.Writer.Write([]byte("
")); err != nil {
- return n, err
- }
- pos += idx + 1
-
- n++
- }
-
- return n, err
-}
diff --git a/modules/charset/breakwriter_test.go b/modules/charset/breakwriter_test.go
deleted file mode 100644
index 5eeeedc4e2..0000000000
--- a/modules/charset/breakwriter_test.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2022 The Gitea Authors. All rights reserved.
-// SPDX-License-Identifier: MIT
-
-package charset
-
-import (
- "strings"
- "testing"
-)
-
-func TestBreakWriter_Write(t *testing.T) {
- tests := []struct {
- name string
- kase string
- expect string
- wantErr bool
- }{
- {
- name: "noline",
- kase: "abcdefghijklmnopqrstuvwxyz",
- expect: "abcdefghijklmnopqrstuvwxyz",
- },
- {
- name: "endline",
- kase: "abcdefghijklmnopqrstuvwxyz\n",
- expect: "abcdefghijklmnopqrstuvwxyz
",
- },
- {
- name: "startline",
- kase: "\nabcdefghijklmnopqrstuvwxyz",
- expect: "
abcdefghijklmnopqrstuvwxyz",
- },
- {
- name: "onlyline",
- kase: "\n\n\n",
- expect: "
",
- },
- {
- name: "empty",
- kase: "",
- expect: "",
- },
- {
- name: "midline",
- kase: "\nabc\ndefghijkl\nmnopqrstuvwxy\nz",
- expect: "
abc
defghijkl
mnopqrstuvwxy
z",
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- buf := &strings.Builder{}
- b := &BreakWriter{
- Writer: buf,
- }
- n, err := b.Write([]byte(tt.kase))
- if (err != nil) != tt.wantErr {
- t.Errorf("BreakWriter.Write() error = %v, wantErr %v", err, tt.wantErr)
- return
- }
- if n != len(tt.kase) {
- t.Errorf("BreakWriter.Write() = %v, want %v", n, len(tt.kase))
- }
- if buf.String() != tt.expect {
- t.Errorf("BreakWriter.Write() wrote %q, want %v", buf.String(), tt.expect)
- }
- })
- }
-}