Skip to content

Commit

Permalink
go-aah/aah#156 vfs support added into forge
Browse files Browse the repository at this point in the history
  • Loading branch information
jeevatkm committed May 12, 2018
1 parent 8c62c00 commit 2a1d37d
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 18 deletions.
2 changes: 1 addition & 1 deletion benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func BenchmarkParseReader(b *testing.B) {

func BenchmarkParseFile(b *testing.B) {
for i := 0; i < b.N; i++ {
_, err := forge.ParseFile("./test.cfg")
_, err := forge.ParseFile(nil, "./test.cfg")
if err != nil {
b.Fatal(err)
}
Expand Down
4 changes: 2 additions & 2 deletions example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (

func Example() {
// Parse a `SectionValue` from `example.cfg`
settings, err := forge.ParseFile("example.cfg")
settings, err := forge.ParseFile(nil, "example.cfg")
if err != nil {
panic(err)
}
Expand Down Expand Up @@ -41,7 +41,7 @@ func Example() {

func ExampleParseFile() {
// Parse a `SectionValue` from `example.cfg`
settings, err := forge.ParseFile("example.cfg")
settings, err := forge.ParseFile(nil, "example.cfg")
if err != nil {
panic(err)
}
Expand Down
14 changes: 8 additions & 6 deletions forge.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,12 @@ import (
"bytes"
"io"
"strings"

"aahframework.org/vfs.v0"
)

// Version represent current release version of forge.
var Version = "0.4.4"
var Version = "0.5"

// ParseBytes takes a []byte representation of the config file, parses it
// and responds with `*Section` and potentially an `error` if it cannot
Expand All @@ -115,11 +117,11 @@ func ParseBytes(data []byte) (*Section, error) {
return ParseReader(bytes.NewReader(data))
}

// ParseFile takes a string filename for the config file, parses it
// VFSParseFile takes a vfs and filename for the config file, parses it
// and responds with `*Section` and potentially an `error` if it cannot
// properly parse the configf
func ParseFile(filename string) (*Section, error) {
parser, err := NewFileParser(filename)
// properly parse the config
func ParseFile(fs *vfs.VFS, filename string) (*Section, error) {
parser, err := NewFileParser(fs, filename)
if err != nil {
return nil, err
}
Expand All @@ -135,7 +137,7 @@ func ParseFile(filename string) (*Section, error) {
// and responds with `*Section` and potentially an `error` if it cannot
// properly parse the config
func ParseReader(reader io.Reader) (*Section, error) {
parser := NewParser(reader)
parser := NewParser(nil, reader)
err := parser.Parse()
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion forge_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ func TestParseReader(t *testing.T) {
}

func TestParseFile(t *testing.T) {
settings, err := forge.ParseFile("./test.cfg")
settings, err := forge.ParseFile(nil, "./test.cfg")
if err != nil {
t.Fatal(err)
}
Expand Down
21 changes: 13 additions & 8 deletions parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"strconv"

"aahframework.org/forge.v0/token"
"aahframework.org/vfs.v0"
)

func isSemicolonOrNewline(id token.TokenID) bool {
Expand All @@ -17,6 +18,7 @@ func isSemicolonOrNewline(id token.TokenID) bool {

// Parser is a struct to hold data necessary for parsing a config from a scanner
type Parser struct {
vfs *vfs.VFS
files []string
settings *Section
scanner *Scanner
Expand All @@ -25,10 +27,12 @@ type Parser struct {
previous []*Section
}

// NewParser will create and initialize a new Parser from a provided io.Reader
func NewParser(reader io.Reader) *Parser {
// NewParser will create and initialize a new Parser from a
// provided vfs and io.Reader
func NewParser(vfs *vfs.VFS, reader io.Reader) *Parser {
settings := NewSection()
return &Parser{
vfs: vfs,
files: make([]string, 0),
scanner: NewScanner(reader),
settings: settings,
Expand All @@ -37,13 +41,14 @@ func NewParser(reader io.Reader) *Parser {
}
}

// NewFileParser will create and initialize a new Parser from a provided from a filename string
func NewFileParser(filename string) (*Parser, error) {
reader, err := os.Open(filename)
// NewFileParser will create and initialize a new Parser from a
// provided vfs and filename
func NewFileParser(fs *vfs.VFS, filename string) (*Parser, error) {
reader, err := vfs.Open(fs, filename)
if err != nil {
return nil, err
}
parser := NewParser(reader)
parser := NewParser(fs, reader)
parser.addFile(filename)
return parser, nil
}
Expand Down Expand Up @@ -242,7 +247,7 @@ func (parser *Parser) parseInclude() error {
pattern = filepath.Join(filepath.Dir(parser.files[0]), filepath.Clean(pattern))
}

filenames, err := filepath.Glob(pattern)
filenames, err := vfs.Glob(parser.vfs, pattern)
if err != nil {
return err
}
Expand All @@ -253,7 +258,7 @@ func (parser *Parser) parseInclude() error {
if parser.hasParsed(filename) {
continue
}
reader, err := os.Open(filename)
reader, err := vfs.Open(parser.vfs, filename)
if err != nil {
return err
}
Expand Down

0 comments on commit 2a1d37d

Please sign in to comment.