webgen 0.5.5 → 0.5.6

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.
Files changed (101) hide show
  1. data/ChangeLog +3662 -0
  2. data/Rakefile +8 -1
  3. data/VERSION +1 -1
  4. data/data/webgen/website_styles/1024px/src/default.template +1 -1
  5. data/data/webgen/website_styles/andreas00/src/default.template +1 -1
  6. data/data/webgen/website_styles/andreas01/src/default.template +2 -1
  7. data/data/webgen/website_styles/andreas03/src/default.template +1 -1
  8. data/data/webgen/website_styles/andreas04/src/default.template +1 -1
  9. data/data/webgen/website_styles/andreas05/src/default.template +1 -1
  10. data/data/webgen/website_styles/andreas06/src/default.template +1 -1
  11. data/data/webgen/website_styles/andreas07/src/default.template +1 -1
  12. data/data/webgen/website_styles/andreas08/src/default.template +1 -1
  13. data/data/webgen/website_styles/andreas09/src/default.template +1 -1
  14. data/data/webgen/website_styles/simple/src/default.template +1 -1
  15. data/doc/contentprocessor/fragments.page +25 -0
  16. data/doc/extensions.page +1 -1
  17. data/doc/manual.page +33 -15
  18. data/doc/reference_configuration.page +339 -62
  19. data/doc/reference_metainfo.page +11 -2
  20. data/doc/sourcehandler/feed.page +19 -4
  21. data/doc/sourcehandler/page.page +0 -16
  22. data/doc/tag/langbar.page +8 -1
  23. data/doc/tag/link.page +44 -0
  24. data/doc/tag/tikz.page +158 -0
  25. data/lib/webgen/cli.rb +4 -4
  26. data/lib/webgen/common/sitemap.rb +2 -3
  27. data/lib/webgen/configuration.rb +3 -1
  28. data/lib/webgen/contentprocessor.rb +1 -0
  29. data/lib/webgen/contentprocessor/blocks.rb +0 -2
  30. data/lib/webgen/contentprocessor/context.rb +0 -3
  31. data/lib/webgen/contentprocessor/erubis.rb +0 -2
  32. data/lib/webgen/contentprocessor/fragments.rb +23 -0
  33. data/lib/webgen/default_config.rb +15 -2
  34. data/lib/webgen/languages.rb +9 -0
  35. data/lib/webgen/logger.rb +18 -1
  36. data/lib/webgen/node.rb +50 -25
  37. data/lib/webgen/page.rb +26 -16
  38. data/lib/webgen/path.rb +20 -10
  39. data/lib/webgen/sourcehandler.rb +85 -69
  40. data/lib/webgen/sourcehandler/base.rb +38 -15
  41. data/lib/webgen/sourcehandler/copy.rb +2 -2
  42. data/lib/webgen/sourcehandler/directory.rb +16 -13
  43. data/lib/webgen/sourcehandler/feed.rb +6 -12
  44. data/lib/webgen/sourcehandler/fragment.rb +6 -11
  45. data/lib/webgen/sourcehandler/memory.rb +41 -0
  46. data/lib/webgen/sourcehandler/metainfo.rb +21 -21
  47. data/lib/webgen/sourcehandler/page.rb +7 -27
  48. data/lib/webgen/sourcehandler/sitemap.rb +0 -2
  49. data/lib/webgen/sourcehandler/template.rb +0 -4
  50. data/lib/webgen/sourcehandler/virtual.rb +18 -18
  51. data/lib/webgen/tag.rb +2 -0
  52. data/lib/webgen/tag/breadcrumbtrail.rb +1 -4
  53. data/lib/webgen/tag/coderay.rb +0 -3
  54. data/lib/webgen/tag/date.rb +0 -2
  55. data/lib/webgen/tag/executecommand.rb +1 -2
  56. data/lib/webgen/tag/includefile.rb +1 -3
  57. data/lib/webgen/tag/langbar.rb +2 -5
  58. data/lib/webgen/tag/link.rb +23 -0
  59. data/lib/webgen/tag/menu.rb +1 -4
  60. data/lib/webgen/tag/metainfo.rb +0 -2
  61. data/lib/webgen/tag/relocatable.rb +2 -3
  62. data/lib/webgen/tag/sitemap.rb +0 -3
  63. data/lib/webgen/tag/tikz.rb +117 -0
  64. data/lib/webgen/tree.rb +11 -6
  65. data/lib/webgen/version.rb +1 -1
  66. data/lib/webgen/website.rb +2 -1
  67. data/test/test_cli.rb +14 -0
  68. data/test/test_common_sitemap.rb +4 -4
  69. data/test/test_contentprocessor_context.rb +1 -1
  70. data/test/test_contentprocessor_fragments.rb +40 -0
  71. data/test/test_contentprocessor_redcloth.rb +1 -0
  72. data/test/test_contentprocessor_tags.rb +1 -1
  73. data/test/test_languages.rb +12 -0
  74. data/test/test_logger.rb +19 -0
  75. data/test/test_node.rb +35 -15
  76. data/test/test_output_filesystem.rb +1 -1
  77. data/test/test_page.rb +15 -6
  78. data/test/test_path.rb +37 -5
  79. data/test/test_source_filesystem.rb +1 -1
  80. data/test/test_source_stacked.rb +1 -1
  81. data/test/test_sourcehandler_base.rb +30 -1
  82. data/test/test_sourcehandler_copy.rb +1 -1
  83. data/test/test_sourcehandler_directory.rb +16 -1
  84. data/test/test_sourcehandler_feed.rb +9 -8
  85. data/test/test_sourcehandler_fragment.rb +1 -1
  86. data/test/test_sourcehandler_memory.rb +42 -0
  87. data/test/test_sourcehandler_metainfo.rb +23 -21
  88. data/test/test_sourcehandler_page.rb +5 -12
  89. data/test/test_sourcehandler_template.rb +1 -1
  90. data/test/test_sourcehandler_virtual.rb +2 -2
  91. data/test/test_tag_base.rb +0 -1
  92. data/test/test_tag_breadcrumbtrail.rb +4 -4
  93. data/test/test_tag_includefile.rb +3 -3
  94. data/test/test_tag_langbar.rb +12 -7
  95. data/test/test_tag_link.rb +61 -0
  96. data/test/test_tag_menu.rb +7 -7
  97. data/test/test_tag_metainfo.rb +1 -1
  98. data/test/test_tag_relocatable.rb +1 -1
  99. data/test/test_tag_tikz.rb +66 -0
  100. data/test/test_tree.rb +8 -9
  101. metadata +15 -2
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
  require 'helper'
