英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论