webgen 0.5.5 → 0.5.6
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +3662 -0
- data/Rakefile +8 -1
- data/VERSION +1 -1
- data/data/webgen/website_styles/1024px/src/default.template +1 -1
- data/data/webgen/website_styles/andreas00/src/default.template +1 -1
- data/data/webgen/website_styles/andreas01/src/default.template +2 -1
- data/data/webgen/website_styles/andreas03/src/default.template +1 -1
- data/data/webgen/website_styles/andreas04/src/default.template +1 -1
- data/data/webgen/website_styles/andreas05/src/default.template +1 -1
- data/data/webgen/website_styles/andreas06/src/default.template +1 -1
- data/data/webgen/website_styles/andreas07/src/default.template +1 -1
- data/data/webgen/website_styles/andreas08/src/default.template +1 -1
- data/data/webgen/website_styles/andreas09/src/default.template +1 -1
- data/data/webgen/website_styles/simple/src/default.template +1 -1
- data/doc/contentprocessor/fragments.page +25 -0
- data/doc/extensions.page +1 -1
- data/doc/manual.page +33 -15
- data/doc/reference_configuration.page +339 -62
- data/doc/reference_metainfo.page +11 -2
- data/doc/sourcehandler/feed.page +19 -4
- data/doc/sourcehandler/page.page +0 -16
- data/doc/tag/langbar.page +8 -1
- data/doc/tag/link.page +44 -0
- data/doc/tag/tikz.page +158 -0
- data/lib/webgen/cli.rb +4 -4
- data/lib/webgen/common/sitemap.rb +2 -3
- data/lib/webgen/configuration.rb +3 -1
- data/lib/webgen/contentprocessor.rb +1 -0
- data/lib/webgen/contentprocessor/blocks.rb +0 -2
- data/lib/webgen/contentprocessor/context.rb +0 -3
- data/lib/webgen/contentprocessor/erubis.rb +0 -2
- data/lib/webgen/contentprocessor/fragments.rb +23 -0
- data/lib/webgen/default_config.rb +15 -2
- data/lib/webgen/languages.rb +9 -0
- data/lib/webgen/logger.rb +18 -1
- data/lib/webgen/node.rb +50 -25
- data/lib/webgen/page.rb +26 -16
- data/lib/webgen/path.rb +20 -10
- data/lib/webgen/sourcehandler.rb +85 -69
- data/lib/webgen/sourcehandler/base.rb +38 -15
- data/lib/webgen/sourcehandler/copy.rb +2 -2
- data/lib/webgen/sourcehandler/directory.rb +16 -13
- data/lib/webgen/sourcehandler/feed.rb +6 -12
- data/lib/webgen/sourcehandler/fragment.rb +6 -11
- data/lib/webgen/sourcehandler/memory.rb +41 -0
- data/lib/webgen/sourcehandler/metainfo.rb +21 -21
- data/lib/webgen/sourcehandler/page.rb +7 -27
- data/lib/webgen/sourcehandler/sitemap.rb +0 -2
- data/lib/webgen/sourcehandler/template.rb +0 -4
- data/lib/webgen/sourcehandler/virtual.rb +18 -18
- data/lib/webgen/tag.rb +2 -0
- data/lib/webgen/tag/breadcrumbtrail.rb +1 -4
- data/lib/webgen/tag/coderay.rb +0 -3
- data/lib/webgen/tag/date.rb +0 -2
- data/lib/webgen/tag/executecommand.rb +1 -2
- data/lib/webgen/tag/includefile.rb +1 -3
- data/lib/webgen/tag/langbar.rb +2 -5
- data/lib/webgen/tag/link.rb +23 -0
- data/lib/webgen/tag/menu.rb +1 -4
- data/lib/webgen/tag/metainfo.rb +0 -2
- data/lib/webgen/tag/relocatable.rb +2 -3
- data/lib/webgen/tag/sitemap.rb +0 -3
- data/lib/webgen/tag/tikz.rb +117 -0
- data/lib/webgen/tree.rb +11 -6
- data/lib/webgen/version.rb +1 -1
- data/lib/webgen/website.rb +2 -1
- data/test/test_cli.rb +14 -0
- data/test/test_common_sitemap.rb +4 -4
- data/test/test_contentprocessor_context.rb +1 -1
- data/test/test_contentprocessor_fragments.rb +40 -0
- data/test/test_contentprocessor_redcloth.rb +1 -0
- data/test/test_contentprocessor_tags.rb +1 -1
- data/test/test_languages.rb +12 -0
- data/test/test_logger.rb +19 -0
- data/test/test_node.rb +35 -15
- data/test/test_output_filesystem.rb +1 -1
- data/test/test_page.rb +15 -6
- data/test/test_path.rb +37 -5
- data/test/test_source_filesystem.rb +1 -1
- data/test/test_source_stacked.rb +1 -1
- data/test/test_sourcehandler_base.rb +30 -1
- data/test/test_sourcehandler_copy.rb +1 -1
- data/test/test_sourcehandler_directory.rb +16 -1
- data/test/test_sourcehandler_feed.rb +9 -8
- data/test/test_sourcehandler_fragment.rb +1 -1
- data/test/test_sourcehandler_memory.rb +42 -0
- data/test/test_sourcehandler_metainfo.rb +23 -21
- data/test/test_sourcehandler_page.rb +5 -12
- data/test/test_sourcehandler_template.rb +1 -1
- data/test/test_sourcehandler_virtual.rb +2 -2
- data/test/test_tag_base.rb +0 -1
- data/test/test_tag_breadcrumbtrail.rb +4 -4
- data/test/test_tag_includefile.rb +3 -3
- data/test/test_tag_langbar.rb +12 -7
- data/test/test_tag_link.rb +61 -0
- data/test/test_tag_menu.rb +7 -7
- data/test/test_tag_metainfo.rb +1 -1
- data/test/test_tag_relocatable.rb +1 -1
- data/test/test_tag_tikz.rb +66 -0
- data/test/test_tree.rb +8 -9
- metadata +15 -2
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'helper'
|
3
|
-
require 'webgen/sourcehandler
|
3
|
+
require 'webgen/sourcehandler'
|
4
4
|
require 'stringio'
|
5
5
|
|
6
6
|
class TestSourceHandlerDirectory < Test::Unit::TestCase
|
@@ -14,10 +14,25 @@ class TestSourceHandlerDirectory < Test::Unit::TestCase
|
|
14
14
|
assert_not_nil(node)
|
15
15
|
assert_equal(:value, node[:key])
|
16
16
|
|
17
|
+
node.flag(:reinit)
|
17
18
|
assert_equal(node, @obj.create_node(root, path_with_meta_info('/dir/', {:key => :other}) {StringIO.new('')}))
|
18
19
|
assert_equal(:other, node[:key])
|
19
20
|
end
|
20
21
|
|
22
|
+
def test_create_directories
|
23
|
+
@obj = Webgen::SourceHandler::Directory.new
|
24
|
+
shm = Webgen::SourceHandler::Main.new # for using service :create_nodes
|
25
|
+
root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test')
|
26
|
+
dir = @obj.create_node(root, path_with_meta_info('/dir/'))
|
27
|
+
|
28
|
+
assert_equal(dir, @obj.create_directories(root, '/dir/', path_with_meta_info('/test')))
|
29
|
+
assert_equal(dir, @obj.create_directories(root, 'dir/', path_with_meta_info('/test')))
|
30
|
+
assert_equal(dir, @obj.create_directories(root, 'dir', path_with_meta_info('/test')))
|
31
|
+
|
32
|
+
which = @obj.create_directories(root, 'dir/under/which', path_with_meta_info('/test'))
|
33
|
+
assert_equal(which, @obj.create_directories(root, 'dir/under/which', path_with_meta_info('/test')))
|
34
|
+
end
|
35
|
+
|
21
36
|
def test_content
|
22
37
|
assert_equal('', Webgen::SourceHandler::Directory.new.content(nil))
|
23
38
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'helper'
|
3
|
-
require 'webgen/sourcehandler
|
3
|
+
require 'webgen/sourcehandler'
|
4
4
|
require 'stringio'
|
5
5
|
|
6
6
|
class TestSourceHandlerFeed < Test::Unit::TestCase
|
@@ -12,6 +12,7 @@ class TestSourceHandlerFeed < Test::Unit::TestCase
|
|
12
12
|
site_url: http://example.com
|
13
13
|
entries: *.html
|
14
14
|
author: Thomas Leitner
|
15
|
+
content_block_name: abstract
|
15
16
|
--- name:rss_template
|
16
17
|
hallo
|
17
18
|
EOF
|
@@ -22,7 +23,7 @@ EOF
|
|
22
23
|
:file1_en => Webgen::Node.new(root, '/file1.en.html', 'file1.html', {'lang' => 'en', 'in_menu' => true, 'modified_at' => Time.now}),
|
23
24
|
:index_en => Webgen::Node.new(root, '/index.en.html', 'index.html', {'lang' => 'en', 'modified_at' => Time.now - 1, 'author' => 'test'}),
|
24
25
|
}
|
25
|
-
@nodes[:index_en].node_info[:page] = Webgen::Page.from_data("
|
26
|
+
@nodes[:index_en].node_info[:page] = Webgen::Page.from_data("--- name:content\nMyContent\n--- name:abstract\nRealContent")
|
26
27
|
@obj = Webgen::SourceHandler::Feed.new
|
27
28
|
@path = path_with_meta_info('/test.feed', {}, @obj.class.name) {StringIO.new(FEED_CONTENT)}
|
28
29
|
end
|
@@ -36,13 +37,14 @@ EOF
|
|
36
37
|
assert_equal('atom', atom_node.node_info[:feed_type])
|
37
38
|
assert_equal('rss', rss_node.node_info[:feed_type])
|
38
39
|
|
39
|
-
assert_equal([
|
40
|
+
assert_equal([atom_node, rss_node], @obj.create_node(@nodes[:root], @path))
|
40
41
|
end
|
41
42
|
|
42
43
|
def test_content
|
43
44
|
atom_node, rss_node = @obj.create_node(@nodes[:root], @path)
|
44
45
|
assert_equal('hallo', rss_node.content)
|
45
46
|
assert(atom_node.content =~ /Thomas Leitner/)
|
47
|
+
assert(atom_node.content =~ /RealContent/)
|
46
48
|
end
|
47
49
|
|
48
50
|
def test_feed_entries
|
@@ -58,15 +60,14 @@ EOF
|
|
58
60
|
atom_node.content # populate cache
|
59
61
|
@website.cache.old_data.update(@website.cache.new_data)
|
60
62
|
|
61
|
-
atom_node.dirty
|
63
|
+
atom_node.unflag(:dirty)
|
62
64
|
assert(atom_node.changed?)
|
63
65
|
|
64
|
-
atom_node.dirty
|
65
|
-
@nodes[:file1_en].dirty
|
66
|
-
@nodes[:index_en].dirty
|
66
|
+
atom_node.unflag(:dirty)
|
67
|
+
@nodes[:file1_en].unflag(:dirty)
|
68
|
+
@nodes[:index_en].unflag(:dirty)
|
67
69
|
assert(!atom_node.changed?)
|
68
70
|
|
69
|
-
atom_node.dirty = false
|
70
71
|
atom_node['entries'] = 'file.*.html'
|
71
72
|
assert(atom_node.changed?)
|
72
73
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'helper'
|
3
|
+
require 'webgen/sourcehandler'
|
4
|
+
require 'stringio'
|
5
|
+
|
6
|
+
class TestSourceHandlerMemory < Test::Unit::TestCase
|
7
|
+
|
8
|
+
include Test::WebsiteHelper
|
9
|
+
|
10
|
+
def test_all
|
11
|
+
obj = Webgen::SourceHandler::Memory.new
|
12
|
+
root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
|
13
|
+
shm = Webgen::SourceHandler::Main.new # for using service :create_nodes
|
14
|
+
root.unflag(:dirty)
|
15
|
+
root.unflag(:created)
|
16
|
+
|
17
|
+
node = obj.create_node(root, path_with_meta_info('/test.png'), '/', 'data')
|
18
|
+
assert_equal('/', node.node_info[:memory_source_alcn])
|
19
|
+
assert_equal('data', obj.content(node))
|
20
|
+
assert(!node.flagged(:reinit))
|
21
|
+
root.tree.delete_node(node)
|
22
|
+
|
23
|
+
node = obj.create_node(root, path_with_meta_info('/test.png'), '/') {|n| assert_equal(node, n); 'data'}
|
24
|
+
assert_equal('/', node.node_info[:memory_source_alcn])
|
25
|
+
assert_equal('data', obj.content(node))
|
26
|
+
assert(!node.flagged(:reinit))
|
27
|
+
|
28
|
+
assert(!root.flagged(:dirty))
|
29
|
+
node.flag(:reinit)
|
30
|
+
assert(root.flagged(:dirty))
|
31
|
+
root.unflag(:dirty)
|
32
|
+
root.tree.delete_node(node)
|
33
|
+
|
34
|
+
node = obj.create_node(root, path_with_meta_info('/test.png'), '/', 'data')
|
35
|
+
assert_equal('/', node.node_info[:memory_source_alcn])
|
36
|
+
obj.instance_eval { @data = nil }
|
37
|
+
assert_nil(obj.content(node))
|
38
|
+
assert(node.flagged(:reinit))
|
39
|
+
assert(root.flagged(:dirty))
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'helper'
|
3
|
-
require 'webgen/sourcehandler
|
3
|
+
require 'webgen/sourcehandler'
|
4
4
|
require 'stringio'
|
5
5
|
|
6
6
|
class TestSourceHandlerMetainfo < Test::Unit::TestCase
|
@@ -30,22 +30,32 @@ EOF
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_create_node
|
33
|
+
assert(@node.flagged(:dirty_meta_info))
|
33
34
|
assert_equal({'/**/*' => {'title' => 'new title', 'before' => 'valbef'}}, @node.node_info[:mi_paths])
|
34
35
|
assert_equal({'/**/*' => {'after' => 'valaft'}}, @node.node_info[:mi_alcn])
|
35
36
|
end
|
36
37
|
|
37
38
|
def test_meta_info_changed
|
38
39
|
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
40
|
assert(!@obj.send(:meta_info_changed?, @node, other))
|
41
|
+
assert(@obj.send(:meta_info_changed?, @node, other, :force))
|
42
|
+
assert(!@obj.send(:meta_info_changed?, @node, other, :no_old_data))
|
42
43
|
end
|
43
44
|
|
44
45
|
def test_mark_all_matched_dirty
|
45
46
|
other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
|
46
|
-
|
47
|
+
|
48
|
+
other.unflag(:dirty_meta_info)
|
47
49
|
@obj.send(:mark_all_matched_dirty, @node)
|
48
|
-
assert(other.dirty_meta_info)
|
50
|
+
assert(!other.flagged(:dirty_meta_info))
|
51
|
+
|
52
|
+
other.unflag(:dirty_meta_info)
|
53
|
+
@obj.send(:mark_all_matched_dirty, @node, :force)
|
54
|
+
assert(other.flagged(:dirty_meta_info))
|
55
|
+
|
56
|
+
other.unflag(:dirty_meta_info)
|
57
|
+
@obj.send(:mark_all_matched_dirty, @node, :no_old_data)
|
58
|
+
assert(!other.flagged(:dirty_meta_info))
|
49
59
|
end
|
50
60
|
|
51
61
|
def test_before_node_created
|
@@ -62,28 +72,20 @@ EOF
|
|
62
72
|
|
63
73
|
def test_before_node_deleted
|
64
74
|
other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
|
65
|
-
other.dirty_meta_info = false
|
66
|
-
|
67
|
-
@website.blackboard.del_service(:source_paths)
|
68
|
-
@website.blackboard.add_service(:source_paths) { {'/metainfo' => ''} }
|
69
75
|
@website.blackboard.dispatch_msg(:before_node_deleted, @node)
|
70
|
-
assert(
|
71
|
-
|
72
|
-
@website.blackboard.del_service(:source_paths)
|
73
|
-
@website.blackboard.add_service(:source_paths) { {} }
|
74
|
-
@website.blackboard.dispatch_msg(:before_node_deleted, @node)
|
75
|
-
assert(other.dirty_meta_info)
|
76
|
+
assert(other.flagged(:dirty_meta_info))
|
77
|
+
assert(@obj.nodes.empty?)
|
76
78
|
end
|
77
79
|
|
78
80
|
def test_node_meta_info_changed
|
79
|
-
@node.dirty_meta_info
|
81
|
+
@node.unflag(:dirty_meta_info)
|
80
82
|
@website.blackboard.dispatch_msg(:node_meta_info_changed?, @node)
|
81
|
-
assert(!@node.dirty_meta_info)
|
83
|
+
assert(!@node.flagged(:dirty_meta_info))
|
82
84
|
|
83
|
-
|
84
|
-
|
85
|
-
@website.blackboard.dispatch_msg(:node_meta_info_changed?,
|
86
|
-
assert(
|
85
|
+
@node.node_info[:mi_alcn] = @node.node_info[:mi_alcn].dup
|
86
|
+
@node.node_info[:mi_alcn]['/*metainfo'] = {'other' => 'doit'}
|
87
|
+
@website.blackboard.dispatch_msg(:node_meta_info_changed?, @node)
|
88
|
+
assert(@node.flagged(:dirty_meta_info))
|
87
89
|
end
|
88
90
|
|
89
91
|
def test_content
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'helper'
|
3
|
-
require 'webgen/sourcehandler
|
3
|
+
require 'webgen/sourcehandler'
|
4
4
|
require 'stringio'
|
5
5
|
|
6
6
|
class TestSourceHandlerPage < Test::Unit::TestCase
|
@@ -10,11 +10,7 @@ class TestSourceHandlerPage < Test::Unit::TestCase
|
|
10
10
|
def setup
|
11
11
|
super
|
12
12
|
@website.blackboard.del_service(:templates_for_node)
|
13
|
-
@website.blackboard.del_service(:parse_html_sections)
|
14
|
-
@website.blackboard.del_service(:create_fragment_nodes)
|
15
13
|
@website.blackboard.add_service(:templates_for_node) {|node| []}
|
16
|
-
@website.blackboard.add_service(:parse_html_sections) {[]}
|
17
|
-
@website.blackboard.add_service(:create_fragment_nodes) {nil}
|
18
14
|
@obj = Webgen::SourceHandler::Page.new
|
19
15
|
@root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test')
|
20
16
|
@path = path_with_meta_info('/index.page') {StringIO.new('content')}
|
@@ -32,9 +28,8 @@ class TestSourceHandlerPage < Test::Unit::TestCase
|
|
32
28
|
assert_equal('yes', node['test'])
|
33
29
|
assert_equal(6, node['sort_info'])
|
34
30
|
assert_equal(Webgen::LanguageManager.language_for_code('epo'), node.lang)
|
35
|
-
assert_not_nil(@website.cache.permanent[:page_sections]['/test/index.eo.html'])
|
36
31
|
|
37
|
-
|
32
|
+
assert_equal(node, @obj.create_node(@root, @path.dup))
|
38
33
|
|
39
34
|
@root.tree.delete_node(node)
|
40
35
|
path = @path.dup
|
@@ -58,13 +53,11 @@ class TestSourceHandlerPage < Test::Unit::TestCase
|
|
58
53
|
def test_meta_info_changed
|
59
54
|
node = @obj.create_node(@root, @path)
|
60
55
|
@website.blackboard.dispatch_msg(:node_meta_info_changed?, node)
|
61
|
-
assert(node.meta_info_changed?)
|
56
|
+
assert(!node.meta_info_changed?)
|
62
57
|
|
63
|
-
|
64
|
-
@website.cache.restore(@website.cache.dump)
|
65
|
-
@website.cache[[:sh_page_node_mi, node.absolute_lcn]]['modified_at'] = Time.now
|
58
|
+
@path.instance_eval { @io = Webgen::Path::SourceIO.new {StringIO.new("---\ntitle: test\n---\ncontent")} }
|
66
59
|
@website.blackboard.dispatch_msg(:node_meta_info_changed?, node)
|
67
|
-
assert(
|
60
|
+
assert(node.meta_info_changed?)
|
68
61
|
end
|
69
62
|
|
70
63
|
end
|
data/test/test_tag_base.rb
CHANGED
@@ -77,13 +77,13 @@ class TestTagBreadcrumbTrail < Test::Unit::TestCase
|
|
77
77
|
context = Webgen::ContentProcessor::Context.new(:chain => [nodes[:file11_en]])
|
78
78
|
call(context, ' / ', false, 0, -1)
|
79
79
|
|
80
|
-
nodes[:file11_en].dirty
|
80
|
+
nodes[:file11_en].unflag(:dirty)
|
81
81
|
@website.blackboard.dispatch_msg(:node_changed?, nodes[:file11_en])
|
82
|
-
assert(!nodes[:file11_en].dirty)
|
82
|
+
assert(!nodes[:file11_en].flagged(:dirty))
|
83
83
|
|
84
|
-
nodes[:index11_en].dirty_meta_info
|
84
|
+
nodes[:index11_en].flag(:dirty_meta_info)
|
85
85
|
@website.blackboard.dispatch_msg(:node_changed?, nodes[:file11_en])
|
86
|
-
assert(nodes[:file11_en].dirty)
|
86
|
+
assert(nodes[:file11_en].flagged(:dirty))
|
87
87
|
end
|
88
88
|
|
89
89
|
end
|
@@ -36,13 +36,13 @@ class TestTagIncludeFile < Test::Unit::TestCase
|
|
36
36
|
assert_equal([CGI::escapeHTML(content), true], call(context, file.path, true, true))
|
37
37
|
assert_raise(Errno::ENOENT) { call(context, 'invalidfile', true, true) }
|
38
38
|
|
39
|
-
root.dirty
|
39
|
+
root.unflag(:dirty)
|
40
40
|
@website.blackboard.dispatch_msg(:node_changed?, root)
|
41
|
-
assert(!root.dirty)
|
41
|
+
assert(!root.flagged(:dirty))
|
42
42
|
|
43
43
|
File.utime(Time.now + 1, Time.now + 1, file.path)
|
44
44
|
@website.blackboard.dispatch_msg(:node_changed?, root)
|
45
|
-
assert(root.dirty)
|
45
|
+
assert(root.flagged(:dirty))
|
46
46
|
end
|
47
47
|
|
48
48
|
end
|
data/test/test_tag_langbar.rb
CHANGED
@@ -14,8 +14,7 @@ class TestTagLangbar < Test::Unit::TestCase
|
|
14
14
|
def create_default_nodes
|
15
15
|
{
|
16
16
|
:root => root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/', {'index_path' => 'index.html'}),
|
17
|
-
:file_en => Webgen::Node.new(root, '/file1.html', 'file1.html',
|
18
|
-
{'lang' => 'en', 'title' => 'File1'}),
|
17
|
+
:file_en => Webgen::Node.new(root, '/file1.html', 'file1.html', {'lang' => 'en', 'title' => 'File1'}),
|
19
18
|
:index_en => Webgen::Node.new(root, '/index.html', 'index.html', {'lang' => 'en'}),
|
20
19
|
:index_de => Webgen::Node.new(root, '/index.de.html', 'index.html', {'lang' => 'de'}),
|
21
20
|
}
|
@@ -31,15 +30,21 @@ class TestTagLangbar < Test::Unit::TestCase
|
|
31
30
|
link = '<span>en</span>'
|
32
31
|
check_results(nodes[:file_en], link, '', '', '')
|
33
32
|
|
34
|
-
@obj.set_params('tag.langbar.show_single_lang'=>true, 'tag.langbar.show_own_lang'=>true, 'tag.langbar.separator' => ' --- ')
|
35
|
-
assert_equal("#{de_link} --- #{en_link}",
|
33
|
+
@obj.set_params('tag.langbar.show_single_lang' => true, 'tag.langbar.show_own_lang' => true, 'tag.langbar.separator' => ' --- ')
|
34
|
+
assert_equal("#{de_link} --- #{en_link}",
|
35
|
+
@obj.call('langbar', '', Webgen::ContentProcessor::Context.new(:chain => [nodes[:index_en]])))
|
36
36
|
|
37
|
-
|
37
|
+
@obj.set_params('tag.langbar.show_single_lang' => true, 'tag.langbar.show_own_lang' => true,
|
38
|
+
'tag.langbar.lang_names' => {'de' => 'Deutsch'})
|
39
|
+
assert_equal("<a href=\"index.de.html\">Deutsch</a> | #{en_link}",
|
40
|
+
@obj.call('langbar', '', Webgen::ContentProcessor::Context.new(:chain => [nodes[:index_en]])))
|
41
|
+
|
42
|
+
nodes[:index_en].unflag(:dirty)
|
38
43
|
@website.blackboard.dispatch_msg(:node_changed?, nodes[:index_en])
|
39
|
-
assert(!nodes[:index_en].dirty)
|
44
|
+
assert(!nodes[:index_en].flagged(:dirty))
|
40
45
|
nodes[:index_en].tree.delete_node(nodes[:index_de])
|
41
46
|
@website.blackboard.dispatch_msg(:node_changed?, nodes[:index_en])
|
42
|
-
assert(nodes[:index_en].dirty)
|
47
|
+
assert(nodes[:index_en].flagged(:dirty))
|
43
48
|
end
|
44
49
|
|
45
50
|
def check_results(node, both_true, both_false, first_false, second_false)
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'helper'
|
3
|
+
require 'webgen/tree'
|
4
|
+
require 'webgen/contentprocessor'
|
5
|
+
require 'webgen/tag'
|
6
|
+
|
7
|
+
class TestTagLink < Test::Unit::TestCase
|
8
|
+
|
9
|
+
include Test::WebsiteHelper
|
10
|
+
|
11
|
+
def setup
|
12
|
+
super
|
13
|
+
@obj = Webgen::Tag::Link.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def call(context)
|
17
|
+
@obj.call('link', '', context)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_call
|
21
|
+
root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
|
22
|
+
node = Webgen::Node.new(root, '/file.html', 'file.html', {'lang' => 'en'})
|
23
|
+
dir = Webgen::Node.new(root, '/dir/', 'dir/', 'index_path' => "index.html")
|
24
|
+
file = Webgen::Node.new(dir, '/dir/file.html', 'file.html', {'lang' => 'en', 'title' => 'Dir/File'})
|
25
|
+
Webgen::Node.new(dir, '/dir/other.de.html', 'other.html', {'lang' => 'de'})
|
26
|
+
Webgen::Node.new(file, '/dir/file.html#fragment', '#fragment')
|
27
|
+
dir2 = Webgen::Node.new(root, '/dir2/', 'dir2/', 'index_path' => "index.html")
|
28
|
+
Webgen::Node.new(dir2, '/dir2/index.html', 'index.html')
|
29
|
+
|
30
|
+
context = Webgen::ContentProcessor::Context.new(:chain => [node])
|
31
|
+
|
32
|
+
# no path set
|
33
|
+
node.unflag(:dirty)
|
34
|
+
@obj.set_params('tag.link.path' => nil)
|
35
|
+
assert_equal('', call(context))
|
36
|
+
assert(node.flagged(:dirty))
|
37
|
+
|
38
|
+
# invalid paths
|
39
|
+
@obj.set_params('tag.link.path' => ':/asdf=-)')
|
40
|
+
assert_equal('', call(context))
|
41
|
+
|
42
|
+
# basic node resolving
|
43
|
+
@obj.set_params('tag.link.path' => 'dir/file.html')
|
44
|
+
assert_equal('<a href="dir/file.html">Dir/File</a>', call(context))
|
45
|
+
@obj.set_params('tag.link.path' => 'dir/file.html', 'tag.link.attr' => {'title' => 'other'})
|
46
|
+
assert_equal('<a href="dir/file.html" title="other">Dir/File</a>', call(context))
|
47
|
+
@obj.set_params('tag.link.path' => 'dir/other.html')
|
48
|
+
assert_equal('', call(context))
|
49
|
+
|
50
|
+
# non-existing fragments
|
51
|
+
@obj.set_params('tag.link.path' => 'file.html#hallo')
|
52
|
+
assert_equal('', call(context))
|
53
|
+
|
54
|
+
# directory paths
|
55
|
+
@obj.set_params('tag.link.path' => 'dir')
|
56
|
+
assert_equal('<a href="dir/"></a>', call(context))
|
57
|
+
@obj.set_params('tag.link.path' => 'dir2')
|
58
|
+
assert_equal('<a href="dir2/index.html"></a>', call(context))
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
data/test/test_tag_menu.rb
CHANGED
@@ -2,7 +2,7 @@ require 'test/unit'
|
|
2
2
|
require 'helper'
|
3
3
|
require 'webgen/tree'
|
4
4
|
require 'webgen/contentprocessor'
|
5
|
-
require 'webgen/tag
|
5
|
+
require 'webgen/tag'
|
6
6
|
|
7
7
|
class TestTagMenu < Test::Unit::TestCase
|
8
8
|
|
@@ -88,18 +88,18 @@ class TestTagMenu < Test::Unit::TestCase
|
|
88
88
|
@obj.set_params({})
|
89
89
|
assert_equal("", output)
|
90
90
|
|
91
|
-
nodes.each {|k,v| v.dirty
|
91
|
+
nodes.each {|k,v| v.unflag(:dirty)}
|
92
92
|
@website.blackboard.dispatch_msg(:node_changed?, nodes[:file11_en])
|
93
|
-
assert(!nodes[:file11_en].dirty)
|
93
|
+
assert(!nodes[:file11_en].flagged(:dirty))
|
94
94
|
|
95
|
-
nodes[:index11_en].dirty_meta_info
|
95
|
+
nodes[:index11_en].flag(:dirty_meta_info)
|
96
96
|
@website.blackboard.dispatch_msg(:node_changed?, nodes[:file11_en])
|
97
|
-
assert(nodes[:file11_en].dirty)
|
97
|
+
assert(nodes[:file11_en].flagged(:dirty))
|
98
98
|
|
99
|
-
nodes.each {|k,v| v.dirty
|
99
|
+
nodes.each {|k,v| v.unflag(:dirty)}
|
100
100
|
nodes[:file11_en_f2]['in_menu'] = false
|
101
101
|
@website.blackboard.dispatch_msg(:node_changed?, nodes[:file11_en])
|
102
|
-
assert(nodes[:file11_en].dirty)
|
102
|
+
assert(nodes[:file11_en].flagged(:dirty))
|
103
103
|
end
|
104
104
|
|
105
105
|
def test_menu_tree_for_lang_and_create_menu_tree
|