stash/vendor/github.com/gobuffalo/gogen/parsed_file.go

41 lines
707 B
Go

package gogen
import (
"go/ast"
"go/parser"
"go/token"
"io"
"strings"
"github.com/gobuffalo/genny"
"github.com/pkg/errors"
)
type ParsedFile struct {
File genny.File
FileSet *token.FileSet
Ast *ast.File
Lines []string
}
func ParseFileMode(gf genny.File, mode parser.Mode) (ParsedFile, error) {
pf := ParsedFile{
FileSet: token.NewFileSet(),
File: gf,
}
src := gf.String()
f, err := parser.ParseFile(pf.FileSet, gf.Name(), src, mode)
if err != nil && errors.Cause(err) != io.EOF {
return pf, errors.WithStack(err)
}
pf.Ast = f
pf.Lines = strings.Split(src, "\n")
return pf, nil
}
func ParseFile(gf genny.File) (ParsedFile, error) {
return ParseFileMode(gf, 0)
}