36 lines
932 B
Go
36 lines
932 B
Go
package formatter
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/ditashi/jsbeautifier-go/jsbeautifier"
|
|
)
|
|
|
|
// JSFormatter 结构体,用于格式化 JavaScript 代码
|
|
type JSFormatter struct{}
|
|
|
|
// NewJSFormatter 创建一个新的 JSFormatter 实例
|
|
func NewJSFormatter() *JSFormatter {
|
|
return &JSFormatter{}
|
|
}
|
|
|
|
// Format 方法用于格式化 JavaScript 代码
|
|
// input: 原始的 JavaScript 代码字节切片
|
|
// 返回值: 格式化后的 JavaScript 代码字节切片和错误信息(如果有)
|
|
func (f *JSFormatter) Format(input []byte) ([]byte, error) {
|
|
// 将输入数据转换为字符串,并去除前后空白
|
|
code := string(bytes.TrimSpace(input))
|
|
|
|
// 使用 jsbeautifier 库格式化 JavaScript 代码
|
|
beautifiedCode, err := jsbeautifier.Beautify(&code, jsbeautifier.DefaultOptions())
|
|
if err != nil {
|
|
return input, err
|
|
}
|
|
|
|
return []byte(beautifiedCode), nil
|
|
}
|
|
|
|
func init() {
|
|
RegisterFormatter(".js", NewJSFormatter())
|
|
}
|