diff options
Diffstat (limited to 'doc/codelab/wiki/srcextract.go')
| -rw-r--r-- | doc/codelab/wiki/srcextract.go | 72 | 
1 files changed, 0 insertions, 72 deletions
| diff --git a/doc/codelab/wiki/srcextract.go b/doc/codelab/wiki/srcextract.go deleted file mode 100644 index 67294784e..000000000 --- a/doc/codelab/wiki/srcextract.go +++ /dev/null @@ -1,72 +0,0 @@ -package main - -import ( -	"bytes" -	"flag" -	"go/parser" -	"go/printer" -	"go/ast" -	"go/token" -	"log" -	"os" -	"template" -) - -var ( -	srcFn   = flag.String("src", "", "source filename") -	getName = flag.String("name", "", "func/type name to output") -	html    = flag.Bool("html", true, "output HTML") -	showPkg = flag.Bool("pkg", false, "show package in output") -) - -func main() { -	// handle input -	flag.Parse() -	if *srcFn == "" || *getName == "" { -		flag.Usage() -		os.Exit(2) -	} -	// load file -	fs := token.NewFileSet() -	file, err := parser.ParseFile(fs, *srcFn, nil, 0) -	if err != nil { -		log.Fatal(err) -	} -	// create filter -	filter := func(name string) bool { -		return name == *getName -	} -	// filter -	if !ast.FilterFile(file, filter) { -		os.Exit(1) -	} -	// print the AST -	var b bytes.Buffer -	printer.Fprint(&b, fs, file) -	// drop package declaration -	if !*showPkg { -		for { -			c, err := b.ReadByte() -			if c == '\n' || err != nil { -				break -			} -		} -	} -	// drop leading newlines -	for { -		b, err := b.ReadByte() -		if err != nil { -			break -		} -		if b != '\n' { -			os.Stdout.Write([]byte{b}) -			break -		} -	} -	// output -	if *html { -		template.HTMLEscape(os.Stdout, b.Bytes()) -	} else { -		b.WriteTo(os.Stdout) -	} -} | 
