webgen 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +280 -0
- data/Rakefile +3 -1
- data/TODO +29 -12
- data/VERSION +1 -1
- data/doc/extension.config +11 -6
- data/doc/src/about.page +21 -0
- data/doc/src/default.css +17 -0
- data/doc/src/default.template +3 -5
- data/doc/src/design.gallery +1 -1
- data/doc/src/designs/curdesign.png +0 -0
- data/doc/src/designs/nostyle.png +0 -0
- data/doc/src/designs/old.png +0 -0
- data/doc/src/documentation/contenthandler/html.page +11 -0
- data/doc/src/documentation/contenthandler/index.page +7 -0
- data/doc/src/documentation/contenthandler/markdown.page +11 -0
- data/doc/src/documentation/contenthandler/rdoc.page +11 -0
- data/doc/src/documentation/contenthandler/textile.page +11 -0
- data/doc/src/documentation/extloader.page +1 -1
- data/doc/src/documentation/filehandler/backing.page +1 -1
- data/doc/src/documentation/filehandler/galleryhandler.page +79 -0
- data/doc/src/documentation/filehandler/{page.page → pagehandler.page} +2 -7
- data/doc/src/documentation/gallerylayouter/defaultlayouter.page +12 -0
- data/doc/src/documentation/gallerylayouter/index.page +14 -0
- data/doc/src/documentation/htmlvalidator/index.page +6 -0
- data/doc/src/documentation/htmlvalidator/xmllint.page +14 -0
- data/doc/src/documentation/index.page +33 -6
- data/doc/src/documentation/tags/index.page +2 -2
- data/doc/src/documentation/tags/{lang.de.page → langbar.de.page} +0 -0
- data/doc/src/documentation/tags/{lang.page → langbar.page} +6 -6
- data/doc/src/documentation/tags/menu.page +1 -1
- data/doc/src/documentation/tags/sitemap.page +18 -0
- data/doc/src/download.page +2 -0
- data/doc/src/features.page +4 -4
- data/doc/src/index.page +18 -20
- data/doc/src/meta.info +5 -5
- data/install.rb +1 -1
- data/lib/webgen/configuration.rb +35 -12
- data/lib/webgen/node.rb +9 -3
- data/lib/webgen/plugins/contenthandler/defaultcontenthandler.rb +39 -0
- data/lib/webgen/plugins/{filehandler/pagehandler → contenthandler}/html.rb +4 -7
- data/lib/webgen/plugins/{filehandler/pagehandler → contenthandler}/markdown.rb +4 -7
- data/lib/webgen/plugins/{filehandler/pagehandler → contenthandler}/rdoc.rb +5 -5
- data/lib/webgen/plugins/{filehandler/pagehandler → contenthandler}/textile.rb +4 -7
- data/lib/webgen/plugins/filehandler/backing.rb +4 -4
- data/lib/webgen/plugins/filehandler/directory.rb +25 -3
- data/lib/webgen/plugins/filehandler/filecopy.rb +4 -2
- data/lib/webgen/plugins/filehandler/filehandler.rb +5 -8
- data/lib/webgen/plugins/filehandler/{pagehandler/page.rb → page.rb} +48 -32
- data/lib/webgen/plugins/filehandler/picturegallery.rb +70 -51
- data/lib/webgen/plugins/gallerylayouter/defaultgallerylayouter.rb +152 -0
- data/lib/webgen/plugins/htmlvalidator/defaulthtmlvalidator.rb +37 -0
- data/lib/webgen/plugins/htmlvalidator/xmllint.rb +70 -0
- data/lib/webgen/plugins/tags/{lang.rb → langbar.rb} +3 -3
- data/lib/webgen/plugins/tags/menu.rb +9 -13
- data/lib/webgen/plugins/tags/relocatable.rb +2 -2
- data/lib/webgen/plugins/tags/sitemap.rb +73 -0
- data/lib/webgen/plugins/tags/tags.rb +9 -9
- data/lib/webgen/plugins/treewalker.rb +2 -2
- data/testsite/src/{images/bghack.png → bghack.png} +0 -0
- metadata +33 -20
- data/doc/src/designs/default.png +0 -0
- data/doc/src/documentation/filehandler/picturegallery.page +0 -25
- data/testsite/src/images/o.png +0 -0
- data/testsite/src/images/smagacor.png +0 -0
- data/testsite/src/images/tictactoe.png +0 -0
- data/testsite/src/images/x.png +0 -0
- data/testsite/src/test.gallery +0 -5
data/doc/src/meta.info
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
index.
|
|
1
|
+
index.page:
|
|
2
2
|
en:
|
|
3
3
|
menuOrder: 1
|
|
4
4
|
|
|
5
|
-
download.
|
|
5
|
+
download.page:
|
|
6
6
|
en:
|
|
7
7
|
menuOrder: 3
|
|
8
8
|
|
|
9
|
-
features.
|
|
9
|
+
features.page:
|
|
10
10
|
en:
|
|
11
11
|
menuOrder: 5
|
|
12
12
|
|
|
13
|
-
api.
|
|
13
|
+
api.page:
|
|
14
14
|
en:
|
|
15
15
|
dest: rdoc/index.html
|
|
16
16
|
title: API Reference
|
|
17
17
|
menuOrder: 7
|
|
18
18
|
inMenu: true
|
|
19
19
|
|
|
20
|
-
documentation/index.
|
|
20
|
+
documentation/index.page:
|
|
21
21
|
en:
|
|
22
22
|
menuOrder: 9
|
data/install.rb
CHANGED
data/lib/webgen/configuration.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: configuration.rb
|
|
4
|
+
# $Id: configuration.rb 217 2005-03-11 15:15:54Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -37,10 +37,13 @@ class Dependency < Hash
|
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
class OpenStruct
|
|
41
|
+
public :table #:nodoc:#
|
|
42
|
+
end
|
|
40
43
|
|
|
41
44
|
module Webgen
|
|
42
45
|
|
|
43
|
-
VERSION = [0, 3,
|
|
46
|
+
VERSION = [0, 3, 1]
|
|
44
47
|
SUMMARY = "Webgen is a templated based static website generator."
|
|
45
48
|
DESCRIPTION = "Webgen is a web page generator implemented in Ruby. " \
|
|
46
49
|
"It is used to generate static web pages from templates and page " \
|
|
@@ -53,12 +56,12 @@ module Webgen
|
|
|
53
56
|
@@config = {}
|
|
54
57
|
|
|
55
58
|
def self.inherited( klass )
|
|
56
|
-
(@@config[klass
|
|
57
|
-
@@config[klass
|
|
59
|
+
(@@config[klass] = OpenStruct.new).klass = klass
|
|
60
|
+
@@config[klass].plugin = klass.name.split( /::/ ).last
|
|
58
61
|
end
|
|
59
62
|
|
|
60
63
|
['extension', 'summary', 'description'].each do |name|
|
|
61
|
-
self.module_eval "def self.#{name}( obj ); @@config[self
|
|
64
|
+
self.module_eval "def self.#{name}( obj ); @@config[self].#{name} = obj; end"
|
|
62
65
|
end
|
|
63
66
|
|
|
64
67
|
# Return plugin data
|
|
@@ -69,7 +72,7 @@ module Webgen
|
|
|
69
72
|
# Add a dependency to the plugin. Dependencies are instantiated before the plugin gets
|
|
70
73
|
# instantiated.
|
|
71
74
|
def self.depends_on( *dep )
|
|
72
|
-
dep.each {|d| (@@config[self
|
|
75
|
+
dep.each {|d| (@@config[self].dependencies ||= []) << d}
|
|
73
76
|
end
|
|
74
77
|
|
|
75
78
|
# Shortcut for getting the plugin with the name +name+.
|
|
@@ -88,7 +91,7 @@ module Webgen
|
|
|
88
91
|
def self.add_param( name, default, description )
|
|
89
92
|
self.logger.debug { "Adding parameter '#{name}' for plugin class '#{self.name}'" }
|
|
90
93
|
data = OpenStruct.new( :name => name, :value => default, :default => default, :description => description )
|
|
91
|
-
(@@config[self
|
|
94
|
+
(@@config[self].params ||= {})[name] = data
|
|
92
95
|
end
|
|
93
96
|
|
|
94
97
|
# Set parameter +name+ for +plugin+ to +value+.
|
|
@@ -96,7 +99,7 @@ module Webgen
|
|
|
96
99
|
found = catch( :found ) do
|
|
97
100
|
item = @@config.find {|k,v| v.plugin == plugin }[1]
|
|
98
101
|
item.klass.ancestor_classes.each do |k|
|
|
99
|
-
item = @@config[k
|
|
102
|
+
item = @@config[k]
|
|
100
103
|
if !item.nil? && !item.params.nil? && item.params.has_key?( name )
|
|
101
104
|
item.params[name].value = value
|
|
102
105
|
logger.debug { "Setting parameter '#{name}' for plugin '#{plugin}' to #{value.inspect}" }
|
|
@@ -110,7 +113,7 @@ module Webgen
|
|
|
110
113
|
# Return parameter +name+.
|
|
111
114
|
def []( name )
|
|
112
115
|
self.class.ancestor_classes.each do |klass|
|
|
113
|
-
data = @@config[klass
|
|
116
|
+
data = @@config[klass]
|
|
114
117
|
return data.params[name].value unless data.params.nil? || data.params[name].nil?
|
|
115
118
|
end
|
|
116
119
|
logger.error { "Referencing invalid configuration value '#{name}' in class #{self.class.name}" }
|
|
@@ -119,17 +122,37 @@ module Webgen
|
|
|
119
122
|
|
|
120
123
|
# Set parameter +name+.
|
|
121
124
|
def []=( name, value )
|
|
122
|
-
self.class.set_param( @@config[self.class
|
|
125
|
+
self.class.set_param( @@config[self.class].plugin, name, value )
|
|
123
126
|
end
|
|
124
127
|
alias get_param []
|
|
125
128
|
|
|
126
129
|
# Checks if the plugin has a parameter +name+.
|
|
127
130
|
def has_param?( name )
|
|
128
131
|
self.class.ancestor_classes.any? do |klass|
|
|
129
|
-
!@@config[klass
|
|
132
|
+
!@@config[klass].params.nil? && @@config[klass].params.has_key?( name )
|
|
130
133
|
end
|
|
131
134
|
end
|
|
132
135
|
|
|
136
|
+
# Defines a new *handler class. The methods creates two methods based on the parameter +name+:
|
|
137
|
+
# - klass.register_[name]
|
|
138
|
+
# - object.get_[name]
|
|
139
|
+
def self.define_handler( name )
|
|
140
|
+
s = "def self.register_#{name}( param )
|
|
141
|
+
self.logger.info { \"Registering class \#{self.name} for handling '\#{param}'\" }
|
|
142
|
+
(Webgen::Plugin.config[#{self.name}].#{name}s ||= {})[param] = self
|
|
143
|
+
Webgen::Plugin.config[self].registered_#{name} = param
|
|
144
|
+
end\n"
|
|
145
|
+
s += "def get_#{name}( param )
|
|
146
|
+
if Webgen::Plugin.config[#{self.name}].#{name}s.has_key?( param )
|
|
147
|
+
Webgen::Plugin.config[Webgen::Plugin.config[#{self.name}].#{name}s[param]].obj
|
|
148
|
+
else
|
|
149
|
+
self.logger.error { \"Invalid #{name} specified: \#{param}! Using #{self.name}!\" }
|
|
150
|
+
Webgen::Plugin.config[#{self.name}].obj
|
|
151
|
+
end
|
|
152
|
+
end"
|
|
153
|
+
module_eval s
|
|
154
|
+
end
|
|
155
|
+
|
|
133
156
|
#######
|
|
134
157
|
private
|
|
135
158
|
#######
|
|
@@ -209,7 +232,7 @@ module Webgen
|
|
|
209
232
|
end
|
|
210
233
|
|
|
211
234
|
# Initialize single configuration instance
|
|
212
|
-
Plugin.config[Configuration
|
|
235
|
+
Plugin.config[Configuration].obj = Configuration.new
|
|
213
236
|
|
|
214
237
|
end
|
|
215
238
|
|
data/lib/webgen/node.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: node.rb
|
|
4
|
+
# $Id: node.rb 220 2005-03-12 15:41:05Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -114,6 +114,13 @@ class Node
|
|
|
114
114
|
/^#{node.recursive_value( 'dest' )}/ =~ recursive_value( 'dest' )
|
|
115
115
|
end
|
|
116
116
|
|
|
117
|
+
# Returns the parent directory for this node. This function ignores virtual directories.
|
|
118
|
+
def parent_dir
|
|
119
|
+
node = self.parent
|
|
120
|
+
node = node.parent while !node.nil? && node['virtual']
|
|
121
|
+
node
|
|
122
|
+
end
|
|
123
|
+
|
|
117
124
|
# Returns the root node for +node+.
|
|
118
125
|
def self.root( node )
|
|
119
126
|
node = node.parent until node.parent.nil?
|
|
@@ -129,8 +136,7 @@ class Node
|
|
|
129
136
|
node = Node.root( self )
|
|
130
137
|
destString = destString[1..-1]
|
|
131
138
|
else
|
|
132
|
-
node = self.
|
|
133
|
-
node = node.parent while !node.nil? && node['virtual']
|
|
139
|
+
node = self.parent_dir || self
|
|
134
140
|
end
|
|
135
141
|
|
|
136
142
|
destString.split( '/' ).each do |element|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#
|
|
2
|
+
#--
|
|
3
|
+
#
|
|
4
|
+
# $Id: defaultcontenthandler.rb 214 2005-02-27 13:40:27Z thomas $
|
|
5
|
+
#
|
|
6
|
+
# webgen: template based static website generator
|
|
7
|
+
# Copyright (C) 2004 Thomas Leitner
|
|
8
|
+
#
|
|
9
|
+
# This program is free software; you can redistribute it and/or modify it under the terms of the GNU
|
|
10
|
+
# General Public License as published by the Free Software Foundation; either version 2 of the
|
|
11
|
+
# License, or (at your option) any later version.
|
|
12
|
+
#
|
|
13
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
|
14
|
+
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
15
|
+
# General Public License for more details.
|
|
16
|
+
#
|
|
17
|
+
# You should have received a copy of the GNU General Public License along with this program; if not,
|
|
18
|
+
# write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
19
|
+
#
|
|
20
|
+
#++
|
|
21
|
+
#
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
module ContentHandlers
|
|
25
|
+
|
|
26
|
+
class DefaultContentHandler < Webgen::Plugin
|
|
27
|
+
|
|
28
|
+
summary "Base class for all content handlers"
|
|
29
|
+
|
|
30
|
+
define_handler 'format'
|
|
31
|
+
|
|
32
|
+
# Format the given +content+. Should be overridden in subclass!
|
|
33
|
+
def format_content( content )
|
|
34
|
+
content
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: html.rb
|
|
4
|
+
# $Id: html.rb 212 2005-02-27 12:02:27Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -20,19 +20,16 @@
|
|
|
20
20
|
#++
|
|
21
21
|
#
|
|
22
22
|
|
|
23
|
-
require 'webgen/plugins/
|
|
23
|
+
require 'webgen/plugins/contenthandler/defaultcontenthandler'
|
|
24
24
|
|
|
25
25
|
module ContentHandlers
|
|
26
26
|
|
|
27
27
|
# Handles HTML content. Assumes that the content is already valid HTML.
|
|
28
|
-
class
|
|
28
|
+
class HTMLContentHandler < DefaultContentHandler
|
|
29
29
|
|
|
30
30
|
summary "Handles HTML formatted content"
|
|
31
|
-
depends_on "PageHandler"
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
register_format( 'html' )
|
|
35
|
-
end
|
|
32
|
+
register_format( 'html' )
|
|
36
33
|
|
|
37
34
|
def format_content( txt )
|
|
38
35
|
txt
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: markdown.rb
|
|
4
|
+
# $Id: markdown.rb 212 2005-02-27 12:02:27Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -23,19 +23,16 @@
|
|
|
23
23
|
|
|
24
24
|
begin
|
|
25
25
|
require 'bluecloth'
|
|
26
|
-
require 'webgen/plugins/
|
|
26
|
+
require 'webgen/plugins/contenthandler/defaultcontenthandler'
|
|
27
27
|
|
|
28
28
|
module ContentHandlers
|
|
29
29
|
|
|
30
30
|
# Handles text formatted in Markdown format using BlueCloth.
|
|
31
|
-
class
|
|
31
|
+
class MarkdownContentHandler < DefaultContentHandler
|
|
32
32
|
|
|
33
33
|
summary "Handles content formatted in Markdown format using BlueCloth"
|
|
34
|
-
depends_on "PageHandler"
|
|
35
34
|
|
|
36
|
-
|
|
37
|
-
register_format( 'markdown' )
|
|
38
|
-
end
|
|
35
|
+
register_format( 'markdown' )
|
|
39
36
|
|
|
40
37
|
def format_content( txt )
|
|
41
38
|
BlueCloth.new( txt ).to_html
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: rdoc.rb
|
|
4
|
+
# $Id: rdoc.rb 212 2005-02-27 12:02:27Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -22,18 +22,18 @@
|
|
|
22
22
|
|
|
23
23
|
require 'rdoc/markup/simple_markup'
|
|
24
24
|
require 'rdoc/markup/simple_markup/to_html'
|
|
25
|
-
require 'webgen/plugins/
|
|
25
|
+
require 'webgen/plugins/contenthandler/defaultcontenthandler'
|
|
26
26
|
|
|
27
27
|
module ContentHandlers
|
|
28
28
|
|
|
29
29
|
# Handles text in RDoc format.
|
|
30
|
-
class
|
|
30
|
+
class RDocContentHandler < DefaultContentHandler
|
|
31
31
|
|
|
32
32
|
summary "Handles content in RDOC format"
|
|
33
|
-
|
|
33
|
+
|
|
34
|
+
register_format( 'rdoc' )
|
|
34
35
|
|
|
35
36
|
def initialize
|
|
36
|
-
register_format( 'rdoc' )
|
|
37
37
|
@processor = SM::SimpleMarkup.new
|
|
38
38
|
@formatter = SM::ToHtml.new
|
|
39
39
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: textile.rb
|
|
4
|
+
# $Id: textile.rb 212 2005-02-27 12:02:27Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -22,19 +22,16 @@
|
|
|
22
22
|
|
|
23
23
|
begin
|
|
24
24
|
require 'redcloth'
|
|
25
|
-
require 'webgen/plugins/
|
|
25
|
+
require 'webgen/plugins/contenthandler/defaultcontenthandler'
|
|
26
26
|
|
|
27
27
|
module ContentHandlers
|
|
28
28
|
|
|
29
29
|
# Handles content in Textile format using RedCloth.
|
|
30
|
-
class
|
|
30
|
+
class TextileContentHandler < DefaultContentHandler
|
|
31
31
|
|
|
32
32
|
summary "Handles content in Textile format using RedCloth"
|
|
33
|
-
depends_on "PageHandler"
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
register_format( 'textile' )
|
|
37
|
-
end
|
|
34
|
+
register_format( 'textile' )
|
|
38
35
|
|
|
39
36
|
def format_content( txt )
|
|
40
37
|
RedCloth.new( txt ).to_html
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: backing.rb
|
|
4
|
+
# $Id: backing.rb 214 2005-02-27 13:40:27Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
require 'webgen/plugins/filehandler/filehandler'
|
|
24
24
|
require 'webgen/plugins/filehandler/directory'
|
|
25
|
-
require 'webgen/plugins/filehandler/
|
|
25
|
+
require 'webgen/plugins/filehandler/page'
|
|
26
26
|
|
|
27
27
|
module FileHandlers
|
|
28
28
|
|
|
@@ -98,7 +98,7 @@ module FileHandlers
|
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
def process_backing_file( dirNode )
|
|
101
|
-
backingFiles = dirNode.find_all {|child| /\.#{Webgen::Plugin.config[self.class
|
|
101
|
+
backingFiles = dirNode.find_all {|child| /\.#{Webgen::Plugin.config[self.class].extension}$/ =~ child['src'] }
|
|
102
102
|
|
|
103
103
|
backingFiles.each do |backingFile|
|
|
104
104
|
backingFile['content'].each do |filename, data|
|
|
@@ -158,7 +158,7 @@ module FileHandlers
|
|
|
158
158
|
when '..'
|
|
159
159
|
node = node.parent
|
|
160
160
|
else
|
|
161
|
-
node = node.find
|
|
161
|
+
node = node.find {|child| /^#{element}\/?$/ =~ child['src'] }
|
|
162
162
|
end
|
|
163
163
|
if node.nil?
|
|
164
164
|
node = FileHandlers::DirHandler::DirNode.new( parent, element )
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: directory.rb
|
|
4
|
+
# $Id: directory.rb 224 2005-03-16 15:26:33Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -58,13 +58,16 @@ module FileHandlers
|
|
|
58
58
|
|
|
59
59
|
summary "Handles directories"
|
|
60
60
|
extension :dir
|
|
61
|
-
add_param 'indexFile', 'index.
|
|
61
|
+
add_param 'indexFile', 'index.page', 'The default file name for the directory index file.'
|
|
62
62
|
depends_on 'FileHandler'
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
# Return a new DirNode.
|
|
66
66
|
def create_node( path, parent )
|
|
67
|
-
|
|
67
|
+
unless parent && node = parent.find {|child| /^#{File.basename( path )}\/$/ =~ child['src'] }
|
|
68
|
+
node = DirNode.new( parent, File.basename( path ) )
|
|
69
|
+
end
|
|
70
|
+
node
|
|
68
71
|
end
|
|
69
72
|
|
|
70
73
|
# Create the directory (and all its parent directories if necessary).
|
|
@@ -91,6 +94,25 @@ module FileHandlers
|
|
|
91
94
|
super( lang_node, refNode, title )
|
|
92
95
|
end
|
|
93
96
|
|
|
97
|
+
# Recursively create a given path
|
|
98
|
+
def recursive_create_path( path, parent )
|
|
99
|
+
p = parent
|
|
100
|
+
node = nil
|
|
101
|
+
path.split( File::SEPARATOR ).each do |pathname|
|
|
102
|
+
case pathname
|
|
103
|
+
when '.' then
|
|
104
|
+
# do nothing
|
|
105
|
+
when '..' then
|
|
106
|
+
p = p.parent
|
|
107
|
+
else
|
|
108
|
+
node = create_node( pathname, p )
|
|
109
|
+
p.add_child( node ) unless p.nil? || node.nil?
|
|
110
|
+
p = node
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
node
|
|
114
|
+
end
|
|
115
|
+
|
|
94
116
|
end
|
|
95
117
|
|
|
96
118
|
end
|