Skip to content

Commit b3a29ab

Browse files
committed
refactor(internal/locale): 复用 looaleutil 中的部分对象
1 parent f52ddd5 commit b3a29ab

File tree

8 files changed

+21
-39
lines changed

8 files changed

+21
-39
lines changed

core/errors.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package core
44

55
import (
6+
"github.com/issue9/localeutil"
67
"github.com/issue9/sliceutil"
78
"golang.org/x/text/message"
89

@@ -11,7 +12,7 @@ import (
1112

1213
// HTTPError 表示 HTTP 状态码的错误
1314
type HTTPError struct {
14-
locale.Err
15+
error
1516
Code int
1617
}
1718

@@ -48,8 +49,8 @@ const (
4849
// NewHTTPError 声明 HTTPError 实例
4950
func NewHTTPError(code int, key message.Reference, v ...any) *HTTPError {
5051
return &HTTPError{
51-
Err: locale.Err{Key: key, Values: v},
52-
Code: code,
52+
error: localeutil.Error(key, v...),
53+
Code: code,
5354
}
5455
}
5556

docs/example/index.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22

33
<?xml-stylesheet type="text/xsl" href="../v6/apidoc.xsl"?>
4-
<apidoc apidoc="6.1.0" created="2022-08-29T22:44:25+08:00" version="1.1.1">
4+
<apidoc apidoc="6.1.0" created="2022-08-30T00:29:49+08:00" version="1.1.1">
55
<title>示例文档</title>
66
<description type="html"><![CDATA[
77
<p>这是一个用于测试的文档用例</p>

internal/ast/ast.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,7 @@ func trimLeftSpace(v string) string {
151151
ret := make([]byte, 0, buf.Size())
152152
for {
153153
line, err := buf.ReadBytes('\n')
154-
if bytes.HasPrefix(line, min) {
155-
line = line[len(min):]
156-
}
154+
line = bytes.TrimPrefix(line, min)
157155
ret = append(ret, line...)
158156

159157
if errors.Is(err, io.EOF) {

internal/ast/elements.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
package ast
44

5-
import (
6-
"github.com/caixw/apidoc/v7/internal/xmlenc"
7-
)
5+
import "github.com/caixw/apidoc/v7/internal/xmlenc"
86

97
type (
108
// APIDoc 对应 apidoc 元素

internal/ast/elements_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
package ast
44

55
import (
6-
"io/ioutil"
6+
"os"
77
"strings"
88
"testing"
99

@@ -22,7 +22,7 @@ var (
2222
)
2323

2424
func loadAPIDoc(a *assert.Assertion) *APIDoc {
25-
data, err := ioutil.ReadFile("./testdata/doc.xml")
25+
data, err := os.ReadFile("./testdata/doc.xml")
2626
a.NotError(err).NotNil(data)
2727

2828
doc := &APIDoc{}
@@ -311,7 +311,7 @@ func TestAPIDoc(t *testing.T) {
311311
func TestAPIDoc_all(t *testing.T) {
312312
a := assert.New(t, false)
313313

314-
data, err := ioutil.ReadFile("./testdata/all.xml")
314+
data, err := os.ReadFile("./testdata/all.xml")
315315
a.NotError(err).NotNil(data)
316316
rslt := messagetest.NewMessageHandler()
317317
doc := &APIDoc{}
@@ -354,7 +354,7 @@ func TestAPIDoc_all(t *testing.T) {
354354
func loadAPI(a *assert.Assertion) *API {
355355
doc := loadAPIDoc(a)
356356

357-
data, err := ioutil.ReadFile("./testdata/api.xml")
357+
data, err := os.ReadFile("./testdata/api.xml")
358358
a.NotError(err).NotNil(data)
359359

360360
rslt := messagetest.NewMessageHandler()

internal/docs/docs.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,8 @@ func errStatus(w http.ResponseWriter, status int) {
166166
}
167167

168168
func errStatusWithError(w http.ResponseWriter, err error, l *log.Logger) {
169-
herr, ok := err.(*core.HTTPError)
170-
if ok {
171-
http.Error(w, herr.Err.Error(), herr.Code)
169+
if herr, ok := err.(*core.HTTPError); ok {
170+
http.Error(w, herr.Error(), herr.Code)
172171
return
173172
}
174173

internal/locale/locale.go

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package locale
55

66
import (
7+
"github.com/issue9/localeutil"
78
"golang.org/x/text/language"
89
"golang.org/x/text/message"
910
)
@@ -22,21 +23,10 @@ var (
2223
tags = []language.Tag{}
2324
)
2425

25-
// Locale 提供缓存本地化信息
26-
type Locale struct {
27-
Key message.Reference
28-
Values []any
29-
}
30-
31-
// Err 为错误信息提供本地化的缓存机制
32-
type Err Locale
33-
34-
func (l *Locale) String() string {
35-
return Sprintf(l.Key, l.Values...)
36-
}
26+
type LocaleStringer = localeutil.LocaleStringer
3727

38-
func (err *Err) Error() string {
39-
return (*Locale)(err).String()
28+
type Error struct {
29+
l LocaleStringer
4030
}
4131

4232
func setMessages(id string, messages map[string]string) {
@@ -57,6 +47,8 @@ func setMessages(id string, messages map[string]string) {
5747
}
5848
}
5949

50+
func (err *Error) Error() string { return err.l.LocaleString(localePrinter) }
51+
6052
// SetTag 切换本地化环境
6153
func SetTag(tag language.Tag) {
6254
tag, _, _ = language.NewMatcher(tags).Match(tag)
@@ -80,14 +72,10 @@ func Sprintf(key message.Reference, v ...any) string {
8072
}
8173

8274
// New 声明新的 Locale 对象
83-
func New(key message.Reference, v ...any) *Locale {
84-
return &Locale{Key: key, Values: v}
85-
}
75+
func New(key message.Reference, v ...any) LocaleStringer { return localeutil.Phrase(key, v...) }
8676

8777
// NewError 返回本地化的错误对象
88-
func NewError(key message.Reference, v ...any) error {
89-
return (*Err)(New(key, v...))
90-
}
78+
func NewError(key message.Reference, v ...any) error { return &Error{l: localeutil.Phrase(key, v...)} }
9179

9280
// Translate 功能与 Sprintf 类似,但是可以指定本地化 ID 值。
9381
func Translate(localeID string, key message.Reference, v ...any) string {

internal/locale/locale_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import (
99
"golang.org/x/text/language"
1010
)
1111

12-
var _ error = &Err{}
13-
1412
func TestVarsDefaultLocaleID(t *testing.T) {
1513
a := assert.New(t, false)
1614

0 commit comments

Comments
 (0)