Add contextFile
This commit is contained in:
parent
2f95fdba2d
commit
c0c940156f
18
context.go
18
context.go
@ -35,16 +35,20 @@ func (self *Context) CreateFileFromReader(sourcePath string, reader io.Reader) (
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
file := &rawFile{
|
rf := &rawFile{
|
||||||
relPath: sourcePath,
|
relPath: sourcePath,
|
||||||
props: make(map[string]FileProp),
|
props: make(map[string]FileProp),
|
||||||
modTime: time.Now(),
|
modTime: time.Now(),
|
||||||
size: int64(len(data)),
|
size: int64(len(data)),
|
||||||
reader: bytes.NewReader(data),
|
reader: bytes.NewReader(data),
|
||||||
|
}
|
||||||
|
|
||||||
|
cf := &contextFile{
|
||||||
|
file: rf,
|
||||||
index: self.index,
|
index: self.index,
|
||||||
}
|
}
|
||||||
|
|
||||||
return file, nil
|
return cf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateFileFromAsset creates a new file instance from the provided file path.
|
// CreateFileFromAsset creates a new file instance from the provided file path.
|
||||||
@ -65,16 +69,20 @@ func (self *Context) CreateFileFromAsset(sourcePath, dataPath string) (File, err
|
|||||||
return nil, errors.New("assets must be files")
|
return nil, errors.New("assets must be files")
|
||||||
}
|
}
|
||||||
|
|
||||||
file := &rawFile{
|
rf := &rawFile{
|
||||||
relPath: sourcePath,
|
relPath: sourcePath,
|
||||||
props: make(map[string]FileProp),
|
props: make(map[string]FileProp),
|
||||||
modTime: info.ModTime(),
|
modTime: info.ModTime(),
|
||||||
size: info.Size(),
|
size: info.Size(),
|
||||||
dataPath: dataPath,
|
dataPath: dataPath,
|
||||||
|
}
|
||||||
|
|
||||||
|
cf := &contextFile{
|
||||||
|
file: rf,
|
||||||
index: self.index,
|
index: self.index,
|
||||||
}
|
}
|
||||||
|
|
||||||
return file, nil
|
return cf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DispatchFile causes the file to get passed to the next link in the chain.
|
// DispatchFile causes the file to get passed to the next link in the chain.
|
||||||
@ -90,7 +98,7 @@ func (self *Context) DispatchAndCacheFile(outputFile File, inputFiles ...File) {
|
|||||||
self.goldsmith.cache.storeFile(self, outputFile, inputFiles)
|
self.goldsmith.cache.storeFile(self, outputFile, inputFiles)
|
||||||
}
|
}
|
||||||
|
|
||||||
self.filesOut <- outputFile
|
self.DispatchFile(outputFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RetrieveCachedFile looks up file data (excluding the metadata), given an
|
// RetrieveCachedFile looks up file data (excluding the metadata), given an
|
||||||
|
79
context_file.go
Normal file
79
context_file.go
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
package goldsmith
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type contextFile struct {
|
||||||
|
file File
|
||||||
|
index int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Path() string {
|
||||||
|
return self.file.Path()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Dir() string {
|
||||||
|
return self.file.Dir()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Name() string {
|
||||||
|
return self.file.Name()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Ext() string {
|
||||||
|
return self.file.Ext()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Rename(path string) error {
|
||||||
|
return self.file.Rename(path)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Size() int64 {
|
||||||
|
return self.file.Size()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) ModTime() time.Time {
|
||||||
|
return self.file.ModTime()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Read(data []byte) (int, error) {
|
||||||
|
return self.file.Read(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) WriteTo(writer io.Writer) (int64, error) {
|
||||||
|
return self.file.WriteTo(writer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Seek(offset int64, whence int) (int64, error) {
|
||||||
|
return self.file.Seek(offset, whence)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) GoString() string {
|
||||||
|
return self.file.GoString()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) SetProp(name string, value FileProp) {
|
||||||
|
self.file.SetProp(name, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Prop(name string) (FileProp, bool) {
|
||||||
|
return self.file.Prop(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) PropOrDef(name string, valueDef FileProp) FileProp {
|
||||||
|
return self.file.PropOrDef(name, valueDef)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) Props() FileProps {
|
||||||
|
return self.file.Props()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) CopyProps(file File) {
|
||||||
|
self.file.CopyProps(file)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *contextFile) RemoveProp(name string) {
|
||||||
|
self.file.RemoveProp(name)
|
||||||
|
}
|
@ -8,8 +8,10 @@ type filterEntry struct {
|
|||||||
type filterStack []filterEntry
|
type filterStack []filterEntry
|
||||||
|
|
||||||
func (self *filterStack) accept(file File) bool {
|
func (self *filterStack) accept(file File) bool {
|
||||||
|
cf := file.(*contextFile)
|
||||||
|
|
||||||
for _, entry := range *self {
|
for _, entry := range *self {
|
||||||
if entry.index >= file.Index() && !entry.filter.Accept(file) {
|
if entry.index >= cf.index && !entry.filter.Accept(file) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,5 +62,4 @@ type File interface {
|
|||||||
RemoveProp(name string)
|
RemoveProp(name string)
|
||||||
|
|
||||||
GoString() string
|
GoString() string
|
||||||
Index() int
|
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,6 @@ type rawFile struct {
|
|||||||
|
|
||||||
dataPath string
|
dataPath string
|
||||||
reader *bytes.Reader
|
reader *bytes.Reader
|
||||||
|
|
||||||
index int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *rawFile) Path() string {
|
func (self *rawFile) Path() string {
|
||||||
@ -117,10 +115,6 @@ func (self *rawFile) RemoveProp(name string) {
|
|||||||
delete(self.props, name)
|
delete(self.props, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *rawFile) Index() int {
|
|
||||||
return self.index
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *rawFile) load() error {
|
func (self *rawFile) load() error {
|
||||||
if self.reader != nil {
|
if self.reader != nil {
|
||||||
return nil
|
return nil
|
Loading…
Reference in New Issue
Block a user