webgen 0.5.8 → 0.5.9

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 (142) hide show
  1. data/COPYING +4 -0
  2. data/ChangeLog +1037 -0
  3. data/Rakefile +5 -6
  4. data/THANKS +1 -0
  5. data/VERSION +1 -1
  6. data/bin/webgen +1 -1
  7. data/data/webgen/passive_sources/images/generated_by_webgen.png +0 -0
  8. data/data/webgen/passive_sources/images/webgen_logo.png +0 -0
  9. data/data/webgen/passive_sources/stylesheets/coderay-default.css +129 -0
  10. data/data/webgen/passive_sources/templates/atom_feed.template +38 -0
  11. data/data/webgen/passive_sources/templates/rss_feed.template +28 -0
  12. data/data/webgen/passive_sources/templates/sitemap.template +21 -0
  13. data/data/webgen/resources.yaml +2 -1
  14. data/data/webgen/website_skeleton/Rakefile +5 -1
  15. data/doc/contentprocessor/builder.page +2 -2
  16. data/doc/contentprocessor/erb.page +5 -2
  17. data/doc/contentprocessor/erubis.page +2 -2
  18. data/doc/contentprocessor/head.page +21 -0
  19. data/doc/contentprocessor/tidy.page +14 -0
  20. data/doc/extensions.page +1 -1
  21. data/doc/faq.page +2 -2
  22. data/doc/manual.page +108 -43
  23. data/doc/reference_configuration.page +83 -5
  24. data/doc/reference_metainfo.page +24 -4
  25. data/doc/reference_website_styles.page +2 -2
  26. data/doc/sourcehandler/feed.page +11 -13
  27. data/doc/sourcehandler/metainfo.page +10 -3
  28. data/doc/sourcehandler/page.page +4 -4
  29. data/doc/sourcehandler/sitemap.page +8 -7
  30. data/doc/tag/coderay.page +6 -2
  31. data/doc/tag/includefile.page +1 -1
  32. data/doc/tag/menu.page +3 -0
  33. data/lib/webgen/cli/apply_command.rb +1 -1
  34. data/lib/webgen/cli/utils.rb +2 -2
  35. data/lib/webgen/common.rb +0 -9
  36. data/lib/webgen/contentprocessor.rb +18 -3
  37. data/lib/webgen/contentprocessor/blocks.rb +67 -36
  38. data/lib/webgen/contentprocessor/builder.rb +5 -2
  39. data/lib/webgen/contentprocessor/erb.rb +4 -2
  40. data/lib/webgen/contentprocessor/erubis.rb +5 -2
  41. data/lib/webgen/contentprocessor/haml.rb +6 -2
  42. data/lib/webgen/contentprocessor/head.rb +64 -0
  43. data/lib/webgen/contentprocessor/maruku.rb +3 -1
  44. data/lib/webgen/contentprocessor/rdiscount.rb +2 -0
  45. data/lib/webgen/contentprocessor/rdoc.rb +2 -0
  46. data/lib/webgen/contentprocessor/redcloth.rb +2 -0
  47. data/lib/webgen/contentprocessor/sass.rb +5 -3
  48. data/lib/webgen/contentprocessor/tags.rb +40 -24
  49. data/lib/webgen/contentprocessor/tidy.rb +38 -0
  50. data/lib/webgen/context.rb +13 -4
  51. data/lib/webgen/context/render.rb +32 -0
  52. data/lib/webgen/context/tags.rb +20 -0
  53. data/lib/webgen/default_config.rb +15 -4
  54. data/lib/webgen/deprecated.rb +38 -4
  55. data/lib/webgen/error.rb +135 -0
  56. data/lib/webgen/node.rb +48 -40
  57. data/lib/webgen/output.rb +5 -3
  58. data/lib/webgen/output/filesystem.rb +4 -4
  59. data/lib/webgen/page.rb +4 -4
  60. data/lib/webgen/path.rb +161 -58
  61. data/lib/webgen/source.rb +9 -6
  62. data/lib/webgen/source/filesystem.rb +1 -1
  63. data/lib/webgen/source/stacked.rb +13 -5
  64. data/lib/webgen/source/tararchive.rb +6 -2
  65. data/lib/webgen/sourcehandler.rb +100 -54
  66. data/lib/webgen/sourcehandler/base.rb +58 -24
  67. data/lib/webgen/sourcehandler/copy.rb +6 -5
  68. data/lib/webgen/sourcehandler/directory.rb +3 -9
  69. data/lib/webgen/sourcehandler/feed.rb +25 -50
  70. data/lib/webgen/sourcehandler/fragment.rb +10 -8
  71. data/lib/webgen/sourcehandler/memory.rb +9 -10
  72. data/lib/webgen/sourcehandler/metainfo.rb +9 -9
  73. data/lib/webgen/sourcehandler/page.rb +6 -5
  74. data/lib/webgen/sourcehandler/sitemap.rb +22 -22
  75. data/lib/webgen/sourcehandler/template.rb +6 -6
  76. data/lib/webgen/sourcehandler/virtual.rb +19 -17
  77. data/lib/webgen/tag/base.rb +27 -27
  78. data/lib/webgen/tag/breadcrumbtrail.rb +3 -3
  79. data/lib/webgen/tag/coderay.rb +19 -8
  80. data/lib/webgen/tag/executecommand.rb +4 -3
  81. data/lib/webgen/tag/langbar.rb +2 -2
  82. data/lib/webgen/tag/link.rb +8 -7
  83. data/lib/webgen/tag/menu.rb +2 -2
  84. data/lib/webgen/tag/metainfo.rb +1 -1
  85. data/lib/webgen/tag/relocatable.rb +17 -21
  86. data/lib/webgen/tag/tikz.rb +7 -10
  87. data/lib/webgen/tree.rb +7 -7
  88. data/lib/webgen/version.rb +1 -1
  89. data/lib/webgen/website.rb +32 -2
  90. data/misc/default.css +8 -2
  91. data/misc/default.template +2 -2
  92. data/misc/logo.svg +313 -0
  93. data/misc/style.page +1 -1
  94. data/test/helper.rb +18 -2
  95. data/test/test_cli.rb +104 -0
  96. data/test/test_common_sitemap.rb +1 -1
  97. data/test/test_contentprocessor.rb +8 -2
  98. data/test/test_contentprocessor_blocks.rb +17 -8
  99. data/test/test_contentprocessor_builder.rb +13 -2
  100. data/test/test_contentprocessor_erb.rb +9 -3
  101. data/test/test_contentprocessor_erubis.rb +9 -3
  102. data/test/test_contentprocessor_fragments.rb +12 -11
  103. data/test/test_contentprocessor_haml.rb +11 -2
  104. data/test/test_contentprocessor_head.rb +44 -0
  105. data/test/test_contentprocessor_maruku.rb +5 -1
  106. data/test/test_contentprocessor_rdiscount.rb +4 -0
  107. data/test/test_contentprocessor_rdoc.rb +4 -0
  108. data/test/test_contentprocessor_redcloth.rb +5 -1
  109. data/test/test_contentprocessor_sass.rb +8 -2
  110. data/test/test_contentprocessor_tags.rb +22 -7
  111. data/test/test_contentprocessor_tidy.rb +34 -0
  112. data/test/test_context.rb +39 -0
  113. data/test/test_error.rb +85 -0
  114. data/test/test_node.rb +57 -21
  115. data/test/test_page.rb +23 -5
  116. data/test/test_path.rb +120 -64
  117. data/test/test_source_filesystem.rb +1 -1
  118. data/test/test_source_stacked.rb +19 -6
  119. data/test/test_sourcehandler_base.rb +63 -50
  120. data/test/test_sourcehandler_copy.rb +6 -6
  121. data/test/test_sourcehandler_directory.rb +8 -12
  122. data/test/test_sourcehandler_feed.rb +15 -7
  123. data/test/test_sourcehandler_fragment.rb +6 -5
  124. data/test/test_sourcehandler_main.rb +39 -0
  125. data/test/test_sourcehandler_memory.rb +4 -4
  126. data/test/test_sourcehandler_metainfo.rb +20 -11
  127. data/test/test_sourcehandler_page.rb +10 -10
  128. data/test/test_sourcehandler_sitemap.rb +24 -5
  129. data/test/test_sourcehandler_template.rb +18 -15
  130. data/test/test_sourcehandler_virtual.rb +9 -5
  131. data/test/test_tag_base.rb +6 -29
  132. data/test/test_tag_coderay.rb +16 -3
  133. data/test/test_tag_executecommand.rb +2 -2
  134. data/test/test_tag_link.rb +5 -4
  135. data/test/test_tag_menu.rb +15 -15
  136. data/test/test_tag_metainfo.rb +1 -0
  137. data/test/test_tag_relocatable.rb +3 -2
  138. data/test/test_tag_tikz.rb +5 -5
  139. data/test/test_tree.rb +8 -8
  140. data/test/test_website.rb +15 -0
  141. metadata +21 -14
  142. data/test/test_common.rb +0 -18
