directory_listing 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/sinatra/directory_listing.rb +50 -52
  2. metadata +4 -3
@@ -44,7 +44,7 @@ require 'uri'
44
44
  #
45
45
  # stylesheet # a stylesheet that will be added to the <head> of the generated directory listing
46
46
  # readme # an HTML string that will be appended at the footer of the generated directory listing
47
- # should_list_invisibles # whether the directory listing should include invisibles (dotfiles) - "yes" or "no"
47
+ # should_list_invisibles # whether the directory listing should include invisibles (dotfiles) - "yes" or "no", defaults to "no"
48
48
  # last_modified_format # format for last modified date (http://www.ruby-doc.org/core-2.0/Time.html) - defaults to "%Y-%m-%d %H:%M:%S"
49
49
  # filename_truncate_length # (integer) length to truncate file names to - defaults to 40
50
50
  #
@@ -73,6 +73,49 @@ require 'uri'
73
73
  module Sinatra
74
74
  module Directory_listing
75
75
 
76
+ def list(o={})
77
+ options = {
78
+ :should_list_invisibles => "no",
79
+ :last_modified_format => "%Y-%m-%d %H:%M:%S",
80
+ :filename_truncate_length => 40,
81
+ :stylesheet => "",
82
+ :readme => ""
83
+ }.merge(o)
84
+
85
+ $should_list_invisibles = options[:should_list_invisibles]
86
+ $last_modified_format = options[:last_modified_format]
87
+ $filename_truncate_length = options[:filename_truncate_length]
88
+
89
+ html = "<html>\n<head>\n"
90
+ html << "<title>Index of #{URI.unescape(request.path)}</title>\n"
91
+ html << "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>\n"
92
+ if options[:stylesheet]
93
+ html << "<link rel=\"stylesheet\" type=\"text/css\" href=\"/#{options[:stylesheet].sub(/^[\/]*/,"")}\">\n"
94
+ end
95
+ html << "</head>\n<body>\n"
96
+ html << "<h1>Index of #{URI.unescape(request.path)}</h1>\n"
97
+ if URI.unescape(request.path) != "/"
98
+ html << "<a href='#{Pathname.new(URI.unescape(request.path)).parent}'>&larr; Parent directory</a><br><br>"
99
+ else
100
+ html << "<a>Root directory</a><br><br>"
101
+ end
102
+ html << "<table>\n"
103
+ html << "\t<tr>\n\t\t<th>File</th>\n\t\t<th>Last modified</th>\n\t\t<th>Size</th>\n\t</tr>\n"
104
+ files = Array.new
105
+ Dir.foreach(File.join(settings.public_folder, URI.unescape(request.path)), &files.method(:push))
106
+ if files == [".", ".."]
107
+ html << "\t<tr>\n\t\t<th>No files.</th>\n\t\t<th>-</th>\n\t\t<th>-</th>\n\t</tr>"
108
+ else
109
+ files.sort.each do |file|
110
+ html << self.wrap(file)
111
+ end
112
+ end
113
+ html << "\n</table>\n"
114
+ html << "<br>\n#{options[:readme]}\n" if options[:readme]
115
+ html << "</body>\n</html>\n"
116
+ html
117
+ end
118
+
76
119
  def m_time(file)
77
120
  f = File.join(File.join(settings.public_folder, URI.unescape(request.fullpath)), file)
78
121
  "\t<td>#{File.mtime(f).strftime $last_modified_format}</td>"
@@ -110,64 +153,19 @@ module Sinatra
110
153
  html = ""
111
154
  if $should_list_invisibles == "yes"
112
155
  html << "\n\t<tr>
113
- #{name(file)}
114
- #{m_time(file)}
115
- #{size(file)}\n\t</tr>"
156
+ #{self.name(file)}
157
+ #{self.m_time(file)}
158
+ #{self.size(file)}\n\t</tr>"
116
159
  else
117
160
  if file[0] != "."
118
161
  html << "\n\t<tr>
119
- #{name(file)}
120
- #{m_time(file)}
121
- #{size(file)}\n\t</tr>"
162
+ #{self.name(file)}
163
+ #{self.m_time(file)}
164
+ #{self.size(file)}\n\t</tr>"
122
165
  end
123
166
  end
124
167
  html
125
168
  end
126
-
127
- def list(o={})
128
- options = {
129
- :should_list_invisibles => "no",
130
- :last_modified_format => "%Y-%m-%d %H:%M:%S",
131
- :filename_truncate_length => 40,
132
- :stylesheet => "",
133
- :readme => ""
134
- }.merge(o)
135
-
136
- $should_list_invisibles = options[:should_list_invisibles]
137
- $last_modified_format = options[:last_modified_format]
138
- $filename_truncate_length = options[:filename_truncate_length]
139
-
140
- html = "<html>\n<head>\n"
141
- html << "<title>Index of #{URI.unescape(request.path)}</title>\n"
142
- html << "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>\n"
143
- if options[:stylesheet]
144
- html << "<link rel=\"stylesheet\" type=\"text/css\" href=\"/#{options[:stylesheet].sub(/^[\/]*/,"")}\">\n"
145
- end
146
- html << "</head>\n<body>\n"
147
- html << "<h1>Index of #{URI.unescape(request.path)}</h1>\n"
148
- if URI.unescape(request.path) != "/"
149
- html << "<a href='#{Pathname.new(URI.unescape(request.path)).parent}'>&larr; Parent directory</a><br><br>"
150
- else
151
- html << "<a>Root directory</a><br><br>"
152
- end
153
- html << "<table>\n"
154
- html << "\t<tr>\n\t\t<th>File</th>\n\t\t<th>Last modified</th>\n\t\t<th>Size</th>\n\t</tr>\n"
155
- files = Array.new
156
- Dir.foreach(File.join(settings.public_folder, URI.unescape(request.path)), &files.method(:push))
157
- if files == [".", ".."]
158
- html << "\t<tr>\n\t\t<th>No files.</th>\n\t\t<th>-</th>\n\t\t<th>-</th>\n\t</tr>"
159
- else
160
- files.sort.each do |file|
161
- html << wrap(file)
162
- end
163
- end
164
- html << "\n</table>\n"
165
- html << "<br>\n#{options[:readme]}\n" if options[:readme]
166
- html << "</body>\n</html>\n"
167
- html
168
- end
169
-
170
- private :wrap, :name, :size, :m_time
171
169
 
172
170
  end
173
171
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: directory_listing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-13 00:00:00.000000000 Z
12
+ date: 2013-07-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: filesize
@@ -52,7 +52,8 @@ extra_rdoc_files: []
52
52
  files:
53
53
  - lib/sinatra/directory_listing.rb
54
54
  homepage: https://rubygems.org/gems/directory_listing
55
- licenses: []
55
+ licenses:
56
+ - WTFPL
56
57
  post_install_message:
57
58
  rdoc_options: []
58
59
  require_paths: