webgen 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|