@@ -171,6 +171,12 @@ blockquote pre {
171
171
  padding: 0;
172
172
  }
173
173
 
174
+ #header-content #logo-image {
175
+ position: absolute;
176
+ margin: 0; padding: 0;
177
+ top: 20px; left: 10px;
178
+ }
179
+
174
180
  #header-content #logo {
175
181
  position: absolute;
176
182
  font: bold 50px Verdana, 'Trebuchet Ms', Sans-serif;
@@ -178,7 +184,7 @@ blockquote pre {
178
184
  color: #FCFFF5;
179
185
  margin: 0; padding: 0;
180
186
 
181
- top: 5px; left: 20px;
187
+ top: 5px; left: 100px;
182
188
  }
183
189
 
184
190
  #header-content #slogan {
@@ -188,7 +194,7 @@ blockquote pre {
188
194
  color: #CCC;
189
195
  margin: 0; padding: 0;
190
196
 
191
- top: 65px; left: 35px;
197
+ top: 65px; left: 115px;
192
198
  }
193
199
 
194
200
  /* header menu */
@@ -7,14 +7,14 @@
7
7
 
8
8
  <link rel="stylesheet" href="{relocatable: default.css}" type="text/css" />
9
9
 
10
- <title>webgen - static website generator - {title:}</title>
10
+ <title>{title:} | webgen - static website generator</title>
11
11
 
