From: Eric Wong <e@80x24.org>
To: yahns-public@yhbt.net
Subject: [PATCH] extras/autoindex: support hiding dotfiles
Date: Sun, 14 Feb 2016 22:02:12 +0000 [thread overview]
Message-ID: <20160214220212.GA24974@dcvr.yhbt.net> (raw)
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.
---
| 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
--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
reply other threads:[~2016-02-14 22:02 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://yhbt.net/yahns/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160214220212.GA24974@dcvr.yhbt.net \
--to=e@80x24.org \
--cc=yahns-public@yhbt.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhbt.net/yahns.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).