gettalong-webgen 0.5.7.20090227 → 0.5.8.20090507

Sign up to get free protection for your applications and to get access to all the features.
Files changed (205) hide show
  1. data/Rakefile +37 -36
  2. data/data/webgen/resources.yaml +2 -2
  3. data/data/webgen/webgui/app.rb +11 -0
  4. data/data/webgen/webgui/controller/main.rb +30 -26
  5. data/data/webgen/webgui/{view/page.xhtml → layout/default.xhtml} +8 -8
  6. data/data/webgen/webgui/start.rb +9 -0
  7. data/data/webgen/webgui/view/create_website.xhtml +6 -14
  8. data/data/webgen/webgui/view/manage_website.xhtml +2 -2
  9. data/data/webgen/website_bundles/default/README +6 -0
  10. data/data/webgen/website_bundles/default/src/index.page +15 -0
  11. data/data/webgen/{website_styles → website_bundles/style}/1024px/README +0 -0
  12. data/data/webgen/{website_styles → website_bundles/style}/1024px/src/default.css +0 -0
  13. data/data/webgen/{website_styles → website_bundles/style}/1024px/src/default.template +0 -0
  14. data/data/webgen/{website_styles → website_bundles/style}/1024px/src/images/background.gif +0 -0
  15. data/data/webgen/{website_styles → website_bundles/style}/andreas00/README +0 -0
  16. data/data/webgen/{website_styles → website_bundles/style}/andreas00/src/default.css +0 -0
  17. data/data/webgen/{website_styles → website_bundles/style}/andreas00/src/default.template +0 -0
  18. data/data/webgen/{website_styles → website_bundles/style}/andreas00/src/images/bg.gif +0 -0
  19. data/data/webgen/{website_styles → website_bundles/style}/andreas00/src/images/front.jpg +0 -0
  20. data/data/webgen/{website_styles → website_bundles/style}/andreas00/src/images/menubg.gif +0 -0
  21. data/data/webgen/{website_styles → website_bundles/style}/andreas00/src/images/menubg2.gif +0 -0
  22. data/data/webgen/{website_styles → website_bundles/style}/andreas01/README +0 -0
  23. data/data/webgen/{website_styles → website_bundles/style}/andreas01/src/default.css +0 -0
  24. data/data/webgen/{website_styles → website_bundles/style}/andreas01/src/default.template +0 -0
  25. data/data/webgen/{website_styles → website_bundles/style}/andreas01/src/images/bg.gif +0 -0
  26. data/data/webgen/{website_styles → website_bundles/style}/andreas01/src/images/front.jpg +0 -0
  27. data/data/webgen/{website_styles → website_bundles/style}/andreas01/src/print.css +0 -0
  28. data/data/webgen/{website_styles → website_bundles/style}/andreas03/README +0 -0
  29. data/data/webgen/{website_styles → website_bundles/style}/andreas03/src/default.css +0 -0
  30. data/data/webgen/{website_styles → website_bundles/style}/andreas03/src/default.template +0 -0
  31. data/data/webgen/{website_styles → website_bundles/style}/andreas03/src/images/bodybg.png +0 -0
  32. data/data/webgen/{website_styles → website_bundles/style}/andreas03/src/images/contbg.png +0 -0
  33. data/data/webgen/{website_styles → website_bundles/style}/andreas03/src/images/footerbg.png +0 -0
  34. data/data/webgen/{website_styles → website_bundles/style}/andreas03/src/images/gradient1.png +0 -0
  35. data/data/webgen/{website_styles → website_bundles/style}/andreas03/src/images/gradient2.png +0 -0
  36. data/data/webgen/{website_styles → website_bundles/style}/andreas04/README +0 -0
  37. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/default.css +0 -0
  38. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/default.template +0 -0
  39. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/blinkarrow.gif +0 -0
  40. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/bodybg.png +0 -0
  41. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/contentbg.png +0 -0
  42. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/entrybg.png +0 -0
  43. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/flash.gif +0 -0
  44. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/flash2.gif +0 -0
  45. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/globe.gif +0 -0
  46. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/globebottom.gif +0 -0
  47. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/linkarrow.gif +0 -0
  48. data/data/webgen/{website_styles → website_bundles/style}/andreas04/src/images/menuhover.png +0 -0
  49. data/data/webgen/{website_styles → website_bundles/style}/andreas05/README +0 -0
  50. data/data/webgen/{website_styles → website_bundles/style}/andreas05/src/default.css +0 -0
  51. data/data/webgen/{website_styles → website_bundles/style}/andreas05/src/default.template +0 -0
  52. data/data/webgen/{website_styles → website_bundles/style}/andreas05/src/images/bodybg.gif +0 -0
  53. data/data/webgen/{website_styles → website_bundles/style}/andreas05/src/images/front.png +0 -0
  54. data/data/webgen/{website_styles → website_bundles/style}/andreas06/README +0 -0
  55. data/data/webgen/{website_styles → website_bundles/style}/andreas06/src/default.css +6 -4
  56. data/data/webgen/{website_styles → website_bundles/style}/andreas06/src/default.template +2 -2
  57. data/data/webgen/{website_styles → website_bundles/style}/andreas06/src/images/bodybg.gif +0 -0
  58. data/data/webgen/{website_styles → website_bundles/style}/andreas06/src/images/boxbg.gif +0 -0
  59. data/data/webgen/{website_styles → website_bundles/style}/andreas06/src/images/greypx.gif +0 -0
  60. data/data/webgen/{website_styles → website_bundles/style}/andreas06/src/images/header.jpg +0 -0
  61. data/data/webgen/{website_styles → website_bundles/style}/andreas06/src/images/innerbg.gif +0 -0
  62. data/data/webgen/{website_styles → website_bundles/style}/andreas06/src/images/leaves.jpg +0 -0
  63. data/data/webgen/{website_styles → website_bundles/style}/andreas06/src/images/tabs.gif +0 -0
  64. data/data/webgen/{website_styles → website_bundles/style}/andreas07/README +0 -0
  65. data/data/webgen/{website_styles → website_bundles/style}/andreas07/src/browserfix.css +0 -0
  66. data/data/webgen/{website_styles → website_bundles/style}/andreas07/src/default.css +0 -0
  67. data/data/webgen/{website_styles → website_bundles/style}/andreas07/src/default.template +0 -0
  68. data/data/webgen/{website_styles → website_bundles/style}/andreas07/src/images/bodybg.gif +0 -0
  69. data/data/webgen/{website_styles → website_bundles/style}/andreas07/src/images/sidebarbg.gif +0 -0
  70. data/data/webgen/{website_styles → website_bundles/style}/andreas08/README +0 -0
  71. data/data/webgen/{website_styles → website_bundles/style}/andreas08/src/default.css +0 -0
  72. data/data/webgen/{website_styles → website_bundles/style}/andreas08/src/default.template +0 -0
  73. data/data/webgen/{website_styles → website_bundles/style}/andreas09/README +0 -0
  74. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/default.css +0 -0
  75. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/default.template +0 -0
  76. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/bodybg-black.jpg +0 -0
  77. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/bodybg-green.jpg +0 -0
  78. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/bodybg-orange.jpg +0 -0
  79. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/bodybg-purple.jpg +0 -0
  80. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/bodybg-red.jpg +0 -0
  81. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/bodybg.jpg +0 -0
  82. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/footerbg.jpg +0 -0
  83. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/menuhover-black.jpg +0 -0
  84. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/menuhover-green.jpg +0 -0
  85. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/menuhover-orange.jpg +0 -0
  86. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/menuhover-purple.jpg +0 -0
  87. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/menuhover-red.jpg +0 -0
  88. data/data/webgen/{website_styles → website_bundles/style}/andreas09/src/images/menuhover.jpg +0 -0
  89. data/data/webgen/{website_styles → website_bundles/style}/simple/README +0 -0
  90. data/data/webgen/{website_styles → website_bundles/style}/simple/src/default.css +0 -0
  91. data/data/webgen/{website_styles → website_bundles/style}/simple/src/default.template +0 -0
  92. data/data/webgen/website_skeleton/README +1 -1
  93. data/data/webgen/website_skeleton/config.yaml +5 -4
  94. data/doc/contentprocessor/blocks.page +43 -10
  95. data/doc/contentprocessor/builder.page +1 -1
  96. data/doc/contentprocessor/erb.page +12 -11
  97. data/doc/contentprocessor/redcloth.page +3 -1
  98. data/doc/extensions.page +3 -3
  99. data/doc/faq.page +13 -10
  100. data/doc/getting_started.page +12 -15
  101. data/doc/index.page +7 -1
  102. data/doc/manual.page +78 -27
  103. data/doc/reference_configuration.page +166 -3
  104. data/doc/reference_website_styles.page +28 -0
  105. data/doc/source/filesystem.page +39 -0
  106. data/doc/source/tararchive.page +40 -0
  107. data/doc/tag/tikz.page +2 -1
  108. data/doc/webgen_page_format.page +13 -12
  109. data/doc/website_styles.metainfo +8 -0
  110. data/lib/webgen/blackboard.rb +2 -2
  111. data/lib/webgen/cache.rb +4 -4
  112. data/lib/webgen/cli.rb +29 -16
  113. data/lib/webgen/cli/apply_command.rb +66 -0
  114. data/lib/webgen/cli/create_command.rb +22 -16
  115. data/lib/webgen/cli/utils.rb +23 -0
  116. data/lib/webgen/cli/webgui_command.rb +31 -16
  117. data/lib/webgen/configuration.rb +8 -6
  118. data/lib/webgen/contentprocessor.rb +4 -5
  119. data/lib/webgen/contentprocessor/blocks.rb +2 -0
  120. data/lib/webgen/contentprocessor/builder.rb +6 -3
  121. data/lib/webgen/contentprocessor/erb.rb +6 -3
  122. data/lib/webgen/contentprocessor/erubis.rb +7 -6
  123. data/lib/webgen/contentprocessor/haml.rb +6 -3
  124. data/lib/webgen/contentprocessor/rdoc.rb +0 -1
  125. data/lib/webgen/contentprocessor/redcloth.rb +3 -1
  126. data/lib/webgen/context.rb +73 -0
  127. data/lib/webgen/context/nodes.rb +36 -0
  128. data/lib/webgen/coreext.rb +3 -2
  129. data/lib/webgen/default_config.rb +3 -1
  130. data/lib/webgen/deprecated.rb +53 -0
  131. data/lib/webgen/node.rb +24 -19
  132. data/lib/webgen/output.rb +50 -7
  133. data/lib/webgen/page.rb +45 -36
  134. data/lib/webgen/path.rb +1 -1
  135. data/lib/webgen/source.rb +32 -4
  136. data/lib/webgen/source/resource.rb +3 -3
  137. data/lib/webgen/source/stacked.rb +1 -1
  138. data/lib/webgen/source/tararchive.rb +73 -0
  139. data/lib/webgen/sourcehandler.rb +4 -4
  140. data/lib/webgen/sourcehandler/base.rb +36 -24
  141. data/lib/webgen/sourcehandler/copy.rb +1 -1
  142. data/lib/webgen/sourcehandler/feed.rb +2 -2
  143. data/lib/webgen/sourcehandler/fragment.rb +1 -1
  144. data/lib/webgen/sourcehandler/metainfo.rb +15 -6
  145. data/lib/webgen/sourcehandler/page.rb +9 -5
  146. data/lib/webgen/sourcehandler/virtual.rb +44 -7
  147. data/lib/webgen/tag/base.rb +19 -13
  148. data/lib/webgen/tag/link.rb +1 -0
  149. data/lib/webgen/version.rb +1 -1
  150. data/lib/webgen/webgentask.rb +15 -13
  151. data/lib/webgen/website.rb +42 -11
  152. data/lib/webgen/websiteaccess.rb +1 -1
  153. data/lib/webgen/websitemanager.rb +61 -66
  154. data/man/man1/webgen.1 +4 -0
  155. data/misc/default.css +13 -0
  156. data/misc/default.template +1 -1
  157. data/misc/htmldoc.metainfo +2 -1
  158. data/misc/style.page +33 -0
  159. data/test/test_cli.rb +1 -7
  160. data/test/test_common_sitemap.rb +2 -2
  161. data/test/test_contentprocessor_blocks.rb +14 -1
  162. data/test/test_contentprocessor_builder.rb +3 -1
  163. data/test/test_contentprocessor_erb.rb +3 -2
  164. data/test/test_contentprocessor_erubis.rb +3 -3
  165. data/test/test_contentprocessor_fragments.rb +3 -3
  166. data/test/test_contentprocessor_haml.rb +3 -2
  167. data/test/test_contentprocessor_maruku.rb +3 -3
  168. data/test/test_contentprocessor_rdiscount.rb +1 -1
  169. data/test/test_contentprocessor_rdoc.rb +1 -1
  170. data/test/test_contentprocessor_redcloth.rb +9 -2
  171. data/test/test_contentprocessor_sass.rb +1 -1
  172. data/test/test_contentprocessor_tags.rb +1 -1
  173. data/test/{test_contentprocessor_context.rb → test_context.rb} +9 -7
  174. data/test/test_node.rb +27 -21
  175. data/test/test_page.rb +4 -4
  176. data/test/test_source_tararchive.rb +65 -0
  177. data/test/test_sourcehandler_fragment.rb +1 -1
  178. data/test/test_sourcehandler_memory.rb +6 -6
  179. data/test/test_sourcehandler_metainfo.rb +34 -13
  180. data/test/test_sourcehandler_page.rb +8 -0
  181. data/test/test_sourcehandler_virtual.rb +51 -12
  182. data/test/test_tag_breadcrumbtrail.rb +4 -4
  183. data/test/test_tag_coderay.rb +1 -1
  184. data/test/test_tag_date.rb +1 -1
  185. data/test/test_tag_executecommand.rb +1 -1
  186. data/test/test_tag_includefile.rb +3 -3
  187. data/test/test_tag_langbar.rb +6 -6
  188. data/test/test_tag_link.rb +8 -2
  189. data/test/test_tag_menu.rb +9 -9
  190. data/test/test_tag_metainfo.rb +1 -1
  191. data/test/test_tag_relocatable.rb +1 -1
  192. data/test/test_tag_sitemap.rb +1 -1
  193. data/test/test_tag_tikz.rb +2 -2
  194. data/test/test_website.rb +17 -0
  195. data/test/test_websitemanager.rb +16 -21
  196. metadata +181 -171
  197. data/data/webgen/website_templates/default/README +0 -6
  198. data/data/webgen/website_templates/default/src/index.page +0 -8
  199. data/data/webgen/website_templates/project/README +0 -5
  200. data/data/webgen/website_templates/project/src/about.page +0 -12
  201. data/data/webgen/website_templates/project/src/download.page +0 -15
  202. data/data/webgen/website_templates/project/src/features.page +0 -8
  203. data/data/webgen/website_templates/project/src/index.page +0 -9
  204. data/data/webgen/website_templates/project/src/screenshots.page +0 -18
  205. data/lib/webgen/contentprocessor/context.rb +0 -89