12
12
  </head>
13
13
 
14
14
  <body>
15
15
  <!-- header starts here -->
16
16
  <div id="header"><div id="header-content">
17
-
17
+ <img id="logo-image" src="{relocatable: /images/webgen_logo.png}" alt="webgen logo" />
18
18
  <h1 id="logo">webgen</h1>
19
19
  <h2 id="slogan">static website generation made easy</h2>
20
20
 
@@ -0,0 +1,313 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+ <svg
4
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
5
+ xmlns:cc="http://web.resource.org/cc/"
6
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7
+ xmlns:svg="http://www.w3.org/2000/svg"
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ xmlns:xlink="http://www.w3.org/1999/xlink"
10
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
11
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+ width="100"
13
+ height="30"
14
+ id="svg2"
15
+ sodipodi:version="0.32"
16
+ inkscape:version="0.43"
17
+ version="1.0"
18
+ sodipodi:docbase="/home/thomas/work/webgen/otherdata"
19
+ sodipodi:docname="logo.svg"
20
+ inkscape:export-filename="/home/thomas/work/webgen/data/webgen/resources/images/generated_by_webgen.png"
21
+ inkscape:export-xdpi="90"
22
+ inkscape:export-ydpi="90">
23
+ <defs
24
+ id="defs4">
25
+ <linearGradient
26
+ id="linearGradient9010">
27
+ <stop
28
+ style="stop-color:#ffffff;stop-opacity:1;"
29
+ offset="0"
30
+ id="stop9012" />
31
+ <stop
32
+ id="stop9131"
33
+ offset="0.40000001"
34
+ style="stop-color:#ffffff;stop-opacity:0.49803922;" />
35
+ <stop
36
+ style="stop-color:#ffffff;stop-opacity:0;"
37
+ offset="1"
38
+ id="stop9014" />
39
+ </linearGradient>
40
+ <linearGradient
41
+ inkscape:collect="always"
42
+ id="linearGradient8998">
43
+ <stop
44
+ style="stop-color:#000000;stop-opacity:1;"
45
+ offset="0"
46
+ id="stop9000" />
47
+ <stop
48
+ style="stop-color:#000000;stop-opacity:0;"
49
+ offset="1"
50
+ id="stop9002" />
51
+ </linearGradient>
52
+ <linearGradient
53
+ inkscape:collect="always"
54
+ id="linearGradient8988">
55
+ <stop
56
+ style="stop-color:#837c7c;stop-opacity:1;"
57
+ offset="0"
58
+ id="stop8990" />
59
+ <stop
60
+ style="stop-color:#837c7c;stop-opacity:0;"
61
+ offset="1"
62
+ id="stop8992" />
63
+ </linearGradient>
64
+ <linearGradient
65
+ id="linearGradient2482">
66
+ <stop
67
+ style="stop-color:#0b0c85;stop-opacity:1;"
68
+ offset="0"
69
+ id="stop2484" />
70
+ <stop
71
+ style="stop-color:#ffffff;stop-opacity:0;"
72
+ offset="1"
73
+ id="stop2486" />
74
+ </linearGradient>
75
+ <radialGradient
76
+ inkscape:collect="always"
77
+ xlink:href="#linearGradient2482"
78
+ id="radialGradient2488"
79
+ cx="-4.076539"
80
+ cy="50.301582"
81
+ fx="-4.076539"
82
+ fy="50.301582"
83
+ r="15.371569"
84
+ gradientTransform="matrix(1,0,0,0.23755,1.977585e-15,38.35243)"
85
+ gradientUnits="userSpaceOnUse" />
86
+ <linearGradient
87
+ inkscape:collect="always"
88
+ xlink:href="#linearGradient8988"
89
+ id="linearGradient8996"
90
+ x1="65.366257"
91
+ y1="49.937603"
92
+ x2="103.37334"
93
+ y2="49.937603"
94
+ gradientUnits="userSpaceOnUse"
95
+ gradientTransform="translate(-49.79201,7.716306)" />
96
+ <linearGradient
97
+ inkscape:collect="always"
98
+ xlink:href="#linearGradient8998"
99
+ id="linearGradient9004"
100
+ x1="15.574246"
101
+ y1="57.653908"
102
+ x2="53.581326"
103
+ y2="57.653908"
104
+ gradientUnits="userSpaceOnUse" />
105
+ <radialGradient
106
+ inkscape:collect="always"
107
+ xlink:href="#linearGradient9010"
108
+ id="radialGradient9020"
109
+ cx="-9.3905993"
110
+ cy="25.551165"
111
+ fx="-9.3905993"
112
+ fy="25.551165"
113
+ r="18.708403"
114
+ gradientTransform="matrix(1,0,0,1.03891,0,-0.994208)"
115
+ gradientUnits="userSpaceOnUse" />
116
+ <radialGradient
117
+ inkscape:collect="always"
118
+ xlink:href="#linearGradient9010"
119
+ id="radialGradient9050"
120
+ cx="45.007336"
121
+ cy="51.899277"
122
+ fx="45.007336"
123
+ fy="51.899277"
124
+ r="25.753019"
125
+ gradientTransform="matrix(1,0,0,1.020221,0,-1.049469)"
126
+ gradientUnits="userSpaceOnUse" />
127
+ <radialGradient
128
+ inkscape:collect="always"
129
+ xlink:href="#linearGradient9010"
130
+ id="radialGradient9139"
131
+ cx="35.144642"
132
+ cy="30.299515"
133
+ fx="35.144642"
134
+ fy="30.299515"
135
+ r="34.081051"
136
+ gradientTransform="matrix(1,0,0,0.841996,-1.009663e-18,4.787447)"
137
+ gradientUnits="userSpaceOnUse" />
138
+ <radialGradient
139
+ inkscape:collect="always"
140
+ xlink:href="#linearGradient9010"
141
+ id="radialGradient9197"
142
+ gradientUnits="userSpaceOnUse"
143
+ gradientTransform="matrix(0.476243,0,0,0.400935,2.559175e-2,2.84574)"
144
+ cx="35.144642"
145
+ cy="30.299515"
146
+ fx="35.144642"
147
+ fy="30.299515"
148
+ r="34.081051" />
149
+ </defs>
150
+ <sodipodi:namedview
151
+ id="base"
152
+ pagecolor="#000000"
153
+ bordercolor="#666666"
154
+ borderopacity="1.0"
155
+ inkscape:pageopacity="0"
156
+ inkscape:pageshadow="2"
157
+ inkscape:zoom="9.6947434"
158
+ inkscape:cx="50.002952"
159
+ inkscape:cy="-1.0038166"
160
+ inkscape:document-units="px"
161
+ inkscape:current-layer="layer1"
162
+ inkscape:window-width="1347"
163
+ inkscape:window-height="770"
164
+ inkscape:window-x="275"
165
+ inkscape:window-y="0"
166
+ showguides="true"
167
+ showgrid="true"
168
+ inkscape:guide-bbox="true"
169
+ inkscape:grid-points="false"
170
+ inkscape:guide-points="true"
171
+ gridtolerance="2px">
172
+ <sodipodi:guide
173
+ orientation="vertical"
174
+ position="-23.75"
175
+ id="guide9173" />
176
+ </sodipodi:namedview>
177
+ <metadata
178
+ id="metadata7">
179
+ <rdf:RDF>
180
+ <cc:Work
181
+ rdf:about="">
182
+ <dc:format>image/svg+xml</dc:format>
183
+ <dc:type
184
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
185
+ </cc:Work>
186
+ </rdf:RDF>
187
+ </metadata>
188
+ <g
189
+ inkscape:label="Layer 1"
190
+ inkscape:groupmode="layer"
191
+ id="layer1">
192
+ <rect
193
+ style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#15172e;stroke-width:0.61475945;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
194
+ id="rect9179"
195
+ width="99.394241"
196
+ height="29.369965"
197
+ x="0.30583158"
198
+ y="0.31501755"
199
+ rx="5.8250461"
200
+ ry="3.8354847" />
201
+ <g
202
+ id="g9199"
203
+ inkscape:export-filename="/home/thomas/work/webgen/data/webgen/resources/images/webgen_logo.png"
204
+ inkscape:export-xdpi="277.25"
205
+ inkscape:export-ydpi="277.25">
206
+ <path
207
+ id="path9059"
208
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient9197);stroke-width:2.9762969;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
209
+ d="M 12.001541,4.9582582 C 10.119861,9.4613354 7.8403112,13.296566 4.2766433,14.976335 C 9.6644057,19.60339 10.106791,22.570228 11.472438,25.847016 C 15.805023,24.565959 14.983383,21.8164 24.065078,22.223456 M 13.059746,8.3686669 C 12.655002,11.087245 11.468192,13.870781 9.6734896,15.189486 C 11.542234,16.971247 12.834153,19.526502 12.742284,22.436606 C 14.695354,20.520169 16.658419,18.725407 20.14972,19.132772 M 25.524879,19.082684 C 25.109469,17.713763 23.528825,14.341956 24.466673,12.155289 C 22.681833,12.512912 20.90358,13.045083 19.272671,11.640386 M 29.228596,21.853641 C 28.225974,17.325088 27.417448,12.861696 28.911135,9.1711819 C 25.133533,9.9728951 21.618283,9.1892774 18.117443,8.3185788 M 31.505584,23.605166 L 20.395577,15.115009 M 16.317837,2.8176279 L 20.253272,14.754881 M 20.464913,15.074607 L 31.200005,6.9823159 M 26.484371,23.626928 L 15.305026,14.997109 M 11.161097,27.170117 L 15.126238,15.19696 M 11.296624,2.8393902 L 15.232058,14.776643 M 15.126238,15.090384 L 2.0203788,14.883217" />
210
+ <g
211
+ transform="matrix(0.476243,0,0,0.796874,-3.42334,1.215231)"
212
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#837c7c;stroke-opacity:1"
213
+ id="use8924">
214
+ <path
215
+ sodipodi:nodetypes="cccccccc"
216
+ id="path8936"
217
+ d="M 31.698294,4.9731037 C 27.747203,10.624033 22.960676,15.436878 15.477799,17.544827 C 26.790852,23.351335 27.719759,27.074432 30.587301,31.186485 C 39.684727,29.578882 37.959473,26.12845 57.028929,26.639266 M 33.92028,9.252839 C 33.070411,12.664393 30.578386,16.157462 26.809926,17.81231 C 30.733857,20.04825 33.446587,23.254849 33.253684,26.906749 C 37.354678,24.501805 41.476661,22.249551 48.807583,22.760755"
218
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#837c7c;stroke-width:1.75500572;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
219
+ <g
220
+ style="stroke:#837c7c;stroke-opacity:1"
221
+ transform="matrix(1.392074,0,0,0.837892,-26.34107,4.475587)"
222
+ id="g8938">
223
+ <path
224
+ sodipodi:nodetypes="cccccs"
225
+ id="path8940"
226
+ d="M 62.090982,21.747805 C 61.464389,19.697584 59.080186,14.647658 60.494813,11.372705 C 57.802605,11.908314 55.120334,12.705341 52.660314,10.601539 M 67.677574,25.897845 C 66.165245,19.11547 64.945684,12.430684 67.198723,6.9034321 C 61.500687,8.1041521 56.198374,6.9305341 50.917798,5.6264961"
227
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#837c7c;stroke-width:1.625;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
228
+ <path
229
+ sodipodi:nodetypes="cccccc"
230
+ d="M 71.112123,28.521089 L 54.354076,15.805452 M 48.203319,-2.6122322 L 54.139427,15.266092 M 54.458661,15.744943 L 70.651196,3.6251863"
231
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#837c7c;stroke-width:1.625;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
232
+ id="path8942" />
233
+ </g>
234
+ <path
235
+ sodipodi:nodetypes="cccccccc"
236
+ d="M 62.108884,28.400489 L 38.634849,17.570896 M 29.933556,32.84685 L 38.259435,17.821689 M 30.218132,2.3141281 L 38.481633,17.294233 M 38.259435,17.687947 L 10.740166,17.427973"
237
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#837c7c;stroke-width:1.75500572;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
238
+ id="path8944" />
239
+ </g>
240
+ <g
241
+ transform="matrix(0.476243,0,0,0.796874,-2.886543,0.30206)"
242
+ id="g8917">
243
+ <path
244
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#313967;stroke-width:1.75500572;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
245
+ d="M 31.698294,4.9731037 C 27.747203,10.624033 22.960676,15.436878 15.477799,17.544827 C 26.790852,23.351335 27.719759,27.074432 30.587301,31.186485 C 39.684727,29.578882 37.959473,26.12845 57.028929,26.639266 M 33.92028,9.252839 C 33.070411,12.664393 30.578386,16.157462 26.809926,17.81231 C 30.733857,20.04825 33.446587,23.254849 33.253684,26.906749 C 37.354678,24.501805 41.476661,22.249551 48.807583,22.760755"
246
+ id="path2464"
247
+ sodipodi:nodetypes="cccccccc" />
248
+ <path
249
+ sodipodi:nodetypes="cccccs"
250
+ id="path2470"
251
+ d="M 60.094172,22.697899 C 59.221908,20.980035 55.902921,16.748742 57.872186,14.004686 C 54.124434,14.453468 50.390514,15.121291 46.965984,13.358532 M 67.871121,26.175184 C 65.765847,20.492286 64.068128,14.891158 67.204525,10.259918 C 59.272437,11.265991 51.891225,10.282626 44.540273,9.1899831"
252
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#313967;stroke-width:1.75500572;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
253
+ <path
254
+ sodipodi:nodetypes="cccccc"
255
+ d="M 72.652268,28.373179 L 49.323826,17.718849 M 40.761517,2.2868185 L 49.025019,17.266923 M 49.469416,17.668149 L 72.010623,7.5131016"
256
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#15172e;stroke-width:1.75500572;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
257
+ id="path2468"
258
+ inkscape:export-filename="/home/thomas/work/webgen/doc/output/path2468.png"
259
+ inkscape:export-xdpi="91"
260
+ inkscape:export-ydpi="91" />
261
+ <path
262
+ id="path2193"
263
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#15172e;stroke-width:1.75500572;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
264
+ d="M 62.108884,28.400489 L 38.634849,17.570896 M 29.933556,32.84685 L 38.259435,17.821689 M 30.218132,2.3141281 L 38.481633,17.294233 M 38.259435,17.687947 L 10.740166,17.427973"
265
+ sodipodi:nodetypes="cccccccc"
266
+ inkscape:export-filename="/home/thomas/work/webgen/doc/output/path2193.png"
267
+ inkscape:export-xdpi="91"
268
+ inkscape:export-ydpi="91" />
269
+ </g>
270
+ </g>
271
+ <text
272
+ sodipodi:linespacing="100%"
273
+ id="text9141"
274
+ y="9.8423424"
275
+ x="33.642422"
276
+ style="font-size:13.33380985px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#15172e;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Baekmuk Headline"
277
+ xml:space="preserve"
278
+ transform="scale(1.000075,0.999925)"><tspan
279
+ style="font-size:9.52414989px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Baekmuk Headline"
280
+ y="9.8423424"
281
+ x="33.642422"
282
+ id="tspan9155"
283
+ sodipodi:role="line">generated by</tspan></text>
284
+ <text
285
+ sodipodi:linespacing="125%"
286
+ id="text9157"
287
+ y="23.938398"
288
+ x="33.202072"
289
+ style="font-size:19.04829979px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#15172e;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Baekmuk Headline"
290
+ xml:space="preserve"
291
+ transform="scale(1.000075,0.999925)"><tspan
292
+ style="font-size:19.04829979px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#15172e;fill-opacity:1;font-family:Baekmuk Headline"
293
+ y="23.938398"
294
+ x="33.202072"
295
+ id="tspan9159"
296
+ sodipodi:role="line">webgen</tspan></text>
297
+ <use
298
+ x="0"
299
+ y="0"
300
+ xlink:href="#g9199"
301
+ id="use9213"
302
+ transform="translate(2.006268,33.34173)"
303
+ width="100"
304
+ height="30"
305
+ inkscape:export-filename="/home/thomas/work/webgen/data/webgen/resources/images/webgen_logo.png"
306
+ inkscape:export-xdpi="221.8"
307
+ inkscape:export-ydpi="221.8" />
308
+ </g>
309
+ <g
310
+ inkscape:groupmode="layer"
311
+ id="layer2"
312
+ inkscape:label="offsets" />
313
+ </svg>
@@ -23,7 +23,7 @@ Or it can be applied later on to an already existing website by using the follow
23
23
  <dl>
