ParseGlob:如何递归解析目录中的所有模板的模式?

huangapple go评论86阅读模式
英文:

ParseGlob: What is the pattern to parse all templates recursively within a directory?

问题

Template.ParseGlob(".html") //从当前目录中获取所有的html文件。
Template.ParseGlob("**/
.html") //似乎只能获取一层深度的文件。

我不是在寻找一个"Walk"的解决方案。只是想知道这是否可能。我不太理解这个函数期望的"pattern"是什么。如果我能得到关于ParseGlob使用的模式的解释,那就太好了。

英文:
Template.ParseGlob("*.html") //fetches all html files from current directory.
Template.ParseGlob("**/*.html") //Seems to only fetch at one level depth

Im not looking for a "Walk" solution. Just want to know if this is possible. I don't quite understand what "pattern" this expects. if i can get an explanation about the pattern used by ParseGlob that would be great too.

答案1

得分: 6

code text/template/helper.go中提到:

// 该模式将由filepath.Glob处理,并且必须匹配至少一个文件。

filepath.Glob()指出“模式的语法与Match相同”。

如果名称与shell文件名模式匹配,则Match返回true。

Match()的实现似乎没有将'**'视为不同,只将'*'视为匹配任何非分隔符字符的序列。
这意味着'**'等同于'*',这也解释了为什么匹配只在一级深度有效。

英文:

The code text/template/helper.go mentions

 // The pattern is processed by filepath.Glob and must match at least one file.

filepath.Glob() says that "the syntax of patterns is the same as in Match"

> Match returns true if name matches the shell file name pattern.

The implementation of Match() doesn't seem to treat '**' differently, and only consider '*' as matching any sequence of non-Separator characters.
That would mean '**' is equivalent to '*', which in turn would explain why the match works at one level depth only.

答案2

得分: 2

所以,由于ParseGlob无法递归加载模板,我们必须使用path/filepath.Walk函数。但是这种方式提供了更多的机会。

https://gist.github.com/logrusorgru/abd846adb521a6fb39c7405f32fec0cf

英文:

So, since the ParseGlob can't load templates recursively we have to use path/filepath.Walk function. But this way gives more opportunities.

https://gist.github.com/logrusorgru/abd846adb521a6fb39c7405f32fec0cf

huangapple
  • 本文由 发表于 2014年9月9日 21:19:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/25745701.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定