Skip to content

Commit a62ac9f

Browse files
committed
feat: add Source function
1 parent 0a02424 commit a62ac9f

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

gofmt/golangci.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ import (
1414
"github.com/golangci/gofmt/gofmt/internal/diff"
1515
)
1616

17+
type Options struct {
18+
NeedSimplify bool
19+
RewriteRules []RewriteRule
20+
}
21+
1722
var parserModeMu sync.RWMutex
1823

1924
type RewriteRule struct {
@@ -73,6 +78,32 @@ func RunRewrite(filename string, needSimplify bool, rewriteRules []RewriteRule)
7378
return diff.Diff(oldName, src, newName, res), nil
7479
}
7580

81+
func Source(filename string, src []byte, opts Options) ([]byte, error) {
82+
fset := token.NewFileSet()
83+
84+
parserModeMu.Lock()
85+
initParserMode()
86+
parserModeMu.Unlock()
87+
88+
file, sourceAdj, indentAdj, err := parse(fset, filename, src, false)
89+
if err != nil {
90+
return nil, err
91+
}
92+
93+
file, err = rewriteFileContent(fset, file, opts.RewriteRules)
94+
if err != nil {
95+
return nil, err
96+
}
97+
98+
ast.SortImports(fset, file)
99+
100+
if opts.NeedSimplify {
101+
simplify(file)
102+
}
103+
104+
return format(fset, file, sourceAdj, indentAdj, src, printer.Config{Mode: printerMode, Tabwidth: tabWidth})
105+
}
106+
76107
func rewriteFileContent(fset *token.FileSet, file *ast.File, rewriteRules []RewriteRule) (*ast.File, error) {
77108
for _, rewriteRule := range rewriteRules {
78109
pattern, err := parseExpression(rewriteRule.Pattern, "pattern")

0 commit comments

Comments
 (0)