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