webgen 0.3.3 → 0.3.4
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 +154 -0
- data/Rakefile +1 -1
- data/TODO +7 -4
- data/VERSION +1 -1
- data/doc/plugin/extension.rb +9 -1
- data/doc/src/about.page +2 -2
- data/doc/src/default.css +2 -2
- data/doc/src/default.template +4 -2
- data/doc/src/documentation/cli.page +1 -1
- data/doc/src/documentation/gettingstarted.page +4 -4
- data/doc/src/documentation/index.page +5 -5
- data/doc/src/documentation/meta_info_reference.page +21 -0
- data/doc/src/documentation/plugins/filehandler/directory.page +12 -0
- data/doc/src/documentation/plugins/filehandler/index.page +21 -5
- data/doc/src/documentation/plugins/filehandler/pagehandler.page +31 -3
- data/doc/src/documentation/plugins/index.page +2 -2
- data/doc/src/documentation/plugins/tags/index.page +7 -2
- data/doc/src/documentation/plugins/tags/multilang.fr.page +1 -1
- data/doc/src/download.page +1 -1
- data/doc/src/features.page +3 -2
- data/doc/src/generated_by_webgen.png +0 -0
- data/doc/src/index.page +18 -5
- data/doc/src/meta.info +8 -5
- data/install.rb +1 -1
- data/lib/{util → webgen}/composite.rb +1 -1
- data/lib/webgen/configuration.rb +2 -2
- data/lib/{util → webgen}/listener.rb +1 -1
- data/lib/webgen/node.rb +10 -10
- data/lib/webgen/plugin.rb +19 -12
- data/lib/webgen/plugins/filehandler/backing.rb +7 -4
- data/lib/webgen/plugins/filehandler/directory.rb +10 -9
- data/lib/webgen/plugins/filehandler/filecopy.rb +5 -6
- data/lib/webgen/plugins/filehandler/filehandler.rb +104 -89
- data/lib/webgen/plugins/filehandler/page.rb +45 -16
- data/lib/webgen/plugins/filehandler/picturegallery.rb +4 -3
- data/lib/webgen/plugins/filehandler/template.rb +4 -2
- data/lib/webgen/plugins/tags/langbar.rb +2 -2
- data/lib/webgen/plugins/tags/menu.rb +48 -35
- data/lib/webgen/plugins/tags/relocatable.rb +18 -6
- data/lib/webgen/plugins/tags/sitemap.rb +10 -9
- data/lib/webgen/plugins/tags/wikilink.rb +3 -1
- data/testsite/src/projects/00.index.de.page +1 -1
- data/testsite/src/projects/subproj/index.page +1 -1
- metadata +7 -5
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
#--
|
3
3
|
#
|
4
|
-
# $Id: picturegallery.rb
|
4
|
+
# $Id: picturegallery.rb 274 2005-05-11 12:52:27Z thomas $
|
5
5
|
#
|
6
6
|
# webgen: template based static website generator
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
@@ -33,7 +33,7 @@ module FileHandlers
|
|
33
33
|
add_param "picturesPerPage", 20, 'Number of picture per gallery page'
|
34
34
|
add_param "picturePageInMenu", false, 'True if the picture pages should be in the menu'
|
35
35
|
add_param "galleryPageInMenu", false, 'True if the gallery pages should be in the menu'
|
36
|
-
add_param "
|
36
|
+
add_param "galleryOrderInfo", 50, 'The <orderInfo> metainfo for the first gallery page. The second gallery page gets this value plus one, and so on.'
|
37
37
|
add_param "mainPageInMenu", true, 'True if the main page of the picture gallery should be in the menu'
|
38
38
|
add_param "galleryPageTemplate", nil, 'The template for gallery pages. If nil or a not existing file is specified, the default template is used.'
|
39
39
|
add_param "picturePageTemplate", nil, 'The template for picture pages. If nil or a not existing file is specified, the default template is used.'
|
@@ -123,7 +123,7 @@ module FileHandlers
|
|
123
123
|
data['template'] ||= get_param( 'galleryPageTemplate' )
|
124
124
|
data['inMenu'] ||= get_param( 'galleryPageInMenu' )
|
125
125
|
data['number'] = i/picsPerPage + 1
|
126
|
-
data['
|
126
|
+
data['orderInfo'] = get_param( 'galleryOrderInfo' ) + data['number']
|
127
127
|
data['title'] = gallery_title( data['number'] )
|
128
128
|
data['srcName'] = gallery_file_name( data['title'] )
|
129
129
|
data['imageList'] = create_picture_pages( images[i..(i + picsPerPage - 1)], parent )
|
@@ -172,6 +172,7 @@ module FileHandlers
|
|
172
172
|
|
173
173
|
class PictureGalleryFileHandler
|
174
174
|
|
175
|
+
remove_method :get_thumbnail
|
175
176
|
def get_thumbnail( imageData, parent )
|
176
177
|
p_node = Webgen::Plugin['DirHandler'].recursive_create_path( File.dirname( imageData['imageFilename'] ), parent )
|
177
178
|
node = Webgen::Plugin['ThumbnailWriter'].create_node( File.join( @path, imageData['imageFilename'] ), p_node )
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
#--
|
3
3
|
#
|
4
|
-
# $Id: template.rb
|
4
|
+
# $Id: template.rb 275 2005-05-11 17:30:20Z thomas $
|
5
5
|
#
|
6
6
|
# webgen: template based static website generator
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
@@ -32,6 +32,8 @@ module FileHandlers
|
|
32
32
|
add_param 'defaultTemplate', 'default.template', 'The default file name for the template file.'
|
33
33
|
depends_on 'FileHandler'
|
34
34
|
|
35
|
+
used_meta_info 'template'
|
36
|
+
|
35
37
|
def create_node( srcName, parent )
|
36
38
|
node = Node.new( parent )
|
37
39
|
node['title'] = 'Template'
|
@@ -68,7 +70,7 @@ module FileHandlers
|
|
68
70
|
# Return the default template for +node+. If the template node is not found in the directory of
|
69
71
|
# the node, the parent directories are searched.
|
70
72
|
def get_default_template( node )
|
71
|
-
node = node.parent until node
|
73
|
+
node = node.parent until node['int:directory?']
|
72
74
|
templateNode = node.find { |child| child['src'] == get_param( 'defaultTemplate' ) }
|
73
75
|
if templateNode.nil?
|
74
76
|
if node.parent.nil?
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
#--
|
3
3
|
#
|
4
|
-
# $Id: langbar.rb
|
4
|
+
# $Id: langbar.rb 274 2005-05-11 12:52:27Z thomas $
|
5
5
|
#
|
6
6
|
# webgen: template based static website generator
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
@@ -39,7 +39,7 @@ module Tags
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def process_tag( tag, node, refNode )
|
42
|
-
output = node.parent.find_all {|a| a['
|
42
|
+
output = node.parent.find_all {|a| a['int:pagename'] == node['int:pagename']}.sort {|a, b| a['lang'] <=> b['lang']}.collect do |n|
|
43
43
|
n['processor'].get_html_link( n, n, n['lang'] )
|
44
44
|
end.join( get_param( 'separator' ) )
|
45
45
|
return ( get_param( 'showSingleLang' ) || node.parent.children.length > 1 ? output : "" )
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
#--
|
3
3
|
#
|
4
|
-
# $Id: menu.rb
|
4
|
+
# $Id: menu.rb 275 2005-05-11 17:30:20Z thomas $
|
5
5
|
#
|
6
6
|
# webgen: template based static website generator
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
@@ -30,7 +30,7 @@ module Tags
|
|
30
30
|
# one page file.
|
31
31
|
#
|
32
32
|
# The order in which the menu items are listed can be controlled via the meta information
|
33
|
-
# +
|
33
|
+
# +orderInfo+. By default the menu items are sorted by the file names.
|
34
34
|
#
|
35
35
|
# Tag parameters:
|
36
36
|
# [<b>level</b>]
|
@@ -38,6 +38,39 @@ module Tags
|
|
38
38
|
# also displays the menu files in the direct subdirectories and so on.
|
39
39
|
class MenuTag < DefaultTag
|
40
40
|
|
41
|
+
class ::Node
|
42
|
+
|
43
|
+
# Retrieves the meta information +orderInfo+.
|
44
|
+
def order_info
|
45
|
+
# be optimistic and try metainfo field first
|
46
|
+
node = self
|
47
|
+
value = node['orderInfo'].to_s.to_i unless node['orderInfo'].nil?
|
48
|
+
|
49
|
+
# get index file for directory
|
50
|
+
if node['int:directory?']
|
51
|
+
node = node['indexFile']
|
52
|
+
value ||= node['orderInfo'].to_s.to_i unless node.nil? || node['orderInfo'].nil?
|
53
|
+
end
|
54
|
+
|
55
|
+
# find the first orderInfo entry in the page files if node is a page file
|
56
|
+
if !node.nil? && node['int:pagename']
|
57
|
+
node = node.parent.find {|child| child['int:pagename'] == node['int:pagename'] && child['orderInfo'].to_s.to_i != 0}
|
58
|
+
value ||= node['orderInfo'].to_s.to_i unless node.nil?
|
59
|
+
end
|
60
|
+
|
61
|
+
# fallback value
|
62
|
+
value ||= 0
|
63
|
+
|
64
|
+
value
|
65
|
+
end
|
66
|
+
|
67
|
+
SORT_PROC = Proc.new do |a,b|
|
68
|
+
aoi = a.order_info
|
69
|
+
boi = b.order_info
|
70
|
+
(aoi == boi ? a['title'] <=> b['title'] : aoi <=> boi)
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
41
74
|
|
42
75
|
# Specialised node class for the menu.
|
43
76
|
class MenuNode < Node
|
@@ -52,28 +85,11 @@ module Tags
|
|
52
85
|
end
|
53
86
|
|
54
87
|
|
55
|
-
# Sorts recursively all children of the node depending on their order value.
|
88
|
+
# Sorts recursively all children of the node depending on their order value. If two order
|
89
|
+
# values are equal, sort the items using their title.
|
56
90
|
def sort!
|
57
|
-
self.children.sort! {|a,b|
|
58
|
-
self.children.each {|child| child.sort! if child
|
59
|
-
end
|
60
|
-
|
61
|
-
|
62
|
-
# Retrieves the order value for the specific node.
|
63
|
-
def get_order_value( node )
|
64
|
-
# be optimistic and try metainfo field first
|
65
|
-
node = node['node'] if node.kind_of?( MenuNode )
|
66
|
-
value = node['menuOrder'].to_s.to_i unless node['menuOrder'].nil?
|
67
|
-
|
68
|
-
# find the first menuOrder entry in the page files
|
69
|
-
node = node['indexFile'] if node.kind_of?( FileHandlers::DirHandler::DirNode )
|
70
|
-
node = node.parent.find {|child| child['page:name'] == node['page:name'] && child['menuOrder'].to_s.to_i != 0} if !node.nil? && node['page:name']
|
71
|
-
value ||= node['menuOrder'].to_s.to_i unless node.nil?
|
72
|
-
|
73
|
-
# fallback value
|
74
|
-
value ||= 0
|
75
|
-
|
76
|
-
value
|
91
|
+
self.children.sort! {|a,b| SORT_PROC.call( a['node'], b['node'] ) }
|
92
|
+
self.children.each {|child| child.sort! if child['node']['int:directory?'] }
|
77
93
|
end
|
78
94
|
|
79
95
|
end
|
@@ -96,6 +112,8 @@ module Tags
|
|
96
112
|
'True if only the current subtree should be shown in the menu. If set to false, ' \
|
97
113
|
'each subtree will be shown.'
|
98
114
|
|
115
|
+
used_meta_info 'orderInfo', 'inMenu'
|
116
|
+
|
99
117
|
def initialize
|
100
118
|
super
|
101
119
|
register_tag( 'menu' )
|
@@ -132,13 +150,8 @@ module Tags
|
|
132
150
|
|
133
151
|
out = "<#{get_param( 'menuTag' )}>"
|
134
152
|
node.each do |child|
|
135
|
-
|
136
|
-
|
137
|
-
before, after = menu_entry( srcNode, child['node'] )
|
138
|
-
else
|
139
|
-
menu = ''
|
140
|
-
before, after = menu_entry( srcNode, child )
|
141
|
-
end
|
153
|
+
menu = child['node']['int:directory?'] ? build_menu( srcNode, child, level + 1 ) : ''
|
154
|
+
before, after = menu_entry( srcNode, child['node'] )
|
142
155
|
|
143
156
|
out << before
|
144
157
|
out << menu
|
@@ -151,15 +164,15 @@ module Tags
|
|
151
164
|
|
152
165
|
|
153
166
|
def menu_entry( srcNode, node )
|
154
|
-
langNode = node['processor'].
|
155
|
-
isDir = node
|
167
|
+
langNode = node['processor'].get_node_for_lang( node, srcNode['lang'] )
|
168
|
+
isDir = node['int:directory?']
|
156
169
|
|
157
170
|
styles = []
|
158
171
|
styles << get_param( 'submenuClass' ) if isDir
|
159
172
|
styles << get_param( 'selectedMenuitemClass' ) if langNode.recursive_value( 'dest' ) == srcNode.recursive_value( 'dest' )
|
160
173
|
|
161
174
|
style = " class=\"#{styles.join(' ')}\"" if styles.length > 0
|
162
|
-
link =
|
175
|
+
link = node['processor'].get_html_link( node, srcNode )
|
163
176
|
|
164
177
|
before = "<#{get_param( 'itemTag' )}#{style}>#{link}"
|
165
178
|
after = "</#{get_param( 'itemTag' )}>"
|
@@ -173,12 +186,12 @@ module Tags
|
|
173
186
|
menuNode = MenuNode.new( parent, node )
|
174
187
|
|
175
188
|
node.each do |child|
|
176
|
-
next if menuNode.find {|n| n['
|
189
|
+
next if menuNode.find {|n| n['node']['int:pagename'] == child['int:pagename'] && !n['node']['int:pagename'].nil? }
|
177
190
|
menu = create_menu_tree( child, menuNode )
|
178
191
|
menuNode.add_child( menu ) unless menu.nil?
|
179
192
|
end
|
180
193
|
|
181
|
-
return menuNode.has_children? ? menuNode : ( node['inMenu'] && !node['virtual'] ?
|
194
|
+
return menuNode.has_children? ? menuNode : ( node['inMenu'] && !node['virtual'] ? menuNode : nil )
|
182
195
|
end
|
183
196
|
|
184
197
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
#--
|
3
3
|
#
|
4
|
-
# $Id: relocatable.rb
|
4
|
+
# $Id: relocatable.rb 273 2005-05-11 10:07:38Z thomas $
|
5
5
|
#
|
6
6
|
# webgen: template based static website generator
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
@@ -21,6 +21,7 @@
|
|
21
21
|
#
|
22
22
|
|
23
23
|
require 'webgen/plugins/tags/tags'
|
24
|
+
require 'uri'
|
24
25
|
|
25
26
|
module Tags
|
26
27
|
|
@@ -45,12 +46,23 @@ module Tags
|
|
45
46
|
end
|
46
47
|
|
47
48
|
def process_tag( tag, node, refNode )
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
uri_string = get_param( 'item' )
|
50
|
+
result = ''
|
51
|
+
unless uri_string.nil?
|
52
|
+
begin
|
53
|
+
uri = URI.parse( uri_string )
|
54
|
+
if uri.absolute?
|
55
|
+
result = uri_string
|
56
|
+
else
|
57
|
+
destNode = refNode.node_for_string( uri.path )
|
58
|
+
qf = (uri.query.nil? ? '' : '?'+ uri.query ) + (uri.fragment.nil? ? '' : '#' + uri.fragment)
|
59
|
+
result = ( destNode.nil? ? '' : node.relpath_to_node( destNode['processor'].get_node_for_lang( destNode, node['lang'] ) ) + qf )
|
60
|
+
end
|
61
|
+
rescue URI::InvalidURIError => e
|
62
|
+
logger.error { "Error while parsing URI for relocatable tag: #{e.message}" }
|
63
|
+
end
|
53
64
|
end
|
65
|
+
return result
|
54
66
|
end
|
55
67
|
|
56
68
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
#--
|
3
3
|
#
|
4
|
-
# $Id: sitemap.rb
|
4
|
+
# $Id: sitemap.rb 275 2005-05-11 17:30:20Z thomas $
|
5
5
|
#
|
6
6
|
# webgen: template based static website generator
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
@@ -32,6 +32,8 @@ module Tags
|
|
32
32
|
add_param 'itemTag', 'li', 'The tag used for pages.'
|
33
33
|
depends_on 'Tags'
|
34
34
|
|
35
|
+
used_meta_info 'orderInfo'
|
36
|
+
|
35
37
|
def initialize
|
36
38
|
super
|
37
39
|
register_tag( 'sitemap' )
|
@@ -47,18 +49,17 @@ module Tags
|
|
47
49
|
#######
|
48
50
|
|
49
51
|
def output_node( node, srcNode )
|
50
|
-
return '' if not node.find {|c| c
|
52
|
+
return '' if not node.find {|c| c['int:directory?'] || c['int:pagename'] }
|
51
53
|
|
54
|
+
processed_pagenodes = []
|
52
55
|
out = "<#{get_param( 'levelTag' )}>"
|
53
|
-
node.each do |child|
|
54
|
-
next unless child
|
56
|
+
node.sort( &Node::SORT_PROC ).each do |child|
|
57
|
+
next unless (child['int:directory?'] || child['int:pagename']) && !processed_pagenodes.include?( child['int:pagename'] )
|
58
|
+
processed_pagenodes << child['int:pagename'] if child['int:pagename']
|
55
59
|
|
56
|
-
isDir = child
|
60
|
+
isDir = child['int:directory?']
|
57
61
|
subout = output_node( child, srcNode )
|
58
|
-
if subout != '' || !isDir
|
59
|
-
langNode = child['processor'].get_page_node_for_lang( child, srcNode['lang'] )
|
60
|
-
link = langNode['processor'].get_html_link( langNode, srcNode, ( isDir ? langNode['directoryName'] || child['directoryName'] : langNode['title'] ) )
|
61
|
-
end
|
62
|
+
link = child['processor'].get_html_link( child, srcNode ) if subout != '' || !isDir
|
62
63
|
|
63
64
|
out += "<#{get_param( 'itemTag' )}>#{link}" if !isDir || subout != ''
|
64
65
|
out += subout if isDir
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
#--
|
3
3
|
#
|
4
|
-
# $Id: wikilink.rb
|
4
|
+
# $Id: wikilink.rb 275 2005-05-11 17:30:20Z thomas $
|
5
5
|
#
|
6
6
|
# webgen: template based static website generator
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
@@ -35,6 +35,8 @@ module Tags
|
|
35
35
|
add_param 'invalidChars', ' &;', 'The characters which are invalid as wiki URLs.'
|
36
36
|
add_param 'replacementChar', '_', 'The character(s) which should be used instead of the invalid characters.'
|
37
37
|
|
38
|
+
used_meta_info 'title'
|
39
|
+
|
38
40
|
def initialize
|
39
41
|
super
|
40
42
|
register_tag( 'wikilink' )
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.6
|
|
3
3
|
specification_version: 1
|
4
4
|
name: webgen
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.3.
|
7
|
-
date: 2005-
|
6
|
+
version: 0.3.4
|
7
|
+
date: 2005-05-12
|
8
8
|
summary: Webgen is a templated based static website generator.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -36,11 +36,11 @@ files:
|
|
36
36
|
- VERSION
|
37
37
|
- install.rb
|
38
38
|
- bin/webgen
|
39
|
-
- lib/
|
40
|
-
- lib/util/listener.rb
|
39
|
+
- lib/webgen/composite.rb
|
41
40
|
- lib/webgen/configuration.rb
|
42
41
|
- lib/webgen/node.rb
|
43
42
|
- lib/webgen/logging.rb
|
43
|
+
- lib/webgen/listener.rb
|
44
44
|
- lib/webgen/plugin.rb
|
45
45
|
- lib/webgen/webgen.rb
|
46
46
|
- lib/webgen/plugins/treewalker.rb
|
@@ -114,12 +114,14 @@ files:
|
|
114
114
|
- doc/src/design.gallery
|
115
115
|
- doc/src/default.template
|
116
116
|
- doc/src/meta.info
|
117
|
+
- doc/src/generated_by_webgen.png
|
117
118
|
- doc/src/logo.png
|
118
119
|
- doc/src/designs/curdesign.png
|
119
120
|
- doc/src/designs/nostyle.png
|
120
121
|
- doc/src/designs/old.png
|
121
122
|
- doc/src/documentation/gettingstarted.page
|
122
123
|
- doc/src/documentation/index.page
|
124
|
+
- doc/src/documentation/meta_info_reference.page
|
123
125
|
- doc/src/documentation/cli.page
|
124
126
|
- doc/src/documentation/plugins
|
125
127
|
- doc/src/documentation/plugins/tags
|
@@ -185,5 +187,5 @@ dependencies:
|
|
185
187
|
-
|
186
188
|
- ">="
|
187
189
|
- !ruby/object:Gem::Version
|
188
|
-
version: 1.0.
|
190
|
+
version: 1.0.2
|
189
191
|
version:
|