@@ -48,11 +48,11 @@ class TestCommonSitemap < Test::Unit::TestCase
48
48
 
49
49
  @nodes[:file11_en].unflag(:dirty)
50
50
  @website.blackboard.dispatch_msg(:node_changed?, @nodes[:file11_en])
51
- assert(!@nodes[:file11_en].flagged(:dirty))
51
+ assert(!@nodes[:file11_en].flagged?(:dirty))
52
52
 
53
53
  @nodes[:file11_en].flag(:dirty_meta_info)
54
54
  @website.blackboard.dispatch_msg(:node_changed?, @nodes[:file11_en])
55
- assert(@nodes[:file11_en].flagged(:dirty))
55
+ assert(@nodes[:file11_en].flagged?(:dirty))
56
56
  end
57
57
 
58
58
  end
@@ -16,12 +16,16 @@ class TestContentProcessorBlocks < Test::Unit::TestCase
16
16
  template.node_info[:page] = Webgen::Page.from_data("--- name:content pipeline:blocks\nbefore<webgen:block name='content' />after")
17
17
  processors = { 'blocks' => obj }
18
18
 
19
- context = Webgen::ContentProcessor::Context.new(:chain => [node], :processors => processors)
19
+ context = Webgen::Context.new(:chain => [node], :processors => processors)
20
20
  context.content = '<webgen:block name="content" /><webgen:block name="content" chain="template;test" />'
