Jekyll/Webrick 中带下划线的目录是如何过滤的?
How underscored directories are filtered in Jekyll/Webrick?
更新:检查下面我的回答。
我刚刚意识到在 Jekyll Webrick 服务器中,以 下划线(_includes、_layouts 等) 开头的目录无法访问,并且在 jekyll serve --show-dir-listing
时不会列出选项已打开。我想知道 Jekyll 是怎么做到的,因为 Webricks 默认显示带下划线的目录。我在source code中快速搜索,我检查了lib/jekyll/commands/serve.rb
和类似的文件,但找不到确切原因。这可能与 fancy_listing?
有关
示例:
它在那里!:
更新:在jekyll/reader.rb
找到了相关代码,其中有一个filter函数,在jekyll/entry_filter.rb
中定义! :) 这是代码:
- 首先定义一个正则表达式:
SPECIAL_LEADING_CHAR_REGEX = %r!\A#{Regexp.union([".", "_", "#", "~"])}!o.freeze
- 然后
special?
函数定义:
def special?(entry)
SPECIAL_LEADING_CHAR_REGEX.match?(entry) ||
SPECIAL_LEADING_CHAR_REGEX.match?(File.basename(entry))
end
并且special?
filter函数中使用了filter函数来检测和过滤匹配regex的文件。
而Reader
class也在很多地方使用了这个过滤功能。
老实说,我仍然不明白 jekyll 是如何将这些东西组合在一起的,但我想我会尝试自己弄清楚它们。
更新:检查下面我的回答。
我刚刚意识到在 Jekyll Webrick 服务器中,以 下划线(_includes、_layouts 等) 开头的目录无法访问,并且在 jekyll serve --show-dir-listing
时不会列出选项已打开。我想知道 Jekyll 是怎么做到的,因为 Webricks 默认显示带下划线的目录。我在source code中快速搜索,我检查了lib/jekyll/commands/serve.rb
和类似的文件,但找不到确切原因。这可能与 fancy_listing?
示例:
更新:在jekyll/reader.rb
找到了相关代码,其中有一个filter函数,在jekyll/entry_filter.rb
中定义! :) 这是代码:
- 首先定义一个正则表达式:
SPECIAL_LEADING_CHAR_REGEX = %r!\A#{Regexp.union([".", "_", "#", "~"])}!o.freeze
- 然后
special?
函数定义:
def special?(entry)
SPECIAL_LEADING_CHAR_REGEX.match?(entry) ||
SPECIAL_LEADING_CHAR_REGEX.match?(File.basename(entry))
end
并且
special?
filter函数中使用了filter函数来检测和过滤匹配regex的文件。而
Reader
class也在很多地方使用了这个过滤功能。老实说,我仍然不明白 jekyll 是如何将这些东西组合在一起的,但我想我会尝试自己弄清楚它们。