24
24
  <%
25
25
  require 'webgen/websitemanager'
26
- infos = Webgen::WebsiteManager.new(context.website).bundles[context.content_node.parent.cn]
26
+ infos = Webgen::WebsiteManager.new(context.website).bundles[context.content_node.parent.cn.chomp('/')]
27
27
  infos.instance_eval {@table}.sort {|(ak,av), (bk,bv)| ak.to_s <=> bk.to_s}.each do |name, value|
28
28
  next if name.to_s == 'paths'
29
29
  %>
@@ -5,11 +5,27 @@ require 'webgen/website'
5
5
 
6
6
  module Test
7
7
 
8
+ module WebgenAssertions
9
+
10
+ def assert_error_on_line(error_class, line)
11
+ begin
12
+ yield
13
+ rescue error_class => e
14
+ assert_equal(line, e.line)
15
+ else
16
+ fail "No exception raised though #{error_class} expected"
17
+ end
18
+ end
19
+
20
+ end
21
+
8
22
  module WebsiteHelper
9
23
 
24
+ include WebgenAssertions
25
+
10
26
  def setup
11
27
  super
12
- @website = Webgen::Website.new('test', nil)
28
+ @website = Webgen::Website.new('test', nil) {|cfg| cfg['passive_sources'] = []}
13
29
  @website.init
