Switch option initialization to using a keyword hash
since yet-another boolean is too much.
Using kwargs won't work under Ruby 1.9.3 which we still
support (for now).
Note: being a part of extras/, there's no API stability
guarantees but this should've maintained it.
---
extras/autoindex.rb | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/extras/autoindex.rb b/extras/autoindex.rb
index e84aa7b..4deb3ef 100644
--- a/extras/autoindex.rb
+++ b/extras/autoindex.rb
@@ -14,13 +14,29 @@ class Autoindex
FN = %{<a href="%s">%s</a>}
TFMT = "%Y-%m-%d %H:%M"
- def initialize(app, index = %w(index.html), skip_gzip_static = true)
+ def initialize(app, *args)
app.respond_to?(:root) or raise ArgumentError,
- "wrapped app #{app.inspect} does not respond to :root"
+ "wrapped app #{app.inspect} does not respond to #root"
@app = app
@root = app.root
- @index = index
- @skip_gz = skip_gzip_static
+
+ @index = case args[0]
+ when Array then args.shift
+ when String then Array(args.shift)
+ else
+ %w(index.html)
+ end
+
+ @skip_gzip_static = @skip_dotfiles = nil
+ case args[0]
+ when Hash
+ @skip_gzip_static = args[0][:skip_gzip_static]
+ @skip_dotfiles = args[0][:skip_dotfiles]
+ when true, false
+ @skip_gzip_static = args.shift
+ end
+ @skip_gzip_static = true if @skip_gzip_static.nil?
+ @skip_dotfiles = false if @skip_dotfiles.nil?
end
def redirect_slash(env)
@@ -69,13 +85,15 @@ def call(env)
# generate the index, show directories first
dirs = []
files = []
- ngz_idx = {} if @skip_gz # used to avoid redundant stat()
+ ngz_idx = {} if @skip_gzip_static # used to avoid redundant stat()
dir.each do |base|
case base
when "."
next
when ".."
next if path_info == "/"
+ when /\A\./
+ next if @skip_dotfiles
end
begin
--
EW
--
unsubscribe: [email protected]
archive: http://yhbt.net/yahns-public/