21
21
  obj.call(context)
22
22
  assert_equal('databeforedataafter', context.content)
23
23
  assert_equal(Set.new([node.absolute_lcn, template.absolute_lcn]), node.node_info[:used_nodes])
24
24
 
25
+ context.content = '<webgen:block name="content" node="next" /><webgen:block name="content" chain="template;test" />'
26
+ obj.call(context)
27
+ assert_equal('databeforedataafter', context.content)
28
+
25
29
  context.content = '<webgen:block name="nothing"/>'
26
30
  assert_raise(RuntimeError) { obj.call(context) }
27
31
 
@@ -50,6 +54,15 @@ class TestContentProcessorBlocks < Test::Unit::TestCase
50
54
  context.content = '<webgen:block name="invalid" node="first" notfound="ignore" /><webgen:block name="content" />'
51
55
  obj.call(context)
52
56
  assert_equal('beforedataafter', context.content)
57
+
58
+ context[:chain] = [node, template]
59
+ context.content = '<webgen:block name="other" node="current" />'
60
+ obj.call(context)
61
+ assert_equal('other', context.content)
62
+
63
+ context.content = '<webgen:block name="other" node="current" chain="template"/>'
64
+ obj.call(context)
65
+ assert_equal('other', context.content)
53
66
  end
54
67
 
