本文整理汇总了Golang中github.com/FooSoft/goldsmith.Context.DispatchFile方法的典型用法代码示例。如果您正苦于以下问题:Golang Context.DispatchFile方法的具体用法?Golang Context.DispatchFile怎么用?Golang Context.DispatchFile使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/FooSoft/goldsmith.Context
的用法示例。
在下文中一共展示了Context.DispatchFile方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Process
func (t *thumbnail) Process(ctx goldsmith.Context, f goldsmith.File) error {
defer ctx.DispatchFile(f)
thumbPath, create := t.thumbName(f.Path())
if !create {
return nil
}
var (
fn goldsmith.File
err error
)
if cached(ctx, f.Path(), thumbPath) {
thumbPathDst := filepath.Join(ctx.DstDir(), thumbPath)
fn, err = goldsmith.NewFileFromAsset(thumbPath, thumbPathDst)
if err != nil {
return err
}
} else {
var err error
fn, err = t.thumbnail(f, thumbPath)
if err != nil {
return err
}
}
ctx.DispatchFile(fn)
return nil
}
示例2: Initialize
func (i *include) Initialize(ctx goldsmith.Context) error {
var paths []string
err := filepath.Walk(i.src, func(path string, info os.FileInfo, err error) error {
if err == nil && !info.IsDir() {
paths = append(paths, path)
}
return err
})
if err != nil {
return err
}
for _, path := range paths {
srcRelPath, err := filepath.Rel(i.src, path)
if err != nil {
panic(err)
}
dstRelPath := filepath.Join(i.dst, srcRelPath)
f, err := goldsmith.NewFileFromAsset(dstRelPath, path)
if err != nil {
return err
}
ctx.DispatchFile(f)
}
return nil
}
示例3: Process
func (*minify) Process(ctx goldsmith.Context, f goldsmith.File) error {
var (
buff bytes.Buffer
err error
)
switch m := min.New(); filepath.Ext(f.Path()) {
case ".css":
err = css.Minify(m, &buff, f, nil)
case ".html", ".htm":
err = html.Minify(m, &buff, f, nil)
case ".js":
err = js.Minify(m, &buff, f, nil)
case ".json":
err = json.Minify(m, &buff, f, nil)
case ".svg":
err = svg.Minify(m, &buff, f, nil)
case ".xml":
err = xml.Minify(m, &buff, f, nil)
}
if err != nil {
return err
}
nf := goldsmith.NewFileFromData(f.Path(), buff.Bytes())
nf.CopyValues(f)
ctx.DispatchFile(nf)
return nil
}
示例4: Finalize
func (t *breadcrumbs) Finalize(ctx goldsmith.Context) error {
for _, n := range t.allNodes {
if len(n.parentName) == 0 {
continue
}
if parent, ok := t.namedNodes[n.parentName]; ok {
parent.Children = append(parent.Children, n)
n.Parent = parent
} else {
return fmt.Errorf("undefined parent: %s", n.parentName)
}
}
for _, n := range t.allNodes {
var ancestors []*bcNode
for c := n.Parent; c != nil; c = c.Parent {
ancestors = append([]*bcNode{c}, ancestors...)
}
n.File.SetValue(t.crumbsKey, bcInfo{ancestors, n})
ctx.DispatchFile(n.File)
}
return nil
}
示例5: Finalize
func (c *collection) Finalize(ctx goldsmith.Context) error {
for _, files := range c.groups {
fg := &fileGroup{files, c.comp}
sort.Sort(fg)
}
for _, f := range c.files {
ctx.DispatchFile(f)
}
return nil
}
示例6: Process
func (*frontmatter) Process(ctx goldsmith.Context, f goldsmith.File) error {
meta, body, err := fm.Parse(f)
if err != nil {
return err
}
nf := goldsmith.NewFileFromData(f.Path(), body.Bytes())
nf.CopyValues(f)
for name, value := range meta {
nf.SetValue(name, value)
}
ctx.DispatchFile(nf)
return nil
}
示例7: Finalize
func (t *tags) Finalize(ctx goldsmith.Context) error {
for _, meta := range t.info {
sort.Sort(meta.Files)
}
if t.indexMeta != nil {
for _, f := range t.buildPages(ctx, t.info) {
ctx.DispatchFile(f)
}
}
for _, f := range t.files {
ctx.DispatchFile(f)
}
return nil
}
示例8: Process
func (l *livejs) Process(ctx goldsmith.Context, f goldsmith.File) error {
doc, err := goquery.NewDocumentFromReader(f)
if err != nil {
return err
}
doc.Find("body").AppendHtml(l.js)
html, err := doc.Html()
if err != nil {
return err
}
nf := goldsmith.NewFileFromData(f.Path(), []byte(html))
ctx.DispatchFile(nf)
return nil
}
示例9: Finalize
func (idx *index) Finalize(ctx goldsmith.Context) error {
for name, summary := range idx.dirs {
sort.Sort(summary.entries)
f := summary.index
if f == nil {
f = goldsmith.NewFileFromData(path.Join(name, idx.filename), make([]byte, 0))
for name, value := range idx.meta {
f.SetValue(name, value)
}
}
f.SetValue(idx.filesKey, summary.entries)
ctx.DispatchFile(f)
}
return nil
}
示例10: Process
func (lay *layout) Process(ctx goldsmith.Context, f goldsmith.File) error {
var buff bytes.Buffer
if _, err := buff.ReadFrom(f); err != nil {
return err
}
if _, ok := f.Value(lay.layoutKey); ok {
f.SetValue(lay.contentKey, template.HTML(buff.Bytes()))
lay.filesMtx.Lock()
lay.files = append(lay.files, f)
lay.filesMtx.Unlock()
} else {
ctx.DispatchFile(f)
}
return nil
}
示例11: Process
func (idx *index) Process(ctx goldsmith.Context, f goldsmith.File) error {
idx.dirsMtx.Lock()
defer idx.dirsMtx.Unlock()
curr := f.Path()
leaf := true
for {
if handled, _ := idx.handled[curr]; handled {
break
}
idx.handled[curr] = true
dir := path.Dir(curr)
base := path.Base(curr)
summary, ok := idx.dirs[dir]
if !ok {
summary = new(dirSummary)
idx.dirs[dir] = summary
}
if leaf {
if base == idx.filename {
summary.index = f
} else {
ctx.DispatchFile(f)
}
}
entry := DirEntry{Name: base, Path: curr, IsDir: !leaf, File: f}
summary.entries = append(summary.entries, entry)
if dir == "." {
break
}
curr = dir
leaf = false
}
return nil
}
示例12: Process
func (m *markdown) Process(ctx goldsmith.Context, f goldsmith.File) error {
var buff bytes.Buffer
if _, err := buff.ReadFrom(f); err != nil {
return err
}
var data []byte
switch m.mdType {
case mdCommon:
data = blackfriday.MarkdownCommon(buff.Bytes())
case mdBasic:
data = blackfriday.MarkdownBasic(buff.Bytes())
}
name := strings.TrimSuffix(f.Path(), path.Ext(f.Path())) + ".html"
nf := goldsmith.NewFileFromData(name, data)
nf.CopyValues(f)
ctx.DispatchFile(nf)
return nil
}
示例13: Finalize
func (lay *layout) Finalize(ctx goldsmith.Context) error {
for _, f := range lay.files {
name, ok := f.Value(lay.layoutKey)
if !ok {
ctx.DispatchFile(f)
continue
}
nameStr, ok := name.(string)
if !ok {
ctx.DispatchFile(f)
continue
}
var buff bytes.Buffer
if err := lay.tmpl.ExecuteTemplate(&buff, nameStr, f); err != nil {
return err
}
nf := goldsmith.NewFileFromData(f.Path(), buff.Bytes())
nf.CopyValues(f)
ctx.DispatchFile(nf)
}
return nil
}
示例14: Process
func (a *abs) Process(ctx goldsmith.Context, f goldsmith.File) error {
doc, err := goquery.NewDocumentFromReader(f)
if err != nil {
return err
}
for _, attr := range a.attrs {
path := fmt.Sprintf("*[%s]", attr)
doc.Find(path).Each(func(index int, sel *goquery.Selection) {
baseUrl, err := url.Parse(f.Path())
val, _ := sel.Attr(attr)
currUrl, err := url.Parse(val)
if err != nil || currUrl.IsAbs() {
return
}
currUrl = baseUrl.ResolveReference(currUrl)
if a.baseUrl != nil {
currUrl = a.baseUrl.ResolveReference(currUrl)
}
sel.SetAttr(attr, currUrl.String())
})
}
html, err := doc.Html()
if err != nil {
return err
}
nf := goldsmith.NewFileFromData(f.Path(), []byte(html))
nf.CopyValues(f)
ctx.DispatchFile(nf)
return nil
}