webgen 0.5.2 → 0.5.3
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/Rakefile +15 -4
- data/VERSION +1 -1
- data/data/webgen/webgui/controller/main.rb +1 -1
- data/data/webgen/website_skeleton/ext/init.rb +6 -0
- data/data/webgen/website_styles/1024px/src/default.css +188 -188
- data/data/webgen/website_styles/1024px/src/default.template +51 -51
- data/data/webgen/website_styles/andreas00/src/default.template +1 -1
- data/data/webgen/website_styles/andreas01/src/default.css +8 -8
- data/data/webgen/website_styles/andreas01/src/default.template +1 -1
- data/data/webgen/website_styles/andreas03/src/default.css +3 -3
- data/data/webgen/website_styles/andreas03/src/default.template +2 -2
- data/data/webgen/website_styles/andreas04/src/default.css +1 -1
- data/data/webgen/website_styles/andreas05/src/default.css +3 -3
- data/data/webgen/website_styles/andreas05/src/default.template +26 -26
- data/data/webgen/website_styles/andreas06/src/default.css +6 -6
- data/data/webgen/website_styles/andreas06/src/default.template +1 -1
- data/data/webgen/website_styles/andreas07/src/default.css +6 -6
- data/data/webgen/website_styles/andreas08/src/default.css +7 -7
- data/data/webgen/website_styles/andreas08/src/default.template +2 -2
- data/data/webgen/website_styles/andreas09/src/default.css +3 -3
- data/data/webgen/website_styles/andreas09/src/default.template +1 -1
- data/data/webgen/website_styles/simple/src/default.css +84 -84
- data/data/webgen/website_styles/simple/src/default.template +1 -1
- data/doc/index.page +27 -12
- data/doc/manual.page +52 -10
- data/doc/reference_configuration.page +108 -52
- data/doc/reference_metainfo.page +77 -2
- data/doc/sourcehandler/feed.page +82 -0
- data/doc/sourcehandler/metainfo.page +3 -2
- data/doc/sourcehandler/sitemap.page +46 -0
- data/doc/tag.template +2 -3
- data/doc/tag/breadcrumbtrail.page +11 -3
- data/doc/tag/menu.page +6 -4
- data/doc/tag/sitemap.page +31 -0
- data/doc/upgrading.page +67 -0
- data/lib/webgen/cli/utils.rb +4 -4
- data/lib/webgen/cli/webgui_command.rb +2 -1
- data/lib/webgen/common.rb +10 -0
- data/lib/webgen/common/sitemap.rb +76 -0
- data/lib/webgen/configuration.rb +64 -1
- data/lib/webgen/contentprocessor.rb +1 -1
- data/lib/webgen/contentprocessor/builder.rb +1 -1
- data/lib/webgen/contentprocessor/erb.rb +1 -1
- data/lib/webgen/contentprocessor/haml.rb +1 -1
- data/lib/webgen/contentprocessor/maruku.rb +1 -1
- data/lib/webgen/contentprocessor/sass.rb +1 -1
- data/lib/webgen/coreext.rb +10 -0
- data/lib/webgen/default_config.rb +35 -4
- data/lib/webgen/node.rb +12 -6
- data/lib/webgen/page.rb +1 -1
- data/lib/webgen/path.rb +1 -1
- data/lib/webgen/sourcehandler.rb +11 -6
- data/lib/webgen/sourcehandler/base.rb +5 -2
- data/lib/webgen/sourcehandler/feed.rb +121 -0
- data/lib/webgen/sourcehandler/metainfo.rb +22 -13
- data/lib/webgen/sourcehandler/page.rb +5 -3
- data/lib/webgen/sourcehandler/sitemap.rb +60 -0
- data/lib/webgen/sourcehandler/template.rb +5 -1
- data/lib/webgen/sourcehandler/virtual.rb +1 -0
- data/lib/webgen/tag.rb +1 -0
- data/lib/webgen/tag/breadcrumbtrail.rb +42 -10
- data/lib/webgen/tag/langbar.rb +1 -1
- data/lib/webgen/tag/menu.rb +10 -14
- data/lib/webgen/tag/sitemap.rb +42 -0
- data/lib/webgen/tree.rb +1 -1
- data/lib/webgen/version.rb +1 -1
- data/lib/webgen/website.rb +5 -6
- data/misc/default.css +6 -2
- data/test/helper.rb +13 -0
- data/test/test_common_sitemap.rb +56 -0
- data/test/test_configuration.rb +24 -0
- data/test/test_contentprocessor_maruku.rb +4 -1
- data/test/test_node.rb +4 -1
- data/test/test_page.rb +11 -5
- data/test/test_path.rb +10 -10
- data/test/test_sourcehandler_feed.rb +74 -0
- data/test/test_sourcehandler_metainfo.rb +26 -12
- data/test/test_sourcehandler_page.rb +1 -0
- data/test/test_sourcehandler_sitemap.rb +47 -0
- data/test/test_sourcehandler_template.rb +3 -0
- data/test/test_sourcehandler_virtual.rb +4 -1
- data/test/test_tag_breadcrumbtrail.rb +33 -23
- data/test/test_tag_menu.rb +24 -25
- data/test/test_tag_sitemap.rb +44 -0
- metadata +37 -4
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'webgen/websiteaccess'
|
2
|
+
require 'webgen/tag'
|
3
|
+
|
4
|
+
module Webgen::Tag
|
5
|
+
|
6
|
+
# Generates a sitemap. The sitemap contains the hierarchy of all pages on the web site.
|
7
|
+
class Sitemap
|
8
|
+
|
9
|
+
include Base
|
10
|
+
include Webgen::WebsiteAccess
|
11
|
+
|
12
|
+
# Create the sitemap.
|
13
|
+
def call(tag, body, context)
|
14
|
+
tree = website.blackboard.invoke(:create_sitemap, context.dest_node, context.content_node.lang, @params)
|
15
|
+
(tree.children.empty? ? '' : output_sitemap(tree, context))
|
16
|
+
end
|
17
|
+
|
18
|
+
#######
|
19
|
+
private
|
20
|
+
#######
|
21
|
+
|
22
|
+
# The modified tag base to support the easy specification of common.sitemap.* options.
|
23
|
+
def tag_config_base
|
24
|
+
'common.sitemap'
|
25
|
+
end
|
26
|
+
|
27
|
+
# Create the HTML representation of the sitemap nodes in +tree+ in respect to +context+.
|
28
|
+
def output_sitemap(tree, context)
|
29
|
+
out = "<ul>"
|
30
|
+
tree.children.each do |child|
|
31
|
+
sub = (child.children.length > 0 ? output_sitemap(child, context) : '')
|
32
|
+
out << "<li>" + context.dest_node.link_to(child.node, :lang => child.node.lang || context.content_node.lang)
|
33
|
+
out << sub
|
34
|
+
out << "</li>"
|
35
|
+
end
|
36
|
+
out << "</ul>"
|
37
|
+
out
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
data/lib/webgen/tree.rb
CHANGED
@@ -64,7 +64,7 @@ module Webgen
|
|
64
64
|
n = node_or_alcn.kind_of?(Node) ? node_or_alcn : @node_access[:alcn][node_or_alcn]
|
65
65
|
return if n.nil? || n == @dummy_root || (n.is_directory? && !delete_dir)
|
66
66
|
|
67
|
-
n.children.dup.each {|child| delete_node(child,
|
67
|
+
n.children.dup.each {|child| delete_node(child, delete_dir)}
|
68
68
|
|
69
69
|
website.blackboard.dispatch_msg(:before_node_deleted, n)
|
70
70
|
n.parent.children.delete(n)
|
data/lib/webgen/version.rb
CHANGED
data/lib/webgen/website.rb
CHANGED
@@ -4,6 +4,7 @@ require 'set'
|
|
4
4
|
require 'fileutils'
|
5
5
|
|
6
6
|
# Requirements for Website
|
7
|
+
require 'webgen/coreext'
|
7
8
|
require 'webgen/loggable'
|
8
9
|
require 'webgen/logger'
|
9
10
|
require 'webgen/configuration'
|
@@ -13,6 +14,7 @@ require 'webgen/cache'
|
|
13
14
|
require 'webgen/tree'
|
14
15
|
|
15
16
|
# Files for autoloading
|
17
|
+
require 'webgen/common'
|
16
18
|
require 'webgen/source'
|
17
19
|
require 'webgen/output'
|
18
20
|
require 'webgen/sourcehandler'
|
@@ -194,12 +196,9 @@ module Webgen
|
|
194
196
|
config = YAML::load(File.read(file)) || {}
|
195
197
|
raise 'Structure of config file is not valid, has to be a Hash' if !config.kind_of?(Hash)
|
196
198
|
config.each do |key, value|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
end
|
201
|
-
else
|
202
|
-
@config[key] = value
|
199
|
+
case key
|
200
|
+
when *Webgen::Configuration::Helpers.public_instance_methods(false) then @config.send(key, value)
|
201
|
+
else @config[key] = value
|
203
202
|
end
|
204
203
|
end
|
205
204
|
rescue RuntimeError, ArgumentError => e
|
data/misc/default.css
CHANGED
@@ -54,8 +54,8 @@ h3 { font-size: 1.3em; }
|
|
54
54
|
|
55
55
|
#sidebar h1 {
|
56
56
|
font: bold 1.4em 'Trebuchet MS', Arial, Sans-serif;
|
57
|
-
background: url(images/arrow.gif) no-repeat
|
58
|
-
padding: 7px 0 7px
|
57
|
+
background: url(images/arrow.gif) no-repeat 0px .6em;
|
58
|
+
padding: 7px 0 7px 25px;
|
59
59
|
color: #193441;
|
60
60
|
}
|
61
61
|
|
@@ -217,6 +217,10 @@ blockquote pre {
|
|
217
217
|
margin: 0; padding: 10px;
|
218
218
|
background-color: #91AA9D;
|
219
219
|
}
|
220
|
+
#sidebar p {
|
221
|
+
margin: 0px;
|
222
|
+
padding-left: 10px;
|
223
|
+
}
|
220
224
|
#sidebar ul {
|
221
225
|
list-style: inside square;
|
222
226
|
margin: 0px;
|
data/test/helper.rb
CHANGED
@@ -23,6 +23,19 @@ module Test
|
|
23
23
|
path
|
24
24
|
end
|
25
25
|
|
26
|
+
def create_sitemap_nodes
|
27
|
+
{
|
28
|
+
:root => root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/', {'index_path' => 'index.html'}),
|
29
|
+
:dir1 => dir1 = Webgen::Node.new(root, '/dir1/', 'dir1/'),
|
30
|
+
:file11_en => file11 = Webgen::Node.new(dir1, '/dir1/file11.en.html', 'file11.html', {'lang' => 'en', 'in_menu' => true, 'kind' => 'page'}),
|
31
|
+
:file11_en_f1 => file11_f1 = Webgen::Node.new(file11, '/dir1/file11.en.html#f1', '#f1', {'in_menu' => true}),
|
32
|
+
:dir2 => dir2 = Webgen::Node.new(root, '/dir2/', 'dir2/', {'kind' => 'directory'}),
|
33
|
+
:file21_en => Webgen::Node.new(dir2, '/dir2/file21.en.html', 'file21.html', {'lang' => 'en', 'in_menu' => false, 'kind' => 'other'}),
|
34
|
+
:file1_de => Webgen::Node.new(root, '/file1.de.html', 'file1.html', {'lang' => 'de', 'in_menu' => true, 'kind' => 'page'}),
|
35
|
+
:index_en => Webgen::Node.new(root, '/index.en.html', 'index.html', {'lang' => 'en', 'kind' => 'page'}),
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
26
39
|
end
|
27
40
|
|
28
41
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'helper'
|
3
|
+
require 'webgen/tree'
|
4
|
+
require 'webgen/contentprocessor'
|
5
|
+
require 'webgen/common'
|
6
|
+
|
7
|
+
class TestCommonSitemap < Test::Unit::TestCase
|
8
|
+
|
9
|
+
include Test::WebsiteHelper
|
10
|
+
|
11
|
+
def setup
|
12
|
+
super
|
13
|
+
@obj = Webgen::Common::Sitemap.new
|
14
|
+
@nodes = create_sitemap_nodes
|
15
|
+
end
|
16
|
+
|
17
|
+
def do_assert(node, lang, honor_in_menu, any_lang, used_kinds, result)
|
18
|
+
assert_equal(result.map {|name| @nodes[name].absolute_lcn },
|
19
|
+
@obj.create_sitemap(node, lang, {
|
20
|
+
'common.sitemap.honor_in_menu' => honor_in_menu,
|
21
|
+
'common.sitemap.any_lang' => any_lang,
|
22
|
+
'common.sitemap.used_kinds' => used_kinds
|
23
|
+
}).to_lcn_list.flatten)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_create_sitemap_and_node_chagned
|
27
|
+
do_assert(@nodes[:file11_en], 'en', false, false, ['page'],
|
28
|
+
[:dir1, :file11_en, :index_en])
|
29
|
+
do_assert(@nodes[:file11_en], 'en', true, false, ['page'],
|
30
|
+
[:dir1, :file11_en])
|
31
|
+
do_assert(@nodes[:file11_en], 'en', false, false, ['page', 'other'],
|
32
|
+
[:dir1, :file11_en, :dir2, :file21_en, :index_en])
|
33
|
+
do_assert(@nodes[:file11_en], 'en', false, false, [],
|
34
|
+
[:dir1, :file11_en, :file11_en_f1, :dir2, :file21_en, :index_en])
|
35
|
+
do_assert(@nodes[:file11_en], 'en', false, false, ['noone'],
|
36
|
+
[])
|
37
|
+
do_assert(@nodes[:file11_en], 'en', false, false, ['page', 'directory'],
|
38
|
+
[:dir1, :file11_en, :dir2, :index_en])
|
39
|
+
do_assert(@nodes[:file11_en], 'en', true, false, ['page', 'directory'],
|
40
|
+
[:dir1, :file11_en])
|
41
|
+
|
42
|
+
do_assert(@nodes[:file1_de], 'de', false, false, ['page'],
|
43
|
+
[:file1_de])
|
44
|
+
do_assert(@nodes[:file1_de], 'de', false, true, ['page'],
|
45
|
+
[:dir1, :file11_en, :file1_de, :index_en])
|
46
|
+
|
47
|
+
@nodes[:file11_en].dirty = false
|
48
|
+
@website.blackboard.dispatch_msg(:node_changed?, @nodes[:file11_en])
|
49
|
+
assert(!@nodes[:file11_en].dirty)
|
50
|
+
|
51
|
+
@nodes[:file11_en].dirty_meta_info = true
|
52
|
+
@website.blackboard.dispatch_msg(:node_changed?, @nodes[:file11_en])
|
53
|
+
assert(@nodes[:file11_en].dirty)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
data/test/test_configuration.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'webgen/configuration'
|
3
|
+
require 'webgen/sourcehandler'
|
3
4
|
|
4
5
|
class TestConfiguration < Test::Unit::TestCase
|
5
6
|
|
@@ -32,4 +33,27 @@ class TestConfiguration < Test::Unit::TestCase
|
|
32
33
|
assert_raise(ArgumentError) { @config['not.existing'] = :newvalue}
|
33
34
|
end
|
34
35
|
|
36
|
+
def test_set_options_using_helpers
|
37
|
+
@config = Webgen::Configuration.new
|
38
|
+
@config.sourcehandler.default_meta_info({'Webgen::SourceHandler::Page' => {'in_menu' => true}})
|
39
|
+
@config.sourcehandler.patterns({'Webgen::SourceHandler::Page' => ['**/*.page']})
|
40
|
+
|
41
|
+
@config.default_meta_info('Page' => {'in_menu' => false, 'test' => true})
|
42
|
+
assert_equal({'in_menu' => false, 'test' => true}, @config['sourcehandler.default_meta_info']['Webgen::SourceHandler::Page'])
|
43
|
+
@config.default_meta_info('Webgen::SourceHandler::Page' => {'in_menu' => true, :action => 'replace'})
|
44
|
+
assert_equal({'in_menu' => true}, @config['sourcehandler.default_meta_info']['Webgen::SourceHandler::Page'])
|
45
|
+
@config.default_meta_info('Other' => {'in_menu' => false})
|
46
|
+
assert_equal({'in_menu' => false}, @config['sourcehandler.default_meta_info']['Other'])
|
47
|
+
assert_raise(ArgumentError) { @config.default_meta_info([5,6]) }
|
48
|
+
|
49
|
+
@config.patterns('Page' => ['**/*.html'])
|
50
|
+
assert_equal(['**/*.html'], @config['sourcehandler.patterns']['Webgen::SourceHandler::Page'])
|
51
|
+
@config.patterns('Page' => {'del' => ['**/*.html'], 'add' => ['**/*.page']})
|
52
|
+
assert_equal(['**/*.page'], @config['sourcehandler.patterns']['Webgen::SourceHandler::Page'])
|
53
|
+
@config.patterns('Other' => {'del' => ['**/*.html'], 'add' => ['**/*.page']})
|
54
|
+
assert_equal(['**/*.page'], @config['sourcehandler.patterns']['Other'])
|
55
|
+
assert_raise(ArgumentError) { @config.patterns([5,6]) }
|
56
|
+
assert_raise(ArgumentError) { @config.patterns('Page' => 5) }
|
57
|
+
end
|
58
|
+
|
35
59
|
end
|
@@ -1,11 +1,14 @@
|
|
1
1
|
require 'test/unit'
|
2
|
+
require 'webgen/node'
|
3
|
+
require 'webgen/tree'
|
2
4
|
require 'webgen/contentprocessor'
|
3
5
|
|
4
6
|
class TestContentProcessorMaruku < Test::Unit::TestCase
|
5
7
|
|
6
8
|
def test_call
|
7
9
|
@obj = Webgen::ContentProcessor::Maruku.new
|
8
|
-
|
10
|
+
node = Webgen::Node.new(Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/'), 'test', 'test')
|
11
|
+
context = Webgen::ContentProcessor::Context.new(:content => '# header', :chain => [node])
|
9
12
|
assert_equal('<h1 id=\'header\'>header</h1>', @obj.call(context).content)
|
10
13
|
|
11
14
|
context.content = "# head*d* {#das .dsaf "
|
data/test/test_node.rb
CHANGED
@@ -27,6 +27,7 @@ class TestNode < Test::Unit::TestCase
|
|
27
27
|
:dir_file_frag => Webgen::Node.new(dir_file, '/dir/file.html#frag', '#frag'),
|
28
28
|
:dir2 => dir2 = Webgen::Node.new(node, '/dir2/', 'dir2/', {'index_path' => 'index.html', 'title' => 'dir2'}),
|
29
29
|
:dir2_index_en => Webgen::Node.new(dir2, '/dir2/index.html', 'index.html', {'lang' => 'en', 'routed_title' => 'routed', 'title' => 'index'}),
|
30
|
+
:dir2_index_de => Webgen::Node.new(dir2, '/dir2/index.de.html', 'index.html', {'lang' => 'de', 'routed_title' => 'routed_de', 'title' => 'index'}),
|
30
31
|
}
|
31
32
|
end
|
32
33
|
|
@@ -308,10 +309,12 @@ class TestNode < Test::Unit::TestCase
|
|
308
309
|
nodes[:somename_en].link_to(nodes[:somename_en_frag], :link_text => 'link_text', 'attr1' => 'val1'))
|
309
310
|
|
310
311
|
# links to directories
|
311
|
-
assert_equal('<a href="dir2/">
|
312
|
+
assert_equal('<a href="dir2/index.de.html">routed_de</a>',
|
312
313
|
nodes[:somename_de].link_to(nodes[:dir2]))
|
313
314
|
assert_equal('<a href="dir2/index.html">routed</a>',
|
314
315
|
nodes[:somename_en].link_to(nodes[:dir2]))
|
316
|
+
assert_equal('<a href="dir2/index.de.html">routed_de</a>',
|
317
|
+
nodes[:somename_en].link_to(nodes[:dir2], :lang => 'de'))
|
315
318
|
assert_equal('<span>routed</span>',
|
316
319
|
nodes[:dir2_index_en].link_to(nodes[:dir2]))
|
317
320
|
|
data/test/test_page.rb
CHANGED
@@ -64,6 +64,16 @@ class TestPage < Test::Unit::TestCase
|
|
64
64
|
- name: content
|
65
65
|
content: ''
|
66
66
|
|
67
|
+
# with only meta information, no blocks
|
68
|
+
- in: |
|
69
|
+
---
|
70
|
+
key: value
|
71
|
+
|
72
|
+
meta_info: {key: value}
|
73
|
+
blocks:
|
74
|
+
- name: content
|
75
|
+
content: ''
|
76
|
+
|
67
77
|
# block with escaped ---
|
68
78
|
- in: |
|
69
79
|
before
|
@@ -123,11 +133,6 @@ EOF
|
|
123
133
|
---
|
124
134
|
asdf kadsfakl
|
125
135
|
|
126
|
-
# no block specified
|
127
|
-
- |
|
128
|
-
---
|
129
|
-
doit: now
|
130
|
-
|
131
136
|
# two blocks with same name
|
132
137
|
- |
|
133
138
|
aasdf
|
@@ -156,6 +161,7 @@ EOF
|
|
156
161
|
YAML::load(VALID).each_with_index do |data, oindex|
|
157
162
|
d = Webgen::Page.from_data(data['in'])
|
158
163
|
assert_equal(data['meta_info'], d.meta_info, "test item #{oindex} - meta info")
|
164
|
+
assert_equal(data['blocks'].length*2, d.blocks.length)
|
159
165
|
data['blocks'].each_with_index do |b, index|
|
160
166
|
index += 1
|
161
167
|
assert_equal(b['name'], d.blocks[index].name, "test item #{oindex} - name")
|
data/test/test_path.rb
CHANGED
@@ -18,26 +18,26 @@ class TestPath < Test::Unit::TestCase
|
|
18
18
|
check_proc.call(Webgen::Path.new('5.base_name-one.de.page'),
|
19
19
|
'5.base_name-one.de.page', './', 'base_name-one', 'de', 'page', 'base_name-one.page', 5, 'Base name one')
|
20
20
|
check_proc.call(Webgen::Path.new('dir/default.png'),
|
21
|
-
'dir/default.png', 'dir/', 'default', nil, 'png', 'default.png',
|
21
|
+
'dir/default.png', 'dir/', 'default', nil, 'png', 'default.png', nil, 'Default')
|
22
22
|
check_proc.call(Webgen::Path.new('default.en.png'),
|
23
|
-
'default.en.png', './', 'default', 'en', 'png', 'default.png',
|
23
|
+
'default.en.png', './', 'default', 'en', 'png', 'default.png', nil, 'Default')
|
24
24
|
check_proc.call(Webgen::Path.new('default.deu.png'),
|
25
|
-
'default.deu.png', './', 'default', 'de', 'png', 'default.png',
|
25
|
+
'default.deu.png', './', 'default', 'de', 'png', 'default.png', nil, 'Default')
|
26
26
|
check_proc.call(Webgen::Path.new('default.template'),
|
27
|
-
'default.template', './', 'default', nil, 'template', 'default.template',
|
27
|
+
'default.template', './', 'default', nil, 'template', 'default.template', nil, 'Default')
|
28
28
|
check_proc.call(Webgen::Path.new('default.en.tar.bz2'),
|
29
|
-
'default.en.tar.bz2', './', 'default', 'en', 'tar.bz2', 'default.tar.bz2',
|
29
|
+
'default.en.tar.bz2', './', 'default', 'en', 'tar.bz2', 'default.tar.bz2', nil, 'Default')
|
30
30
|
check_proc.call(Webgen::Path.new('default.tar.bz2'),
|
31
|
-
'default.tar.bz2', './', 'default', nil, 'tar.bz2', 'default.tar.bz2',
|
31
|
+
'default.tar.bz2', './', 'default', nil, 'tar.bz2', 'default.tar.bz2', nil, 'Default')
|
32
32
|
check_proc.call(Webgen::Path.new('default'),
|
33
|
-
'default', './', 'default', nil, '', 'default',
|
33
|
+
'default', './', 'default', nil, '', 'default', nil, 'Default')
|
34
34
|
check_proc.call(Webgen::Path.new('.htaccess'),
|
35
|
-
'.htaccess', './', '', nil, 'htaccess', '.htaccess',
|
35
|
+
'.htaccess', './', '', nil, 'htaccess', '.htaccess', nil, '')
|
36
36
|
|
37
37
|
check_proc.call(Webgen::Path.new('/'),
|
38
|
-
'/', '/', '/', nil, '', '/',
|
38
|
+
'/', '/', '/', nil, '', '/', nil, '/')
|
39
39
|
check_proc.call(Webgen::Path.new('/dir/'),
|
40
|
-
'/dir/', '/', 'dir', nil, '', 'dir',
|
40
|
+
'/dir/', '/', 'dir', nil, '', 'dir', nil, 'Dir')
|
41
41
|
end
|
42
42
|
|
43
43
|
def test_mount_at
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'helper'
|
3
|
+
require 'webgen/sourcehandler/feed'
|
4
|
+
require 'stringio'
|
5
|
+
|
6
|
+
class TestSourceHandlerFeed < Test::Unit::TestCase
|
7
|
+
|
8
|
+
include Test::WebsiteHelper
|
9
|
+
|
10
|
+
FEED_CONTENT = <<EOF
|
11
|
+
---
|
12
|
+
site_url: http://example.com
|
13
|
+
entries: *.html
|
14
|
+
author: Thomas Leitner
|
15
|
+
--- name:rss_template
|
16
|
+
hallo
|
17
|
+
EOF
|
18
|
+
def setup
|
19
|
+
super
|
20
|
+
@nodes = {
|
21
|
+
:root => root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/', {'index_path' => 'index.html'}),
|
22
|
+
:file1_en => Webgen::Node.new(root, '/file1.en.html', 'file1.html', {'lang' => 'en', 'in_menu' => true, 'modified_at' => Time.now}),
|
23
|
+
:index_en => Webgen::Node.new(root, '/index.en.html', 'index.html', {'lang' => 'en', 'modified_at' => Time.now - 1, 'author' => 'test'}),
|
24
|
+
}
|
25
|
+
@nodes[:index_en].node_info[:page] = Webgen::Page.from_data("hallo")
|
26
|
+
@obj = Webgen::SourceHandler::Feed.new
|
27
|
+
@path = path_with_meta_info('/test.feed', {}, @obj.class.name) {StringIO.new(FEED_CONTENT)}
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_create_node
|
31
|
+
atom_node, rss_node = @obj.create_node(@nodes[:root], @path)
|
32
|
+
|
33
|
+
assert_not_nil(atom_node)
|
34
|
+
assert_not_nil(rss_node)
|
35
|
+
assert_kind_of(Webgen::Page, atom_node.node_info[:feed])
|
36
|
+
assert_equal('atom', atom_node.node_info[:feed_type])
|
37
|
+
assert_equal('rss', rss_node.node_info[:feed_type])
|
38
|
+
|
39
|
+
assert_equal([nil, nil], @obj.create_node(@nodes[:root], @path))
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_content
|
43
|
+
atom_node, rss_node = @obj.create_node(@nodes[:root], @path)
|
44
|
+
assert_equal('hallo', rss_node.content)
|
45
|
+
assert(atom_node.content =~ /Thomas Leitner/)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_feed_entries
|
49
|
+
atom_node, rss_node = @obj.create_node(@nodes[:root], @path)
|
50
|
+
assert_equal([@nodes[:index_en]], atom_node.feed_entries)
|
51
|
+
assert_equal([@nodes[:index_en]], rss_node.feed_entries)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_node_changed
|
55
|
+
atom_node, rss_node = @obj.create_node(@nodes[:root], @path)
|
56
|
+
assert(atom_node.changed?)
|
57
|
+
|
58
|
+
atom_node.content # populate cache
|
59
|
+
@website.cache.old_data.update(@website.cache.new_data)
|
60
|
+
|
61
|
+
atom_node.dirty = false
|
62
|
+
assert(atom_node.changed?)
|
63
|
+
|
64
|
+
atom_node.dirty = false
|
65
|
+
@nodes[:file1_en].dirty = false
|
66
|
+
@nodes[:index_en].dirty = false
|
67
|
+
assert(!atom_node.changed?)
|
68
|
+
|
69
|
+
atom_node.dirty = false
|
70
|
+
atom_node['entries'] = 'file.*.html'
|
71
|
+
assert(atom_node.changed?)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -34,11 +34,18 @@ EOF
|
|
34
34
|
assert_equal({'/**/*' => {'after' => 'valaft'}}, @node.node_info[:mi_alcn])
|
35
35
|
end
|
36
36
|
|
37
|
+
def test_meta_info_changed
|
38
|
+
other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
|
39
|
+
assert(@obj.send(:meta_info_changed?, @node, other))
|
40
|
+
@website.cache.old_data.update(@website.cache.new_data)
|
41
|
+
assert(!@obj.send(:meta_info_changed?, @node, other))
|
42
|
+
end
|
43
|
+
|
37
44
|
def test_mark_all_matched_dirty
|
38
45
|
other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
|
39
|
-
other.
|
46
|
+
other.dirty_meta_info = false
|
40
47
|
@obj.send(:mark_all_matched_dirty, @node)
|
41
|
-
assert(other.
|
48
|
+
assert(other.dirty_meta_info)
|
42
49
|
end
|
43
50
|
|
44
51
|
def test_before_node_created
|
@@ -55,21 +62,28 @@ EOF
|
|
55
62
|
|
56
63
|
def test_before_node_deleted
|
57
64
|
other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
|
58
|
-
other.
|
65
|
+
other.dirty_meta_info = false
|
66
|
+
|
67
|
+
@website.blackboard.del_service(:source_paths)
|
68
|
+
@website.blackboard.add_service(:source_paths) { {'/metainfo' => ''} }
|
69
|
+
@website.blackboard.dispatch_msg(:before_node_deleted, @node)
|
70
|
+
assert(!other.dirty_meta_info)
|
71
|
+
|
72
|
+
@website.blackboard.del_service(:source_paths)
|
73
|
+
@website.blackboard.add_service(:source_paths) { {} }
|
59
74
|
@website.blackboard.dispatch_msg(:before_node_deleted, @node)
|
60
|
-
assert(other.
|
75
|
+
assert(other.dirty_meta_info)
|
61
76
|
end
|
62
77
|
|
63
|
-
def
|
64
|
-
@node.
|
65
|
-
@website.blackboard.dispatch_msg(:
|
66
|
-
assert(!@node.
|
78
|
+
def test_node_meta_info_changed
|
79
|
+
@node.dirty_meta_info = false
|
80
|
+
@website.blackboard.dispatch_msg(:node_meta_info_changed?, @node)
|
81
|
+
assert(!@node.dirty_meta_info)
|
67
82
|
|
68
|
-
@node.dirty = true
|
69
83
|
other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
|
70
|
-
other.
|
71
|
-
@website.blackboard.dispatch_msg(:
|
72
|
-
assert(other.
|
84
|
+
other.dirty_meta_info = false
|
85
|
+
@website.blackboard.dispatch_msg(:node_meta_info_changed?, other)
|
86
|
+
assert(other.dirty_meta_info)
|
73
87
|
end
|
74
88
|
|
75
89
|
def test_content
|