14
30
  Thread.current[:webgen_website] = @website
15
31
  end
@@ -27,7 +43,7 @@ module Test
27
43
 
28
44
  def create_sitemap_nodes
29
45
  {
30
- :root => root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/', {'index_path' => 'index.html'}),
46
+ :root => root = Webgen::Node.new(@website.tree.dummy_root, '/', '/', {'index_path' => 'index.html'}),
31
47
  :dir1 => dir1 = Webgen::Node.new(root, '/dir1/', 'dir1/'),
32
48
  :file11_en => file11 = Webgen::Node.new(dir1, '/dir1/file11.en.html', 'file11.html', {'lang' => 'en', 'in_menu' => true, 'kind' => 'page'}),
33
49
  :file11_en_f1 => file11_f1 = Webgen::Node.new(file11, '/dir1/file11.en.html#f1', '#f1', {'in_menu' => true}),
@@ -2,6 +2,9 @@
2
2
 
3
3
  require 'test/unit'
4
4
  require 'webgen/cli'
5
+ require 'tmpdir'
6
+ require 'fileutils'
7
+ require 'rbconfig'
5
8
 
6
9
  class TestCLICommandParser < Test::Unit::TestCase
7
10
 
@@ -13,3 +16,104 @@ class TestCLICommandParser < Test::Unit::TestCase
13
16
  end
14
17
 
15
18
  end
19
+
20
+ if Config::CONFIG['host_os'] !~ /mswin|mingw/
21
+
22
+ class TestCLICommands < Test::Unit::TestCase
23
+
24
+ def setup
25
+ @dir = File.join(Dir.tmpdir, "webgen-#{Process.pid}")
26
+ @cli = Webgen::CLI::CommandParser.new
27
+ end
28
+
29
+ def reroute
30
+ sinread, sinwrite = IO.pipe
31
+ soutread, soutwrite = IO.pipe
32
+ aread, awrite = IO.pipe
33
+ awrite.reopen($stdin)
34
+ aread.reopen($stdout)
35
+ IO.new(0).reopen(sinread)
36
+ IO.new(1).reopen(soutwrite)
37
+ yield(sinwrite, soutread, sinread, soutwrite)
38
+ sinwrite.close_write
39
+ soutwrite.close_write
40
+ soutread
41
+ ensure
42
+ IO.new(0).reopen(awrite)
43
+ IO.new(1).reopen(aread)
44
+ end
45
+
46
+ def test_reroute
47
+ soutr = reroute do |sinw, soutr, sinr, soutw|
48
+ soutw.puts "test"
49
+ end
50
+ assert_equal("test\n", soutr.read)
51
+ end
52
+
53
+ def teardown
54
+ FileUtils.rm_rf(@dir)
55
+ end
56
+
57
+ def test_create_simple
58
+ @cli.parse(['create', @dir])
59
+ assert(File.directory?(@dir))
60
+ assert(File.file?(File.join(@dir, 'config.yaml')))
61
+ end
62
+
63
+ def test_create_with_bundles
64
+ @cli.parse(['create', '-b', 'default', '-b', '07', @dir])
65
+ assert(File.directory?(@dir))
66
+ assert(File.file?(File.join(@dir, 'config.yaml')))
67
+ assert(File.file?(File.join(@dir, 'src', 'default.template')))
68
+ end
69
+
70
+ def test_create_with_no_bundle
71
+ @cli.parse(['create', '-b', 'none', @dir])
72
+ assert(File.directory?(@dir))
73
+ assert(File.file?(File.join(@dir, 'config.yaml')))
74
+ assert(!File.file?(File.join(@dir, 'src', 'default.template')))
75
+ end
76
+
77
+ def test_apply
78
+ assert_raise(RuntimeError) { @cli.parse(['-d', @dir, 'apply', '07']) }
79
+ @cli.parse(['create', '-b', 'none', @dir])
80
+ assert_raise(SystemExit) { reroute { @cli.parse(['-d', @dir, 'apply']) }}
81
+ reroute do |sinwrite, soutread|
82
+ sinwrite.puts "no"
83
+ @cli.parse(['-d', @dir, 'apply', '07'])
84
+ end
85
+ assert(!File.file?(File.join(@dir, 'src', 'default.template')))
86
+ reroute do |sinwrite, soutread|
87
+ sinwrite.puts "yes"
88
+ @cli.parse(['-d', @dir, 'apply', '07'])
89
+ end
90
+ assert(File.file?(File.join(@dir, 'src', 'default.template')))
91
+ end
92
+
93
+ def test_apply_forced
94
+ @cli.parse(['create', '-b', 'none', @dir])
95
+ reroute { @cli.parse(['-d', @dir, 'apply', '-f', '07']) }
96
+ assert(File.file?(File.join(@dir, 'src', 'default.template')))
97
+ end
98
+
99
+ def test_render
100
+ @cli.parse(['create', @dir])
101
+ reroute { Webgen::CLI::CommandParser.new.parse(['-d', @dir, 'render']) }
102
+ assert(File.file?(File.join(@dir, 'out', 'index.html')))
103
+ end
104
+
105
+ def test_all_help
106
+ %w[create apply render].each do |cmd|
107
+ soutr = reroute do
108
+ begin
109
+ @cli.parse(['help', cmd])
110
+ rescue SystemExit
111
+ end
112
+ end
113
+ assert_match(/#{cmd}:.*Usage:/m, soutr.read)
114
+ end
115
+ end
116
+
117
+ end
118
+
119
+ end