3
- require 'webgen/sourcehandler/directory'
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/feed'
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("hallo")
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([nil, nil], @obj.create_node(@nodes[:root], @path))
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 = false
63
+ atom_node.unflag(:dirty)
62
64
  assert(atom_node.changed?)
63
65
 
64
- atom_node.dirty = false
65
- @nodes[:file1_en].dirty = false
66
- @nodes[:index_en].dirty = false
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
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
  require 'helper'
3
- require 'webgen/sourcehandler/fragment'
3
+ require 'webgen/sourcehandler'
4
4
  require 'stringio'
5
5
 
6
6
  class TestSourceHandlerFragment < Test::Unit::TestCase
@@ -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/metainfo'
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
- other.dirty_meta_info = false
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(!other.dirty_meta_info)
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 = false
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
- other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
84
- other.dirty_meta_info = false
85
- @website.blackboard.dispatch_msg(:node_meta_info_changed?, other)
86
- assert(other.dirty_meta_info)
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/page'
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
- assert_nil(@obj.create_node(@root, @path.dup))
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
- node.dirty_meta_info = false
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(!node.meta_info_changed?)
60
+ assert(node.meta_info_changed?)
68
61
  end
69
62
 
70
63
  end
@@ -3,7 +3,7 @@ require 'helper'
3
3
  require 'webgen/tree'
4
4
  require 'webgen/node'
5
5
  require 'webgen/path'
6
- require 'webgen/sourcehandler/template'
6
+ require 'webgen/sourcehandler'
7
7
  require 'stringio'
8
8
 
9
9
  class TestSourceHandlerTemplate < Test::Unit::TestCase
@@ -11,11 +11,11 @@ class TestSourceHandlerVirtual < Test::Unit::TestCase
11
11
  \\--- !omap
12
12
  - path.de.html:
13
13
 
14
+ - /dir/file.html:
15
+
14
16
  - /dir/:
15
17
  title: My Dir
16
18
 
17
- - /dir/file.html:
18
-
19
19
  - /directory/path.en.html:
20
20
  url: other.html
21
21
  title: new title
@@ -2,7 +2,6 @@ require 'test/unit'
2
2
  require 'helper'
3
3
  require 'stringio'
4
4
  require 'webgen/tag'
5
- require 'webgen/tag/base'
6
5
 
7
6
  class TestTagBase < Test::Unit::TestCase
8
7
 
@@ -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 = false
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 = true
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 = false
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
@@ -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}", @obj.call('langbar', '', Webgen::ContentProcessor::Context.new(:chain => [nodes[:index_en]])))
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
- nodes[:index_en].dirty = false
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
@@ -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/menu'
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 = false}
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 = true
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 = false}
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