webgen 0.5.5 → 0.5.6

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