astrewrite

Go tool to walk & rewrite AST

  • 所有者: fatih/astrewrite
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

This project is archived and not maintained. There is a better implementation
and solution in the
golang.org/x/tools/go/ast/astutil
package that you can use.

astrewrite GoDoc Build Status

astrewrite provides a Walk() function, similar to ast.Inspect() from the
ast package. The only difference is that the passed walk function can also
return a node, which is used to rewrite the parent node. This provides an easy
way to rewrite a given ast.Node while walking the AST.

Example

package main

import (
	"bytes"
	"fmt"
	"go/ast"
	"go/parser"
	"go/printer"
	"go/token"

	"github.com/fatih/astrewrite"
)

func main() {
	src := `package main

type Foo struct{}`

	fset := token.NewFileSet()
	file, err := parser.ParseFile(fset, "foo.go", src, parser.ParseComments)
	if err != nil {
		panic(err)
	}

	rewriteFunc := func(n ast.Node) (ast.Node, bool) {
		x, ok := n.(*ast.TypeSpec)
		if !ok {
			return n, true
		}

		// change struct type name to "Bar"
		x.Name.Name = "Bar"
		return x, true
	}

	rewritten := astrewrite.Walk(file, rewriteFunc)

	var buf bytes.Buffer
	printer.Fprint(&buf, fset, rewritten)
	fmt.Println(buf.String())
	// Output:
	// package main
	//
	// type Bar struct{}
}

主要指標

概覽
名稱與所有者fatih/astrewrite
主編程語言Go
編程語言Go (語言數: 1)
平台
許可證MIT License
所有者活动
創建於2017-01-10 08:36:47
推送於2019-12-07 15:40:17
最后一次提交2019-12-07 07:40:02
發布數0
用户参与
星數170
關注者數6
派生數13
提交數7
已啟用問題?
問題數2
打開的問題數0
拉請求數0
打開的拉請求數0
關閉的拉請求數1
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?