55
68
  end
@@ -10,7 +10,9 @@ class TestContentProcessorBuilder < Test::Unit::TestCase
10
10
  obj = Webgen::ContentProcessor::Builder.new
11
11
  root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
12
12
  node = Webgen::Node.new(root, 'test', 'test')
13
- context = Webgen::ContentProcessor::Context.new(:content => "xml.div(:path => node.absolute_lcn) { xml.strong('test') }",
13
+ content = "xml.div(:path => context.node.absolute_lcn) { xml.strong('test'); " +
14
+ "context.website; context; context.ref_node; context.dest_node }"
15
+ context = Webgen::Context.new(:content => content,
14
16
  :chain => [node])
15
17
  assert_equal("<div path=\"/test\">\n <strong>test</strong>\n</div>\n", obj.call(context).content)
16
18
 
@@ -10,10 +10,11 @@ class TestContentProcessorErb < Test::Unit::TestCase
10
10
  obj = Webgen::ContentProcessor::Erb.new
11
11
  root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
12
12
  node = Webgen::Node.new(root, 'test', 'test')
13
- context = Webgen::ContentProcessor::Context.new(:content => '<%= context[:doit] %>6', :doit => 'hallo',
13
+ content = "<%= context[:doit] %>6\n<%= context.ref_node.absolute_lcn %>\n<%= context.node.absolute_lcn %>\n<%= context.dest_node.absolute_lcn %><% website %>"
14
+ context = Webgen::Context.new(:content => content, :doit => 'hallo',
14
15
  :chain => [node])
15
16
  obj.call(context)
16
- assert_equal('hallo6', context.content)
17
+ assert_equal("hallo6\n/test\n/test\n/test", context.content)
17
18
 
18
19
  context.content = '<%= 5* %>'
19
20
  assert_raise(RuntimeError) { obj.call(context) }
@@ -15,10 +15,10 @@ class TestContentProcessorErubis < Test::Unit::TestCase
15
15
  obj = Webgen::ContentProcessor::Erubis.new
16
16
  root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
17
17
  node = Webgen::Node.new(root, 'test', 'test')
18
- context = Webgen::ContentProcessor::Context.new(:doit => 'hallo', :chain => [node])
18
+ context = Webgen::Context.new(:doit => 'hallo', :chain => [node])
19
19
 
20
- context.content = '<%= context[:doit] %>6'
21
- assert_equal('hallo6', obj.call(context).content)
20
+ context.content = "<%= context[:doit] %>6\n<%= context.ref_node.absolute_lcn %>\n<%= context.node.absolute_lcn %>\n<%= context.dest_node.absolute_lcn %><% context.website %>"
21
+ assert_equal("hallo6\n/test\n/test\n/test", obj.call(context).content)
22
22
 
23
23
  context.content = '<%= 5* %>'
24
24
  assert_raise(RuntimeError) { obj.call(context) }
@@ -20,20 +20,20 @@ class TestContentProcessorFragments < Test::Unit::TestCase
20
20
  root.node_info[:src] = '/'
21
21
  processors = { 'fragments' => obj }
22
22
 
23
- context = Webgen::ContentProcessor::Context.new(:chain => [root], :processors => processors)
23
+ context = Webgen::Context.new(:chain => [root], :processors => processors)
24
24
  context.content = '<h1 id="test">Test</h1><h1>Test2</h1>'
25
25
  obj.call(context)
26
26
  assert(root.tree['/#test'])
27
27
  assert_equal(3, root.tree.node_access[:alcn].length)
28
28
  root.tree.delete_node('/#test')
29
29
 
30
- context[:block] = Webgen::Block.new('content', '', {})
30
+ context[:block] = Webgen::Page::Block.new('content', '', {})
31
31
  obj.call(context)
32
32
  assert(root.tree['/#test'])
33
33
  assert_equal(3, root.tree.node_access[:alcn].length)
34
34
  root.tree.delete_node('/#test')
35
35
 
36
- context[:block] = Webgen::Block.new('other', '', {})
36
+ context[:block] = Webgen::Page::Block.new('other', '', {})
37
37
  obj.call(context)
38
38
  assert(!root.tree['/#test'])
39
39
  assert_equal(2, root.tree.node_access[:alcn].length)
@@ -10,10 +10,11 @@ class TestContentProcessorHaml < Test::Unit::TestCase
10
10
  obj = Webgen::ContentProcessor::Haml.new
11
11
  root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
12
12
  node = Webgen::Node.new(root, 'test', 'test')
13
- context = Webgen::ContentProcessor::Context.new(:content => "#content\n %h1 Hallo\n = node.absolute_lcn",
13
+ content = "#content\n %h1 Hallo\n = [context.node.absolute_lcn, context.ref_node.absolute_lcn, context.dest_node.absolute_lcn, context.website, context.dest_node.absolute_lcn].join"
14
+ context = Webgen::Context.new(:content => content,
14
15
  :chain => [node])
15
16
  obj.call(context)
16
- assert_equal("<div id='content'>\n <h1>Hallo</h1>\n /test\n</div>\n", context.content)
17
+ assert_equal("<div id='content'>\n <h1>Hallo</h1>\n /test/test/test/test\n</div>\n", context.content)
17
18
 
18
19
  context.content = "#cont\n = unknown"
19
20
  assert_raise(RuntimeError) { obj.call(context) }
@@ -10,7 +10,7 @@ class TestContentProcessorMaruku < Test::Unit::TestCase
10
10
  def test_call
11
11
  @obj = Webgen::ContentProcessor::Maruku.new
12
12
  node = Webgen::Node.new(Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/'), 'test', 'test')
13
- context = Webgen::ContentProcessor::Context.new(:content => '# header', :chain => [node])
13
+ context = Webgen::Context.new(:content => '# header', :chain => [node])
14
14
  assert_equal('<h1 id=\'header\'>header</h1>', @obj.call(context).content)
15
15
 
16
16
  context.content = "# head*d* {#das .dsaf "
@@ -19,10 +19,10 @@ class TestContentProcessorMaruku < Test::Unit::TestCase
19
19
 
20
20
  def test_call_fix_for_invalid_id
21
21
  @obj = Webgen::ContentProcessor::Maruku.new
22
- context = Webgen::ContentProcessor::Context.new(:content => '# `test`')
22
+ context = Webgen::Context.new(:content => '# `test`')
23
23
  assert_equal('<h1 id=\'id1\'><code>test</code></h1>', @obj.call(context).content)
24
24
 
25
- context = Webgen::ContentProcessor::Context.new(:content => '# `test`')
25
+ context = Webgen::Context.new(:content => '# `test`')
26
26
  assert_equal('<h1 id=\'id1\'><code>test</code></h1>', @obj.call(context).content)
27
27
  end
28
28
 
@@ -10,7 +10,7 @@ class TestContentProcessorRDiscount < Test::Unit::TestCase
10
10
  def test_call
11
11
  @obj = Webgen::ContentProcessor::RDiscount.new
12
12
  node = Webgen::Node.new(Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/'), 'test', 'test')
13
- context = Webgen::ContentProcessor::Context.new(:content => '# header', :chain => [node])
13
+ context = Webgen::Context.new(:content => '# header', :chain => [node])
14
14
  assert_equal("<h1>header</h1>\n", @obj.call(context).content)
15
15
  end
16
16
 
@@ -10,7 +10,7 @@ class TestContentProcessorRDoc < Test::Unit::TestCase
10
10
  obj = Webgen::ContentProcessor::RDoc.new
11
11
  root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
12
12
  node = Webgen::Node.new(root, 'test', 'test')
13
- context = Webgen::ContentProcessor::Context.new(:content => "* hello",
13
+ context = Webgen::Context.new(:content => "* hello",
14
14
  :chain => [node])
15
15
  assert_equal("<ul>\n<li>hello\n\n</li>\n</ul>\n", obj.call(context).content)
16
16
  end
@@ -1,15 +1,22 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  require 'test/unit'
4
+ require 'helper'
4
5
  require 'webgen/websiteaccess'
5
6
  require 'webgen/contentprocessor'
6
7
 
7
8
  class TestContentProcessorRedCloth < Test::Unit::TestCase
8
9
 
10
+ include Test::WebsiteHelper
11
+
9
12
  def test_call
10
13
  @obj = Webgen::ContentProcessor::RedCloth.new
11
- context = Webgen::ContentProcessor::Context.new(:content => 'h1. header')
12
- assert_equal('<h1>header</h1>', @obj.call(context).content)
14
+ context = Webgen::Context.new(:content => "h1. header\n\nthis\nis\nsome\ntext")
15
+ assert_equal("<h1>header</h1>\n<p>this\nis\nsome\ntext</p>", @obj.call(context).content)
16
+
17
+ context.content = "h1. header\n\nthis\nis\nsome\ntext"
18
+ @website.config['contentprocessor.redcloth.hard_breaks'] = true
19
+ assert_equal("<h1>header</h1>\n<p>this<br />\nis<br />\nsome<br />\ntext</p>", @obj.call(context).content)
13
20
  end
14
21
 
15
22
  end
@@ -10,7 +10,7 @@ class TestContentProcessorSass < Test::Unit::TestCase
10
10
  obj = Webgen::ContentProcessor::Sass.new
11
11
  root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
12
12
  node = Webgen::Node.new(root, 'test', 'test')
13
- context = Webgen::ContentProcessor::Context.new(:content => "#main\n :background-color #000",
13
+ context = Webgen::Context.new(:content => "#main\n :background-color #000",
14
14
  :chain => [node])
15
15
  obj.call(context)
16
16
  assert_equal("#main {\n background-color: #000; }\n", context.content)
@@ -35,7 +35,7 @@ class TestContentProcessorTags < Test::Unit::TestCase
35
35
  end
36
36
 
37
37
  def test_call
38
- context = Webgen::ContentProcessor::Context.new(:chain => [Webgen::Tree.new.dummy_root])
38
+ context = Webgen::Context.new(:chain => [Webgen::Tree.new.dummy_root])
39
39
  context.content = "{test: }"
40
40
  assert_equal('', @obj.call(context).content)
41
41
 
@@ -2,16 +2,16 @@
2
2
 
3
3
  require 'test/unit'
4
4
  require 'helper'
5
- require 'webgen/contentprocessor'
5
+ require 'webgen/context'
6
6
 
7
- class TestContentProcessorContext < Test::Unit::TestCase
7
+ class TestContext < Test::Unit::TestCase
8
8
 
9
9
  def setup
10
- @context = Webgen::ContentProcessor::Context.new(:content => 'test', :key => :value, :chain => [:first, :last])
10
+ @context = Webgen::Context.new(:content => 'test', :key => :value, :chain => [:first, :last])
11
11
  end
12
12
 
13
13
  def test_initialize
14
- context = Webgen::ContentProcessor::Context.new
14
+ context = Webgen::Context.new
15
15
  assert_equal('', context.content)
16
16
  assert_kind_of(Webgen::ContentProcessor::AccessHash, context[:processors])
17
17
  end
@@ -27,11 +27,13 @@ class TestContentProcessorContext < Test::Unit::TestCase
27
27
  assert_equal(:value, @context[:key])
28
28
  assert_equal([:first, :last], @context[:chain])
29
29
  assert_equal('test', @context.content)
30
- assert_equal(:first, @context.ref_node)
31
- assert_equal(:last, @context.content_node)
32
- assert_equal(:value, @context[:key])
33
30
  @context[:key] = :newvalue
34
31
  assert_equal(:newvalue, @context[:key])
32
+ end
33
+
34
+ def test_node_methods
35
+ assert_equal(:first, @context.ref_node)
36
+ assert_equal(:last, @context.content_node)
35
37
  assert_equal(:last, @context.dest_node)
36
38
  @context[:dest_node] = :other
37
39
  assert_equal(:other, @context.dest_node)
data/test/test_node.rb CHANGED
@@ -42,8 +42,8 @@ class TestNode < Test::Unit::TestCase
42
42
  assert_equal(alcn, node.absolute_lcn)
43
43
  assert_equal(lang, node.lang)
44
44
  assert_kind_of(Webgen::Language, node.lang) if node.lang
45
- assert(node.flagged(:dirty))
46
- assert(node.flagged(:created))
45
+ assert(node.flagged?(:dirty))
46
+ assert(node.flagged?(:created))
47
47
  assert_equal(mi, node.meta_info)
48
48
  assert_equal({:used_nodes => Set.new, :used_meta_info_nodes => Set.new}, node.node_info)
49
49
  mi.each {|k,v| assert_equal(v, node[k])}
@@ -86,18 +86,18 @@ class TestNode < Test::Unit::TestCase
86
86
 
87
87
  def test_flags
88
88
  node = Webgen::Node.new(@tree.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
89
- assert(node.flagged(:created))
90
- assert(node.flagged(:dirty))
89
+ assert(node.flagged?(:created))
90
+ assert(node.flagged?(:dirty))
91
91
  node.unflag(:dirty)
92
- assert(!node.flagged(:dirty))
92
+ assert(!node.flagged?(:dirty))
93
93
  node.flag(:a, :b, :c)
94
- assert(node.flagged(:a))
95
- assert(node.flagged(:b))
96
- assert(node.flagged(:c))
94
+ assert(node.flagged?(:a))
95
+ assert(node.flagged?(:b))
96
+ assert(node.flagged?(:c))
97
97
  node.unflag(:a, :b, :c)
98
- assert(!node.flagged(:a))
99
- assert(!node.flagged(:b))
100
- assert(!node.flagged(:c))
98
+ assert(!node.flagged?(:a))
99
+ assert(!node.flagged?(:b))
100
+ assert(!node.flagged?(:c))
101
101
  end
102
102
 
103
103
  def test_in_lang
@@ -166,22 +166,34 @@ class TestNode < Test::Unit::TestCase
166
166
 
167
167
  def test_changed
168
168
  node = Webgen::Node.new(@tree.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
169
- node.unflag(:dirty, :created)
169
+ node.unflag(:dirty, :dirty_meta_info, :created)
170
170
 
171
171
  calls = 0
172
172
  @website.blackboard.add_listener(:node_changed?) {|n| assert(node, n); node.flag(:dirty); calls += 1}
173
- node.changed?
173
+ assert(node.changed?)
174
174
  assert_equal(1, calls)
175
- node.changed?
175
+ assert(node.changed?)
176
176
  assert_equal(1, calls)
177
177
 
178
+ # Test :used_nodes array checking
178
179
  node.unflag(:dirty)
179
180
  node.node_info[:used_nodes] << node.absolute_lcn
180
181
  node.node_info[:used_nodes] << 'unknown alcn'
181
182
  node.node_info[:used_nodes] << @tree.dummy_root.absolute_lcn
182
- node.changed?
183
+ assert(node.changed?)
183
184
  assert_equal(1, calls)
184
185
 
186
+ # Test :used_nodes array checking
187
+ node.unflag(:dirty)
188
+ node.node_info[:used_nodes] = Set.new
189
+ node.node_info[:used_meta_info_nodes] << node.absolute_lcn
190
+ assert(node.changed?)
191
+ assert_equal(2, calls)
192
+ node.unflag(:dirty)
193
+ node.node_info[:used_meta_info_nodes] << 'unknown alcn'
194
+ assert(node.changed?)
195
+ assert_equal(2, calls)
196
+
185
197
  # Test circular depdendence
186
198
  other_node = Webgen::Node.new(@tree.dummy_root, '/other', 'test.l', {'lang' => 'de', :test => :value})
187
199
  other_node.flag(:dirty, :created)
@@ -201,12 +213,6 @@ class TestNode < Test::Unit::TestCase
201
213
  assert_equal(1, calls)
202
214
  assert(node.meta_info_changed?)
203
215
  assert_equal(1, calls)
204
-
205
- node.unflag(:dirty_meta_info)
206
- node.node_info[:used_meta_info_nodes] << node.absolute_lcn
207
- node.node_info[:used_meta_info_nodes] << 'unknown alcn'
208
- assert(node.meta_info_changed?)
209
- assert_equal(1, calls)
210
216
  end
211
217
 
212
218
  def test_method_missing
data/test/test_page.rb CHANGED
@@ -6,7 +6,7 @@ require 'webgen/page'
6
6
  class TestBlock < Test::Unit::TestCase
7
7
 
8
8
  def test_render
9
- block = Webgen::Block.new('content', 'some content', {'pipeline' => 'test'})
9
+ block = Webgen::Page::Block.new('content', 'some content', {'pipeline' => 'test'})
10
10
  context = {:processors => {}}
11
11
  assert_raise(RuntimeError) { block.render(context) }
12
12
  context[:processors]['test'] = lambda {|context| context[:content] = context[:content].reverse + context[:block].name }
@@ -161,12 +161,12 @@ EOF
161
161
  def test_invalid_pagefiles
162
162
  testdata = YAML::load(INVALID_MI)
163
163
  testdata.each_with_index do |data, index|
164
- assert_raise(Webgen::WebgenPageFormatError, "test mi item #{index}") { Webgen::Page.from_data(data) }
165
- assert_raise(Webgen::WebgenPageFormatError, "test mi item #{index}") { Webgen::Page.meta_info_from_data(data) }
164
+ assert_raise(Webgen::Page::FormatError, "test mi item #{index}") { Webgen::Page.from_data(data) }
165
+ assert_raise(Webgen::Page::FormatError, "test mi item #{index}") { Webgen::Page.meta_info_from_data(data) }
166
166
  end
167
167
  testdata = YAML::load(INVALID_BLOCKS)
168
168
  testdata.each_with_index do |data, index|
169
- assert_raise(Webgen::WebgenPageFormatError, "test blocks item #{index}") { Webgen::Page.from_data(data) }
169
+ assert_raise(Webgen::Page::FormatError, "test blocks item #{index}") { Webgen::Page.from_data(data) }
170
170
  end
171
171
  end
172
172
 
@@ -0,0 +1,65 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'test/unit'
4
+ require 'helper'
5
+ require 'webgen/source'
6
+
7
+ class TestSourceTarArchive < Test::Unit::TestCase
8
+
9
+ class FakeStream
10
+
11
+ def open
12
+ require 'stringio'
13
+ sio = StringIO.new
14
+ stream = Archive::Tar::Minitar::Writer.new(sio)
15
+ stream.mkdir('/test', :mtime => (Time.now - 5).to_i, :mode => 0100755)
16
+ stream.add_file('/test/hallo.page', :mtime => (Time.now - 4).to_i, :mode => 0100644) do |os, opts|
17
+ os.write('This is the contents!')
18
+ end
19
+ stream.add_file('/other.page', :mtime => (Time.now - 4).to_i, :mode => 0100644) do |os, opts|
20
+ os.write('This is other content!')
21
+ end
22
+ sio.rewind
23
+ sio
24
+ end
25
+
26
+ end
27
+
28
+ include Test::WebsiteHelper
29
+
30
+ def setup
31
+ super
32
+ @website = Webgen::Website.new(File.join(File.dirname(__FILE__), '..'), nil)
33
+ @website.init
34
+ Thread.current[:webgen_website] = @website
35
+ @stream = FakeStream.new
36
+ end
37
+
38
+ def test_initialize
39
+ source = Webgen::Source::TarArchive.new(@stream)
40
+ assert_equal(@stream, source.uri)
41
+ end
42
+
43
+ def test_paths
44
+ source = Webgen::Source::TarArchive.new(@stream)
45
+ assert_equal(3, source.paths.length)
46
+ assert(source.paths.include?(Webgen::Path.new('/test/')))
47
+ assert(source.paths.include?(Webgen::Path.new('/test/hallo.page')))
48
+ assert_equal('This is the contents!', source.paths.find {|p| p.path == '/test/hallo.page'}.io.data)
49
+
50
+ source = Webgen::Source::TarArchive.new(@stream, '/test/*')
51
+ assert_equal(1, source.paths.length)
52
+ assert(source.paths.include?(Webgen::Path.new('/test/hallo.page')))
53
+ end
54
+
55
+ def test_path_changed?
56
+ stream = @stream
57
+ source = Webgen::Source::TarArchive.new(stream)
58
+ source.paths.each do |path|
59
+ assert(!path.changed?)
60
+ @website.cache.instance_eval { @old_data[[:tararchive_path, stream, path.path]] = Time.now - 60 }
61
+ assert(path.changed?)
62
+ end
63
+ end
64
+
65
+ end
@@ -11,7 +11,7 @@ class TestSourceHandlerFragment < Test::Unit::TestCase
11
11
 
12
12
  TEST_CONTENT=<<EOF
13
13
  - data: |
14
- <h1 id="test">Test</h1>
14
+ <h1 id="test" style="test">Test</h1>
15
15
  <h2 id="other">test</h2>
16
16
  <h1>nothing</h1>
17
17
  <h1 id="third">test</h1>