webgen 0.5.8 → 0.5.9

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