[前][次][番号順一覧][スレッド一覧]

ruby-changes:28810

From: nobu <ko1@a...>
Date: Mon, 20 May 2013 22:42:57 +0900 (JST)
Subject: [ruby-changes:28810] nobu:r40862 (trunk): * lib/webrick/httpservlet/filehandler.rb (set_dir_list): add NameWidth option.

nobu	2013-05-20 22:41:21 +0900 (Mon, 20 May 2013)

  New Revision: 40862

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=40862

  Log:
    * lib/webrick/httpservlet/filehandler.rb (set_dir_list): add NameWidth option.

  Modified files:
    trunk/lib/webrick/httpservlet/filehandler.rb

Index: lib/webrick/httpservlet/filehandler.rb
===================================================================
--- lib/webrick/httpservlet/filehandler.rb	(revision 40861)
+++ lib/webrick/httpservlet/filehandler.rb	(revision 40862)
@@ -424,11 +424,18 @@ module WEBrick https://github.com/ruby/ruby/blob/trunk/lib/webrick/httpservlet/filehandler.rb#L424
         }
         list.compact!
 
-        if    d0 = req.query["N"]; idx = 0
-        elsif d0 = req.query["M"]; idx = 1
-        elsif d0 = req.query["S"]; idx = 2
-        else  d0 = "A"           ; idx = 0
+        query = req.query
+
+        d0 = nil
+        idx = nil
+        %w[N M S].each_with_index do |q, i|
+          if d = query.delete(q)
+            idx ||= i
+            d0 ||= d
+          end
         end
+        d0 ||= "A"
+        idx ||= 0
         d1 = (d0 == "A") ? "D" : "A"
 
         if d0 == "A"
@@ -437,6 +444,14 @@ module WEBrick https://github.com/ruby/ruby/blob/trunk/lib/webrick/httpservlet/filehandler.rb#L444
           list.sort!{|a,b| b[idx] <=> a[idx] }
         end
 
+        namewidth = query["NameWidth"]
+        if namewidth == "*"
+          namewidth = nil
+        elsif !namewidth or (namewidth = namewidth.to_i) < 2
+          namewidth = 25
+        end
+        query = query.inject('') {|s, (k, v)| s << '&' << HTMLUtils::escape("#{k}=#{v}")}
+
         type = "text/html"
         case enc = Encoding.find('filesystem')
         when Encoding::US_ASCII, Encoding::ASCII_8BIT
@@ -455,6 +470,7 @@ module WEBrick https://github.com/ruby/ruby/blob/trunk/lib/webrick/httpservlet/filehandler.rb#L470
     <!--
     .name, .mtime { text-align: left; }
     .size { text-align: right; }
+    td { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }
     table { border-collapse: collapse; }
     tr th { border-bottom: 2px groove; }
     //-->
@@ -465,9 +481,9 @@ module WEBrick https://github.com/ruby/ruby/blob/trunk/lib/webrick/httpservlet/filehandler.rb#L481
         _end_of_html_
 
         res.body << "<TABLE width=\"100%\"><THEAD><TR>\n"
-        res.body << "<TH class=\"name\"><A HREF=\"?N=#{d1}\">Name</A></TH>"
-        res.body << "<TH class=\"mtime\"><A HREF=\"?M=#{d1}\">Last modified</A></TH>"
-        res.body << "<TH class=\"size\"><A HREF=\"?S=#{d1}\">Size</A></TH>\n"
+        res.body << "<TH class=\"name\"><A HREF=\"?N=#{d1}#{query}\">Name</A></TH>"
+        res.body << "<TH class=\"mtime\"><A HREF=\"?M=#{d1}#{query}\">Last modified</A></TH>"
+        res.body << "<TH class=\"size\"><A HREF=\"?S=#{d1}#{query}\">Size</A></TH>\n"
         res.body << "</TR></THEAD>\n"
         res.body << "<TBODY>\n"
 
@@ -475,8 +491,10 @@ module WEBrick https://github.com/ruby/ruby/blob/trunk/lib/webrick/httpservlet/filehandler.rb#L491
         list.each{ |name, time, size|
           if name == ".."
             dname = "Parent Directory"
+          elsif namewidth and name.size > namewidth
+            dname = name[0...(namewidth - 2)] << '..'
           else
-            dname = name[0...23] << '..'
+            dname = name
           end
           s =  "<TR><TD class=\"name\"><A HREF=\"#{HTTPUtils::escape(name)}\">#{HTMLUtils::escape(dname)}</A></TD>"
           s << "<TD class=\"mtime\">" << (time ? time.strftime("%Y/%m/%d %H:%M") : "") << "</TD>"

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]