// Code generated by "esc"; DO NOT EDIT. package js import ( "bytes" "compress/gzip" "encoding/base64" "fmt" "io" "io/ioutil" "net/http" "os" "path" "sync" "time" ) type _escLocalFS struct{} var _escLocal _escLocalFS type _escStaticFS struct{} var _escStatic _escStaticFS type _escDirectory struct { fs http.FileSystem name string } type _escFile struct { compressed string size int64 modtime int64 local string isDir bool once sync.Once data []byte name string } func (_escLocalFS) Open(name string) (http.File, error) { f, present := _escData[path.Clean(name)] if !present { return nil, os.ErrNotExist } return os.Open(f.local) } func (_escStaticFS) prepare(name string) (*_escFile, error) { f, present := _escData[path.Clean(name)] if !present { return nil, os.ErrNotExist } var err error f.once.Do(func() { f.name = path.Base(name) if f.size == 0 { return } var gr *gzip.Reader b64 := base64.NewDecoder(base64.StdEncoding, bytes.NewBufferString(f.compressed)) gr, err = gzip.NewReader(b64) if err != nil { return } f.data, err = ioutil.ReadAll(gr) }) if err != nil { return nil, err } return f, nil } func (fs _escStaticFS) Open(name string) (http.File, error) { f, err := fs.prepare(name) if err != nil { return nil, err } return f.File() } func (dir _escDirectory) Open(name string) (http.File, error) { return dir.fs.Open(dir.name + name) } func (f *_escFile) File() (http.File, error) { type httpFile struct { *bytes.Reader *_escFile } return &httpFile{ Reader: bytes.NewReader(f.data), _escFile: f, }, nil } func (f *_escFile) Close() error { return nil } func (f *_escFile) Readdir(count int) ([]os.FileInfo, error) { if !f.isDir { return nil, fmt.Errorf(" escFile.Readdir: '%s' is not directory", f.name) } fis, ok := _escDirs[f.local] if !ok { return nil, fmt.Errorf(" escFile.Readdir: '%s' is directory, but we have no info about content of this dir, local=%s", f.name, f.local) } limit := count if count <= 0 || limit > len(fis) { limit = len(fis) } if len(fis) == 0 && count > 0 { return nil, io.EOF } return fis[0:limit], nil } func (f *_escFile) Stat() (os.FileInfo, error) { return f, nil } func (f *_escFile) Name() string { return f.name } func (f *_escFile) Size() int64 { return f.size } func (f *_escFile) Mode() os.FileMode { return 0 } func (f *_escFile) ModTime() time.Time { return time.Unix(f.modtime, 0) } func (f *_escFile) IsDir() bool { return f.isDir } func (f *_escFile) Sys() interface{} { return f } // _escFS returns a http.Filesystem for the embedded assets. If useLocal is true, // the filesystem's contents are instead used. func _escFS(useLocal bool) http.FileSystem { if useLocal { return _escLocal } return _escStatic } // _escDir returns a http.Filesystem for the embedded assets on a given prefix dir. // If useLocal is true, the filesystem's contents are instead used. func _escDir(useLocal bool, name string) http.FileSystem { if useLocal { return _escDirectory{fs: _escLocal, name: name} } return _escDirectory{fs: _escStatic, name: name} } // _escFSByte returns the named file from the embedded assets. If useLocal is // true, the filesystem's contents are instead used. func _escFSByte(useLocal bool, name string) ([]byte, error) { if useLocal { f, err := _escLocal.Open(name) if err != nil { return nil, err } b, err := ioutil.ReadAll(f) _ = f.Close() return b, err } f, err := _escStatic.prepare(name) if err != nil { return nil, err } return f.data, nil } // _escFSMustByte is the same as _escFSByte, but panics if name is not present. func _escFSMustByte(useLocal bool, name string) []byte { b, err := _escFSByte(useLocal, name) if err != nil { panic(err) } return b } // _escFSString is the string version of _escFSByte. func _escFSString(useLocal bool, name string) (string, error) { b, err := _escFSByte(useLocal, name) return string(b), err } // _escFSMustString is the string version of _escFSMustByte. func _escFSMustString(useLocal bool, name string) string { return string(_escFSMustByte(useLocal, name)) } var _escData = map[string]*_escFile{ "/helpers.js": { name: "helpers.js", local: "pkg/js/helpers.js", size: 22107, modtime: 0, compressed: ` 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 `, }, } var _escDirs = map[string][]os.FileInfo{}