本文整理匯總了Golang中github.com/FooSoft/goldsmith.File類的典型用法代碼示例。如果您正苦於以下問題:Golang File類的具體用法?Golang File怎麽用?Golang File使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了File類的11個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: 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
}
示例2: 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
}
示例3: Process
func (c *collection) Process(ctx goldsmith.Context, f goldsmith.File) error {
c.mtx.Lock()
defer func() {
f.SetValue(c.groupsKey, c.groups)
c.files = append(c.files, f)
c.mtx.Unlock()
}()
coll, ok := f.Value(c.collKey)
if !ok {
return nil
}
var collStrs []string
switch t := coll.(type) {
case string:
collStrs = append(collStrs, t)
case []string:
collStrs = append(collStrs, t...)
}
for _, collStr := range collStrs {
files, _ := c.groups[collStr]
files = append(files, f)
c.groups[collStr] = files
}
return nil
}
示例4: Process
func (t *breadcrumbs) Process(ctx goldsmith.Context, f goldsmith.File) error {
var parentNameStr string
if parentName, ok := f.Value(t.parentKey); ok {
parentNameStr, _ = parentName.(string)
}
var nodeNameStr string
if nodeName, ok := f.Value(t.nameKey); ok {
nodeNameStr, _ = nodeName.(string)
}
t.mtx.Lock()
defer t.mtx.Unlock()
node := &bcNode{File: f, parentName: parentNameStr}
t.allNodes = append(t.allNodes, node)
if len(nodeNameStr) > 0 {
if _, ok := t.namedNodes[nodeNameStr]; ok {
return fmt.Errorf("duplicate node: %s", nodeNameStr)
}
t.namedNodes[nodeNameStr] = node
}
return nil
}
示例5: 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
}
示例6: 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
}
示例7: 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
}
示例8: 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
}
示例9: Process
func (t *tags) Process(ctx goldsmith.Context, f goldsmith.File) error {
tagState := &tagState{Info: t.info}
t.mtx.Lock()
defer func() {
f.SetValue(t.stateKey, tagState)
t.files = append(t.files, f)
t.mtx.Unlock()
}()
tags, ok := f.Value(t.tagsKey)
if !ok {
return nil
}
tagsArr, ok := tags.([]interface{})
if !ok {
return nil
}
for _, tag := range tagsArr {
tagStr, ok := tag.(string)
if !ok {
continue
}
tagState.Tags = append(tagState.Tags, tagStr)
item, ok := t.info[tagStr]
item.Files = append(item.Files, f)
if !ok {
item.SafeName = safeTag(tagStr)
item.RawName = tagStr
item.Path = t.tagPagePath(tagStr)
}
t.info[tagStr] = item
}
sort.Strings(tagState.Tags)
return nil
}
示例10: 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
}
示例11: 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
}