zenweb 2.18.0 → 2.18.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +10 -0
- data/lib/ZenWeb/HeaderRenderer.rb +7 -7
- data/lib/ZenWeb/RelativeRenderer.rb +10 -11
- data/lib/ZenWeb/StupidRenderer.rb +7 -4
- data/lib/ZenWeb/TocRenderer.rb +13 -14
- data/lib/ZenWeb.rb +4 -4
- data/test/test_zenweb.rb +29 -34
- data.tar.gz.sig +0 -0
- metadata +1 -1
- metadata.gz.sig +0 -0
data/History.txt
CHANGED
@@ -29,18 +29,18 @@ class HeaderRenderer < GenericRenderer
|
|
29
29
|
if header then
|
30
30
|
placed = false
|
31
31
|
|
32
|
-
content.
|
32
|
+
content.each_line { | line |
|
33
33
|
|
34
|
-
|
34
|
+
push(line)
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
if (line =~ /<BODY/i) then
|
37
|
+
push(header)
|
38
|
+
placed = true
|
39
|
+
end
|
40
40
|
}
|
41
41
|
|
42
42
|
unless placed then
|
43
|
-
|
43
|
+
unshift(header) unless placed
|
44
44
|
end
|
45
45
|
else
|
46
46
|
push(content)
|
@@ -57,25 +57,24 @@ class RelativeRenderer < GenericRenderer
|
|
57
57
|
|
58
58
|
def render(content)
|
59
59
|
if $Uri_Implemented then
|
60
|
-
content.
|
60
|
+
content.each_line { | line |
|
61
|
+
line.gsub!(%r%(href=\")([^\"]+)(\")%i) { |url|
|
62
|
+
front = $1
|
63
|
+
oldurl = $2
|
64
|
+
back = $3
|
65
|
+
newurl = convert(oldurl)
|
61
66
|
|
62
|
-
|
63
|
-
|
64
|
-
oldurl = $2
|
65
|
-
back = $3
|
66
|
-
newurl = convert(oldurl)
|
67
|
+
front + newurl + back
|
68
|
+
}
|
67
69
|
|
68
|
-
|
69
|
-
}
|
70
|
-
|
71
|
-
push(line)
|
70
|
+
push(line)
|
72
71
|
}
|
73
72
|
|
74
73
|
return self.result
|
75
74
|
else
|
76
75
|
return content
|
77
76
|
end
|
78
|
-
end
|
77
|
+
end
|
79
78
|
|
80
79
|
def convert(u)
|
81
80
|
|
@@ -43,12 +43,15 @@ class StupidRenderer < GenericRenderer
|
|
43
43
|
if methodname then
|
44
44
|
method = self.method(methodname)
|
45
45
|
|
46
|
-
content.
|
47
|
-
|
48
|
-
|
46
|
+
content.each_line { |line|
|
47
|
+
line = method.call(line)
|
48
|
+
push(line)
|
49
49
|
}
|
50
50
|
else
|
51
|
-
@result =
|
51
|
+
@result = []
|
52
|
+
content.each_line { |line|
|
53
|
+
@result << line
|
54
|
+
}
|
52
55
|
end
|
53
56
|
|
54
57
|
|
data/lib/ZenWeb/TocRenderer.rb
CHANGED
@@ -28,28 +28,28 @@ class TocRenderer < GenericRenderer
|
|
28
28
|
def render(content)
|
29
29
|
|
30
30
|
toc = [
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
"** <A NAME=\"0\">Contents:</A>\n",
|
32
|
+
"\n",
|
33
|
+
"+ <A HREF=\"\#0\">Contents</A>\n" ]
|
34
34
|
count = 1
|
35
35
|
|
36
|
-
content.
|
36
|
+
content.each_line { | line |
|
37
37
|
if line =~ /^(\*\*+)\s+(.*)/ then
|
38
|
-
|
39
|
-
|
38
|
+
header = $1
|
39
|
+
text = $2
|
40
40
|
|
41
|
-
|
41
|
+
text = text.sub(/:$/, '')
|
42
42
|
|
43
|
-
|
43
|
+
level = header.length - 2
|
44
44
|
|
45
|
-
|
45
|
+
toc.push(("\t" * level) + "+ <A HREF=\"\##{count}\">#{text}</A>\n")
|
46
46
|
|
47
|
-
|
48
|
-
|
47
|
+
push "#{header} <A NAME=\"#{count}\">#{text}</A>\n"
|
48
|
+
# " [<A HREF=\"\#0\">toc</A>]\n"
|
49
49
|
|
50
|
-
|
50
|
+
count += 1
|
51
51
|
else
|
52
|
-
|
52
|
+
push line
|
53
53
|
end
|
54
54
|
}
|
55
55
|
|
@@ -57,5 +57,4 @@ class TocRenderer < GenericRenderer
|
|
57
57
|
|
58
58
|
return self.result
|
59
59
|
end
|
60
|
-
|
61
60
|
end
|
data/lib/ZenWeb.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/local/bin/ruby -w
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'fileutils'
|
4
4
|
|
5
5
|
$TESTING = FALSE unless defined? $TESTING
|
6
6
|
|
@@ -67,7 +67,7 @@ process.
|
|
67
67
|
|
68
68
|
class ZenWebsite
|
69
69
|
|
70
|
-
VERSION = '2.18.
|
70
|
+
VERSION = '2.18.1'
|
71
71
|
|
72
72
|
attr_reader :datadir, :htmldir, :sitemap
|
73
73
|
attr_reader :documents if $TESTING
|
@@ -120,7 +120,7 @@ class ZenWebsite
|
|
120
120
|
puts "Generating website..." unless $TESTING
|
121
121
|
force = false
|
122
122
|
unless (test(?d, self.htmldir)) then
|
123
|
-
|
123
|
+
FileUtils.mkdir_p self.htmldir
|
124
124
|
else
|
125
125
|
# NOTE: It would be better to know what was changed and only
|
126
126
|
# rerender them and their previous and current immediate
|
@@ -349,7 +349,7 @@ class ZenDocument
|
|
349
349
|
dir = File.dirname(path)
|
350
350
|
|
351
351
|
unless (test(?d, dir)) then
|
352
|
-
|
352
|
+
FileUtils.mkdir_p dir
|
353
353
|
end
|
354
354
|
|
355
355
|
content = self.renderContent
|
data/test/test_zenweb.rb
CHANGED
@@ -6,8 +6,9 @@ require 'ZenWeb'
|
|
6
6
|
require 'ZenWeb/SitemapRenderer'
|
7
7
|
require 'ZenWeb/TocRenderer'
|
8
8
|
require 'ZenWeb/StupidRenderer'
|
9
|
+
require 'ZenWeb/FooterRenderer'
|
9
10
|
|
10
|
-
require '
|
11
|
+
require 'minitest/autorun'
|
11
12
|
|
12
13
|
# TODO: get rid of all calls to renderContent
|
13
14
|
|
@@ -74,7 +75,7 @@ else
|
|
74
75
|
alias :shutupwhile :shutupwhile_18
|
75
76
|
end
|
76
77
|
|
77
|
-
class ZenTestCase <
|
78
|
+
class ZenTestCase < MiniTest::Unit::TestCase # ZenTest SKIP
|
78
79
|
|
79
80
|
def setup
|
80
81
|
$stderr.puts name if $DEBUG
|
@@ -123,12 +124,10 @@ class TestZenWebsite < ZenTestCase
|
|
123
124
|
def util_initialize(sitemap_url, data_dir, html_dir, should_fail=true)
|
124
125
|
if (should_fail) then
|
125
126
|
assert_raises(ArgumentError, "Must throw an ArgumentError") {
|
126
|
-
|
127
|
+
ZenWebsite.new(sitemap_url, data_dir, html_dir)
|
127
128
|
}
|
128
129
|
else
|
129
|
-
|
130
|
-
ZenWebsite.new(sitemap_url, data_dir, html_dir)
|
131
|
-
}
|
130
|
+
ZenWebsite.new(sitemap_url, data_dir, html_dir)
|
132
131
|
end
|
133
132
|
end
|
134
133
|
|
@@ -136,7 +135,7 @@ class TestZenWebsite < ZenTestCase
|
|
136
135
|
assert(test(?f, path),
|
137
136
|
"File '#{path}' must exist")
|
138
137
|
file = IO.readlines(path).join('')
|
139
|
-
|
138
|
+
refute_nil(file.index(expected),
|
140
139
|
"File '#{path}' must have correct content")
|
141
140
|
end
|
142
141
|
|
@@ -167,7 +166,7 @@ class TestZenWebsite < ZenTestCase
|
|
167
166
|
end
|
168
167
|
|
169
168
|
def test_index
|
170
|
-
|
169
|
+
refute_nil(@web.sitemap,
|
171
170
|
"index accessor must return the sitemap")
|
172
171
|
assert_nil(@web["doesn't exist"],
|
173
172
|
"index accessor must return nil for bad urls")
|
@@ -193,12 +192,12 @@ class TestZenWebsite < ZenTestCase
|
|
193
192
|
documents = @web.documents
|
194
193
|
assert_kind_of(Hash, documents)
|
195
194
|
assert(documents.size > 0, "Documents better not be empty")
|
196
|
-
|
195
|
+
refute_nil(documents["/SiteMap.html"], "SiteMap must exist")
|
197
196
|
end
|
198
197
|
|
199
198
|
def test_htmldir
|
200
199
|
htmldir = @web.htmldir
|
201
|
-
|
200
|
+
refute_nil(htmldir, "htmldir must be initialized")
|
202
201
|
assert_instance_of(String, htmldir)
|
203
202
|
end
|
204
203
|
|
@@ -224,15 +223,11 @@ class TestZenDocument < ZenTestCase
|
|
224
223
|
end
|
225
224
|
|
226
225
|
def test_initialize_good_url
|
227
|
-
|
228
|
-
ZenDocument.new("/Something.html", @web)
|
229
|
-
}
|
226
|
+
ZenDocument.new("/Something.html", @web)
|
230
227
|
end
|
231
228
|
|
232
229
|
def test_initialize_missing_ext
|
233
|
-
|
234
|
-
ZenDocument.new("/Something", @web)
|
235
|
-
}
|
230
|
+
ZenDocument.new("/Something", @web)
|
236
231
|
end
|
237
232
|
|
238
233
|
def test_initialize_missing_slash
|
@@ -366,7 +361,7 @@ class TestZenDocument < ZenTestCase
|
|
366
361
|
def test_parent
|
367
362
|
parent = @doc.parent
|
368
363
|
|
369
|
-
|
364
|
+
refute_nil(parent,
|
370
365
|
"Parent must not be nil")
|
371
366
|
|
372
367
|
assert_equal("/index.html", parent.url,
|
@@ -410,7 +405,7 @@ class TestZenDocument < ZenTestCase
|
|
410
405
|
assert(newpages.size == oldpages.size + 1,
|
411
406
|
"Page must grow the list of subpages")
|
412
407
|
found = newpages.find {|p| p == url }
|
413
|
-
|
408
|
+
refute_nil(found, "Page must be contained in new list")
|
414
409
|
end
|
415
410
|
|
416
411
|
def test_addSubpage_same
|
@@ -426,7 +421,7 @@ class TestZenDocument < ZenTestCase
|
|
426
421
|
|
427
422
|
def test_content
|
428
423
|
content = @doc.content
|
429
|
-
|
424
|
+
refute_nil(content, "Content must not be nil")
|
430
425
|
assert_instance_of(String, content)
|
431
426
|
end
|
432
427
|
|
@@ -434,7 +429,7 @@ class TestZenDocument < ZenTestCase
|
|
434
429
|
orig_content = @doc.content
|
435
430
|
@doc.content = "blah"
|
436
431
|
new_content = @doc.content
|
437
|
-
|
432
|
+
refute_nil(new_content, "Content must not be nil")
|
438
433
|
assert_instance_of(String, new_content)
|
439
434
|
assert_equal("blah", new_content)
|
440
435
|
end
|
@@ -455,13 +450,13 @@ class TestZenDocument < ZenTestCase
|
|
455
450
|
|
456
451
|
def test_htmldir # same as TestZenWebsite#test_htmldir since it's a delegate
|
457
452
|
htmldir = @doc.htmldir
|
458
|
-
|
453
|
+
refute_nil(htmldir, "htmldir must be initialized")
|
459
454
|
assert_instance_of(String, htmldir)
|
460
455
|
end
|
461
456
|
|
462
457
|
def test_index
|
463
458
|
result = @doc["renderers"]
|
464
|
-
|
459
|
+
refute_nil(result, "renderers must exist for document")
|
465
460
|
assert_instance_of(Array, result)
|
466
461
|
end
|
467
462
|
|
@@ -469,20 +464,20 @@ class TestZenDocument < ZenTestCase
|
|
469
464
|
newrenderers = ["Something"]
|
470
465
|
@doc["renderers"] = newrenderers
|
471
466
|
metadata = @doc.metadata
|
472
|
-
|
467
|
+
refute_nil(metadata, "metadata must not be nil")
|
473
468
|
assert_instance_of(Metadata, metadata)
|
474
469
|
result = metadata["renderers"]
|
475
|
-
|
470
|
+
refute_nil(result, "renderers must exist in sitemap")
|
476
471
|
assert_instance_of(Array, result)
|
477
|
-
|
472
|
+
refute_nil(result.find {|x| x == "Something"})
|
478
473
|
end
|
479
474
|
|
480
475
|
def test_metadata
|
481
476
|
metadata = @doc.metadata
|
482
|
-
|
477
|
+
refute_nil(metadata, "metadata must not be nil")
|
483
478
|
assert_instance_of(Metadata, metadata)
|
484
479
|
result = metadata["renderers"]
|
485
|
-
|
480
|
+
refute_nil(result, "renderers must exist in sitemap")
|
486
481
|
assert_instance_of(Array, result)
|
487
482
|
end
|
488
483
|
|
@@ -496,21 +491,21 @@ class TestZenDocument < ZenTestCase
|
|
496
491
|
# it.
|
497
492
|
|
498
493
|
assert_equal('', @doc.content)
|
499
|
-
|
494
|
+
refute_nil(@doc.metadata, 'metadata should always be non-nil')
|
500
495
|
assert(@doc.content.length > 0, 'file should be parsed now')
|
501
496
|
assert_equal(69, @doc['key4'])
|
502
497
|
end
|
503
498
|
|
504
499
|
def test_url
|
505
500
|
url = @doc.url
|
506
|
-
|
501
|
+
refute_nil(url, "Each document must know it's url")
|
507
502
|
assert_kind_of(String, url)
|
508
503
|
assert_equal(@url, url)
|
509
504
|
end
|
510
505
|
|
511
506
|
def test_website
|
512
507
|
website = @doc.website
|
513
|
-
|
508
|
+
refute_nil(website, "Each document must know of it's website")
|
514
509
|
assert_kind_of(ZenWebsite, website)
|
515
510
|
end
|
516
511
|
end
|
@@ -562,7 +557,7 @@ class TestZenSitemap < TestZenDocument
|
|
562
557
|
# def test_renderContent
|
563
558
|
# expected = "<H2>There are 6 pages in this website.</H2>\n<HR CLASS=\"thick\">\n\n<UL>\n <LI><A HREF=\"/index.html\">My Website: Subtitle</A></LI>\n <LI><A HREF=\"/SiteMap.html\">Sitemap: There are 6 pages in this website.</A></LI>\n <LI><A HREF=\"/Something.html\">Something</A></LI>\n <LI><A HREF=\"/~ryand/index.html\">Ryan's Homepage: Version 2.0</A></LI>\n <UL>\n <LI><A HREF=\"/~ryand/blah.html\">blah</A></LI>\n <LI><A HREF=\"/~ryand/stuff/index.html\">my stuff</A></LI>\n </UL>\n</UL>"
|
564
559
|
#
|
565
|
-
#
|
560
|
+
# refute_nil(@content.index(expected) > 0,
|
566
561
|
# "Must render some form of HTML")
|
567
562
|
# end
|
568
563
|
end
|
@@ -792,7 +787,7 @@ class TestFileAttachmentRenderer < ZenRendererTest
|
|
792
787
|
dir = File.dirname(path)
|
793
788
|
|
794
789
|
unless (test(?d, dir)) then
|
795
|
-
|
790
|
+
FileUtils.mkdir_p dir
|
796
791
|
end
|
797
792
|
end
|
798
793
|
|
@@ -870,7 +865,7 @@ class TestHtmlTemplateRenderer < ZenRendererTest
|
|
870
865
|
|
871
866
|
def test_render_html_and_head
|
872
867
|
@content = @doc.renderContent
|
873
|
-
|
868
|
+
refute_nil(@content.index("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">
|
874
869
|
<HTML>
|
875
870
|
<HEAD>
|
876
871
|
<TITLE>Ryan\'s Homepage: Version 2.0</TITLE>
|
@@ -897,7 +892,7 @@ class TestHtmlTemplateRenderer < ZenRendererTest
|
|
897
892
|
@content = @doc.renderContent
|
898
893
|
expected = "\n<HR CLASS=\"thick\">\n\n<P class=\"navbar\">\n<A HREF=\"../SiteMap.html\">Sitemap</A> || <A HREF=\"../index.html\">My Website</A>\n / Ryan's Homepage</P>\n\n<P>This is my footer, jive turkey</P></BODY>\n</HTML>\n"
|
899
894
|
|
900
|
-
|
895
|
+
refute_nil(@content.index(expected),
|
901
896
|
"Must render the HTML footer")
|
902
897
|
end
|
903
898
|
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|