@@ -46,6 +46,21 @@ var cache = {};
46
46
*/
47
47
48
48
var defaultTemplate = join ( __dirname , 'public' , 'directory.html' ) ;
49
+ var templates = {
50
+ html : {
51
+ list : '<ul id="files" class="view-{view}">' ,
52
+ header : '<li class="header">'
53
+ + '<span class="name">Name</span>'
54
+ + '<span class="size">Size</span>'
55
+ + '<span class="date">Modified</span>'
56
+ + '</li>' ,
57
+ item : '<li><a href="{path}" class="{classes}" title="{file.name}">'
58
+ + '<span class="name">{file.name}</span>'
59
+ + '<span class="size">{file.size}</span>'
60
+ + '<span class="date">{file.lastModified}</span>'
61
+ + '</a></li>'
62
+ }
63
+ }
49
64
50
65
/*!
51
66
* Stylesheet.
@@ -259,13 +274,8 @@ serveIndex.plain = function _plain(req, res, directory, nodes) {
259
274
*/
260
275
261
276
function createHtmlFileList ( files , dirname , useIcons , view ) {
262
- var html = '<ul id="files" class="view-' + escapeHtml ( view ) + '">'
263
- + ( view === 'details' ? (
264
- '<li class="header">'
265
- + '<span class="name">Name</span>'
266
- + '<span class="size">Size</span>'
267
- + '<span class="date">Modified</span>'
268
- + '</li>' ) : '' ) ;
277
+ var html = templates . html . list . replace ( / { v i e w } / g, view )
278
+ + ( view === 'details' ? templates . html . header : '' ) ;
269
279
270
280
html += files . map ( function ( file ) {
271
281
var classes = [ ] ;
@@ -299,14 +309,12 @@ function createHtmlFileList(files, dirname, useIcons, view) {
299
309
? file . size
300
310
: '' ;
301
311
302
- return '<li><a href="'
303
- + escapeHtml ( normalizeSlashes ( normalize ( path . join ( '/' ) ) ) )
304
- + '" class="' + escapeHtml ( classes . join ( ' ' ) ) + '"'
305
- + ' title="' + escapeHtml ( file . name ) + '">'
306
- + '<span class="name">' + escapeHtml ( file . name ) + '</span>'
307
- + '<span class="size">' + escapeHtml ( size ) + '</span>'
308
- + '<span class="date">' + escapeHtml ( date ) + '</span>'
309
- + '</a></li>' ;
312
+ return templates . html . item
313
+ . replace ( / { p a t h } / g, escapeHtml ( normalizeSlashes ( normalize ( path . join ( '/' ) ) ) ) )
314
+ . replace ( / { c l a s s e s } / g, escapeHtml ( classes . join ( ' ' ) ) )
315
+ . replace ( / { f i l e \. n a m e } / g, escapeHtml ( file . name ) )
316
+ . replace ( / { f i l e \. s i z e } / g, escapeHtml ( size ) )
317
+ . replace ( / { f i l e \. l a s t M o d i f i e d / g, escapeHtml ( date ) )
310
318
} ) . join ( '\n' ) ;
311
319
312
320
html += '</ul>' ;
@@ -325,10 +333,10 @@ function createHtmlRender(template) {
325
333
if ( err ) return callback ( err ) ;
326
334
327
335
var body = str
328
- . replace ( / \ {s t y l e \ }/ g, locals . style . concat ( iconStyle ( locals . fileList , locals . displayIcons ) ) )
329
- . replace ( / \ {f i l e s \ }/ g, createHtmlFileList ( locals . fileList , locals . directory , locals . displayIcons , locals . viewName ) )
330
- . replace ( / \ {d i r e c t o r y \ }/ g, escapeHtml ( locals . directory ) )
331
- . replace ( / \ {l i n k e d - p a t h \ }/ g, htmlPath ( locals . directory ) ) ;
336
+ . replace ( / { s t y l e } / g, locals . style . concat ( iconStyle ( locals . fileList , locals . displayIcons ) ) )
337
+ . replace ( / { f i l e s } / g, createHtmlFileList ( locals . fileList , locals . directory , locals . displayIcons , locals . viewName ) )
338
+ . replace ( / { d i r e c t o r y } / g, escapeHtml ( locals . directory ) )
339
+ . replace ( / { l i n k e d - p a t h } / g, htmlPath ( locals . directory ) )
332
340
333
341
callback ( null , body ) ;
334
342
} ) ;
0 commit comments