Merge pull request #440 from haad/upstream

Add support for multi-level directory setups, where files are under mult...
This commit is contained in:
bootstraponline
2012-07-17 09:46:34 -07:00
4 changed files with 41 additions and 48 deletions
+23 -40
View File
@@ -19,16 +19,15 @@ module Gollum
%Q( <li class="file"><a href="#{url}">#{name}</a></li>\n) %Q( <li class="file"><a href="#{url}">#{name}</a></li>\n)
end end
def new_folder page def new_folder folder_path
new_sub_folder ::File.dirname(page.path), page.name, page.filename_stripped new_sub_folder folder_path
end end
def new_sub_folder path, name, url def new_sub_folder path
<<-HTML <<-HTML
<li> <li>
<label>#{path}</label> <input type="checkbox" checked /> <label>#{path}</label> <input type="checkbox" checked />
<ol> <ol>
<li class="file"><a href="#{url}">#{name}</a></li>
HTML HTML
end end
@@ -101,54 +100,38 @@ module Gollum
end end
end end
# Process first folder
page = @pages[ sorted_folders[ 0 ][1] ]
html += new_folder page
last_folder = ::File.dirname page.path # define last_folder
# keep track of folder depth, 0 = at root. # keep track of folder depth, 0 = at root.
depth = 0 cwd_array = []
changed = false
# process rest of folders # process rest of folders
1.upto(sorted_folders.size - 1) do | index | 0.upto(sorted_folders.size - 1) do | index |
page = @pages[ sorted_folders[ index ][1] ] page = @pages[ sorted_folders[ index ][1] ]
path = page.path path = page.path
folder = ::File.dirname path folder = ::File.dirname path
if last_folder == folder tmp_array = folder.split('/')
# same folder
html += new_page page
elsif folder.include?('/')
# check if we're going up or down a depth level
if last_folder.scan('/').size > folder.scan('/').size
# end tag for 1 subfolder & 1 parent folder
# so emit 2 end tags
2.times { html += end_folder; }
depth -= 1
else
depth += 1
end
# subfolder 0.upto(tmp_array.size - 1) do |index|
html += new_sub_folder ::File.dirname(page.path).split('/').last, page.name, page.filename_stripped if cwd_array[index].nil? or changed then
else html += new_sub_folder tmp_array[index]
# depth+1 because we need an additional end_folder next
(depth+1).times { html += end_folder; } end
depth = 0
# New root folder if cwd_array[index] != tmp_array[index] then
html += new_folder page changed = true
index.upto(cwd_array.size - 1) do |i|
html += end_folder
end
html += new_sub_folder tmp_array[index]
end
end end
last_folder = folder html += new_page page
cwd_array = tmp_array
changed = false
end end
# Process last folder's ending tags.
(depth+1).times {
depth.times { html += end_folder; }
depth = 0
}
# return the completed html # return the completed html
enclose_tree html enclose_tree html
end # end render_files end # end render_files
+2 -2
View File
@@ -2,11 +2,11 @@
<li> <li>
<label>folder0</label> <input type="checkbox" checked /> <label>folder0</label> <input type="checkbox" checked />
<ol> <ol>
<li class="file"><a href="0">0</a></li> <li class="file"><a href="0">0</a></li>
</ol> </ol>
</li> </li>
<li> <li>
<label>folder1</label> <input type="checkbox" checked /> <label>folder1</label> <input type="checkbox" checked />
<ol> <ol>
<li class="file"><a href="1">1</a></li> <li class="file"><a href="1">1</a></li>
</ol> </ol>
+2 -2
View File
@@ -3,11 +3,11 @@
<li> <li>
<label>folder0</label> <input type="checkbox" checked /> <label>folder0</label> <input type="checkbox" checked />
<ol> <ol>
<li class="file"><a href="0">0</a></li> <li class="file"><a href="0">0</a></li>
</ol> </ol>
</li> </li>
<li> <li>
<label>folder1</label> <input type="checkbox" checked /> <label>folder1</label> <input type="checkbox" checked />
<ol> <ol>
<li class="file"><a href="1">1</a></li> <li class="file"><a href="1">1</a></li>
</ol> </ol>
+14 -4
View File
@@ -1,12 +1,22 @@
<ol class="tree"> <ol class="tree">
<li> <li>
<label>folder0/folder1/folder2</label> <input type="checkbox" checked /> <label>folder0</label> <input type="checkbox" checked />
<ol> <ol>
<li class="file"><a href="0">0</a></li> <li>
<label>folder1</label> <input type="checkbox" checked />
<ol>
<li>
<label>folder2</label> <input type="checkbox" checked />
<ol>
<li class="file"><a href="0">0</a></li>
</ol>
</li>
<li> <li>
<label>folder3</label> <input type="checkbox" checked /> <label>folder3</label> <input type="checkbox" checked />
<ol> <ol>
<li class="file"><a href="1">1</a></li> <li class="file"><a href="1">1</a></li>
</ol>
</li>
</ol> </ol>
</li> </li>
</ol> </ol>
@@ -14,5 +24,5 @@
<li> <li>
<label>folder4</label> <input type="checkbox" checked /> <label>folder4</label> <input type="checkbox" checked />
<ol> <ol>
<li class="file"><a href="2">2</a></li> <li class="file"><a href="2">2</a></li>
</ol> </ol>