webby 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +20 -0
- data/{README.txt → README.rdoc} +9 -9
- data/Rakefile +19 -6
- data/examples/blog/content/css/blueprint/ie.css +26 -0
- data/examples/blog/content/css/blueprint/plugins/buttons/icons/cross.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/buttons/icons/key.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/buttons/icons/tick.png +0 -0
- data/examples/{website/content/css/blueprint/plugins/buttons/Readme → blog/content/css/blueprint/plugins/buttons/readme.txt} +3 -2
- data/examples/{website/content/css/blueprint/plugins/buttons/buttons.css → blog/content/css/blueprint/plugins/buttons/screen.css} +1 -1
- data/examples/blog/content/css/blueprint/plugins/fancy-type/readme.txt +14 -0
- data/examples/{website/content/css/blueprint/plugins/fancy-type/fancy-type.css → blog/content/css/blueprint/plugins/fancy-type/screen.css} +71 -74
- data/examples/blog/content/css/blueprint/plugins/link-icons/icons/doc.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/link-icons/icons/email.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/link-icons/icons/external.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/link-icons/icons/feed.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/link-icons/icons/im.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/link-icons/icons/pdf.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/link-icons/icons/visited.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/link-icons/icons/xls.png +0 -0
- data/examples/blog/content/css/blueprint/plugins/link-icons/readme.txt +18 -0
- data/examples/blog/content/css/blueprint/plugins/link-icons/screen.css +40 -0
- data/examples/blog/content/css/blueprint/plugins/rtl/readme.txt +10 -0
- data/examples/blog/content/css/blueprint/plugins/rtl/screen.css +109 -0
- data/examples/blog/content/css/blueprint/print.css +30 -0
- data/examples/blog/content/css/blueprint/screen.css +251 -0
- data/examples/blog/content/css/blueprint/src/forms.css +49 -0
- data/examples/blog/content/css/blueprint/src/grid.css +212 -0
- data/examples/{website/content/css/blueprint/lib → blog/content/css/blueprint/src}/grid.png +0 -0
- data/examples/blog/content/css/blueprint/src/ie.css +59 -0
- data/examples/blog/content/css/blueprint/src/print.css +85 -0
- data/examples/{website/content/css/blueprint/lib → blog/content/css/blueprint/src}/reset.css +14 -15
- data/examples/blog/content/css/blueprint/src/typography.css +105 -0
- data/examples/blog/content/css/coderay.css +111 -0
- data/examples/blog/content/css/site.css +67 -0
- data/examples/blog/layouts/default.txt +61 -0
- data/examples/blog/tasks/blog.rake +5 -1
- data/examples/presentation/Sitefile +2 -2
- data/examples/tumblog/tasks/tumblog.rake +5 -1
- data/examples/webby/Sitefile +2 -2
- data/examples/webby/content/communicate/index.txt +2 -2
- data/examples/webby/content/index.txt +1 -1
- data/examples/webby/content/release-notes/rel-0-9-3/index.txt +0 -2
- data/examples/webby/content/release-notes/rel-0-9-4/index.txt +33 -0
- data/examples/webby/content/sitemap.txt +2 -2
- data/examples/webby/content/user-manual/index.txt +3 -3
- data/examples/website/content/css/blueprint/ie.css +26 -0
- data/examples/website/content/css/blueprint/plugins/buttons/readme.txt +32 -0
- data/examples/website/content/css/blueprint/plugins/buttons/screen.css +97 -0
- data/examples/website/content/css/blueprint/plugins/fancy-type/readme.txt +14 -0
- data/examples/website/content/css/blueprint/plugins/fancy-type/screen.css +71 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/icons/doc.png +0 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/icons/email.png +0 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/icons/external.png +0 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/icons/feed.png +0 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/icons/im.png +0 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/icons/pdf.png +0 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/icons/visited.png +0 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/icons/xls.png +0 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/readme.txt +18 -0
- data/examples/website/content/css/blueprint/plugins/link-icons/screen.css +40 -0
- data/examples/website/content/css/blueprint/plugins/rtl/readme.txt +10 -0
- data/examples/website/content/css/blueprint/plugins/rtl/screen.css +109 -0
- data/examples/website/content/css/blueprint/print.css +30 -68
- data/examples/website/content/css/blueprint/screen.css +251 -22
- data/examples/website/content/css/blueprint/src/forms.css +49 -0
- data/examples/website/content/css/blueprint/src/grid.css +212 -0
- data/examples/website/content/css/blueprint/src/grid.png +0 -0
- data/examples/website/content/css/blueprint/src/ie.css +59 -0
- data/examples/website/content/css/blueprint/src/print.css +85 -0
- data/examples/website/content/css/blueprint/src/reset.css +38 -0
- data/examples/website/content/css/blueprint/src/typography.css +105 -0
- data/examples/website/layouts/default.txt +5 -2
- data/lib/webby.rb +36 -102
- data/lib/webby/apps/generator.rb +2 -2
- data/lib/webby/apps/main.rb +36 -62
- data/lib/webby/auto_builder.rb +3 -3
- data/lib/webby/builder.rb +5 -13
- data/lib/webby/config.rb +172 -0
- data/lib/webby/filters.rb +2 -0
- data/lib/webby/filters/haml.rb +13 -0
- data/lib/webby/filters/maruku.rb +16 -0
- data/lib/webby/filters/outline.rb +1 -1
- data/lib/webby/filters/sass.rb +14 -0
- data/lib/webby/filters/slides.rb +2 -2
- data/lib/webby/filters/tidy.rb +5 -0
- data/lib/webby/helpers/coderay_helper.rb +27 -3
- data/lib/webby/helpers/graphviz_helper.rb +20 -3
- data/lib/webby/helpers/tex_img_helper.rb +25 -5
- data/lib/webby/helpers/ultraviolet_helper.rb +19 -5
- data/lib/webby/link_validator.rb +59 -51
- data/lib/webby/renderer.rb +9 -6
- data/lib/webby/resources.rb +2 -1
- data/lib/webby/resources/page.rb +4 -1
- data/lib/webby/tasks/create.rake +1 -1
- data/lib/webby/tasks/validate.rake +1 -1
- data/spec/data/html/anchor.html +11 -0
- data/spec/data/html/external.html +10 -0
- data/spec/data/html/invalid-relative.html +10 -0
- data/spec/data/html/relative-anchor.html +10 -0
- data/spec/data/html/relative-invalid-anchor.html +10 -0
- data/spec/data/html/relative.html +10 -0
- data/spec/data/site/tasks/tumblog.rake +5 -1
- data/spec/spec_helper.rb +8 -1
- data/spec/webby/apps/generator_spec.rb +36 -3
- data/spec/webby/apps/main_spec.rb +2 -1
- data/spec/webby/filters/basepath_spec.rb +2 -2
- data/spec/webby/filters/maruku_spec.rb +31 -0
- data/spec/webby/filters/textile_spec.rb +15 -4
- data/spec/webby/helpers/capture_helper_spec.rb +1 -1
- data/spec/webby/link_validator_spec.rb +154 -0
- data/spec/webby/resources/db_spec.rb +24 -24
- data/spec/webby/resources/layout_spec.rb +1 -1
- data/spec/webby/resources/page_spec.rb +8 -2
- data/spec/webby/resources/resource_spec.rb +1 -1
- data/spec/webby/resources_spec.rb +1 -1
- data/tasks/ann.rake +1 -2
- data/tasks/bones.rake +0 -1
- data/tasks/gem.rake +48 -34
- data/tasks/git.rake +0 -1
- data/tasks/mswin32.rake +38 -0
- data/tasks/notes.rake +0 -1
- data/tasks/post_load.rake +4 -9
- data/tasks/rdoc.rake +4 -4
- data/tasks/setup.rb +50 -26
- data/tasks/spec.rake +1 -2
- data/tasks/svn.rake +47 -0
- data/tasks/test.rake +40 -0
- data/tasks/website.rake +0 -1
- data/tasks/zentest.rake +36 -0
- metadata +104 -33
- data/Manifest.txt +0 -228
- data/examples/website/content/css/blueprint/License.txt +0 -21
- data/examples/website/content/css/blueprint/Readme.txt +0 -100
- data/examples/website/content/css/blueprint/compressed/print.css +0 -76
- data/examples/website/content/css/blueprint/compressed/screen.css +0 -696
- data/examples/website/content/css/blueprint/lib/forms.css +0 -45
- data/examples/website/content/css/blueprint/lib/grid.css +0 -193
- data/examples/website/content/css/blueprint/lib/ie.css +0 -30
- data/examples/website/content/css/blueprint/lib/typography.css +0 -116
- data/examples/website/content/css/blueprint/plugins/css-classes/Readme +0 -14
- data/examples/website/content/css/blueprint/plugins/css-classes/css-classes.css +0 -24
- data/examples/website/content/css/blueprint/plugins/fancy-type/Readme +0 -22
- data/examples/website/content/css/blueprint/plugins/fancy-type/fancy-type-compressed.css +0 -5
- data/lib/webby/stelan/spawner.rb +0 -339
- data/tasks/manifest.rake +0 -48
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
require ::File.expand_path(
|
3
|
+
::File.join(::File.dirname(__FILE__), %w[.. .. spec_helper]))
|
4
|
+
|
5
|
+
# ---------------------------------------------------------------------------
|
6
|
+
describe 'Webby::Filters::Maruku' do
|
7
|
+
|
8
|
+
it 'should regsiter the maruku filter handler' do
|
9
|
+
Webby::Filters._handlers['maruku'].should_not be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
if try_require('maruku')
|
13
|
+
|
14
|
+
it 'processes maruku markup into HTML' do
|
15
|
+
input = "## Heading Two\n\nAnd some text about this heading."
|
16
|
+
output = Webby::Filters._handlers['maruku'].call(input)
|
17
|
+
|
18
|
+
output.should == %Q{<h2 id='heading_two'>Heading Two</h2>\n\n<p>And some text about this heading.</p>}
|
19
|
+
end
|
20
|
+
|
21
|
+
else
|
22
|
+
|
23
|
+
it 'raises an error when maruku is used but not installed' do
|
24
|
+
input = "## Heading Two\n\nAnd some text about this heading."
|
25
|
+
lambda {Webby::Filters._handlers['maruku'].call(input)}.should raise_error(Webby::Error, "'maruku' must be installed to use the maruku filter")
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# EOF
|
@@ -9,11 +9,22 @@ describe 'Webby::Filters::Textile' do
|
|
9
9
|
Webby::Filters._handlers['textile'].should_not be_nil
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
if try_require('redcloth')
|
13
|
+
|
14
|
+
it 'processes textile markup into HTML' do
|
15
|
+
input = "p(foo). this is a paragraph of text"
|
16
|
+
output = Webby::Filters._handlers['textile'].call(input)
|
17
|
+
|
18
|
+
output.should == %q{<p class="foo">this is a paragraph of text</p>}
|
19
|
+
end
|
20
|
+
|
21
|
+
else
|
22
|
+
|
23
|
+
it 'raises an error when RedCloth is used but not installed' do
|
24
|
+
input = "p(foo). this is a paragraph of text"
|
25
|
+
lambda {Webby::Filters._handlers['textile'].call(input)}.should raise_error(Webby::Error, "'RedCloth' must be installed to use the textile filter")
|
26
|
+
end
|
15
27
|
|
16
|
-
output.should == %q{<p class="foo">this is a paragraph of text</p>}
|
17
28
|
end
|
18
29
|
end
|
19
30
|
|
@@ -30,7 +30,7 @@ describe Webby::Helpers::CaptureHelper do
|
|
30
30
|
::FileUtils.rm_f(CFN)
|
31
31
|
end
|
32
32
|
|
33
|
-
it 'should not "leak" any content to containing page' do
|
33
|
+
it 'should not "leak" any content to the containing page' do
|
34
34
|
@page_content.should_not be_nil
|
35
35
|
@page_content.should eql("Hello world!\n")
|
36
36
|
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
require File.expand_path(
|
2
|
+
File.join(File.dirname(__FILE__), %w[.. spec_helper]))
|
3
|
+
|
4
|
+
# ---------------------------------------------------------------------------
|
5
|
+
describe Webby::LinkValidator do
|
6
|
+
before do
|
7
|
+
@validator = Webby::LinkValidator.new
|
8
|
+
@@old = Webby.site.output_dir
|
9
|
+
Webby.site.output_dir = Webby.datapath('html')
|
10
|
+
end
|
11
|
+
|
12
|
+
after do
|
13
|
+
Webby.site.output_dir = @@old
|
14
|
+
end
|
15
|
+
|
16
|
+
describe ".validate" do
|
17
|
+
it "passes options to a new validator" do
|
18
|
+
new_validator = stub('validator', :validate => true)
|
19
|
+
Webby::LinkValidator.should_receive(:new).with(:options).and_return(new_validator)
|
20
|
+
Webby::LinkValidator.validate(:options)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "checks each file" do
|
24
|
+
#TODO: test fake site
|
25
|
+
files = ["a file", "another file"]
|
26
|
+
Dir.stub!(:glob).and_return(files)
|
27
|
+
|
28
|
+
validator = Webby::LinkValidator.new
|
29
|
+
files.each do |file|
|
30
|
+
validator.should_receive(:check_file).with(file)
|
31
|
+
end
|
32
|
+
validator.validate
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "checking a file" do
|
37
|
+
describe "with an anchor" do
|
38
|
+
before do
|
39
|
+
@filename = Webby.datapath('html', 'anchor.html')
|
40
|
+
end
|
41
|
+
|
42
|
+
it "validates the anchor" do
|
43
|
+
@validator.should_receive(:validate_anchor)
|
44
|
+
@validator.check_file(@filename)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "does not add the file to the valid uri list" do
|
48
|
+
lambda { @validator.check_file(@filename) }.should_not change(@validator.instance_variable_get('@valid_uris'), :size)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "***CURRENTLY*** returns nil" do
|
52
|
+
@validator.check_file(@filename).should be_nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "with a valid relative href" do
|
57
|
+
before do
|
58
|
+
@filename = Webby.datapath('html', 'relative.html')
|
59
|
+
end
|
60
|
+
|
61
|
+
it "adds the file to the valid uri list" do
|
62
|
+
lambda { @validator.check_file(@filename) }.should change(@validator.instance_variable_get('@valid_uris'), :size).by(1)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "***CURRENTLY*** returns nil" do
|
66
|
+
@validator.check_file(@filename).should be_nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "with an invalid relative href" do
|
71
|
+
before do
|
72
|
+
@filename = Webby.datapath('html', 'invalid-relative.html')
|
73
|
+
end
|
74
|
+
|
75
|
+
it "does not add the file to the invalid uri list" do
|
76
|
+
lambda { @validator.check_file(@filename) }.should_not change(@validator.instance_variable_get('@valid_uris'), :size)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "***CURRENTLY*** returns nil" do
|
80
|
+
@validator.check_file(@filename).should be_nil
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe "with a valid relative href that contains an anchor" do
|
85
|
+
before do
|
86
|
+
@filename = Webby.datapath('html', 'relative-anchor.html')
|
87
|
+
end
|
88
|
+
|
89
|
+
it "adds the file to the valid uri list" do
|
90
|
+
lambda { @validator.check_file(@filename) }.should change(@validator.instance_variable_get('@valid_uris'), :size).by(1)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "***CURRENTLY*** returns nil" do
|
94
|
+
@validator.check_file(@filename).should be_nil
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe "with a valid relative href that contains an invalid anchor" do
|
99
|
+
before do
|
100
|
+
@filename = Webby.datapath('html', 'relative-invalid-anchor.html')
|
101
|
+
end
|
102
|
+
|
103
|
+
it "does not the file to the valid uri list" do
|
104
|
+
lambda { @validator.check_file(@filename) }.should_not change(@validator.instance_variable_get('@valid_uris'), :size)
|
105
|
+
end
|
106
|
+
|
107
|
+
it "***CURRENTLY*** returns nil" do
|
108
|
+
@validator.check_file(@filename).should be_nil
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
if $test_externals
|
113
|
+
describe "with a valid external href" do
|
114
|
+
before do
|
115
|
+
FakeWeb.register_uri('http://www.google.com/', :string => 'google')
|
116
|
+
@filename = Webby.datapath('html', 'external.html')
|
117
|
+
@validator.validate_externals = true
|
118
|
+
end
|
119
|
+
|
120
|
+
it "adds the file to the valid uri list" do
|
121
|
+
lambda { @validator.check_file(@filename) }.should change(@validator.instance_variable_get('@valid_uris'), :size).by(1)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "does not add the file to the invalid uri list" do
|
125
|
+
lambda { @validator.check_file(@filename) }.should_not change(@validator.instance_variable_get('@invalid_uris'), :size)
|
126
|
+
end
|
127
|
+
|
128
|
+
it "***CURRENTLY*** returns nil" do
|
129
|
+
@validator.check_file(@filename).should be_nil
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe "with an invalid external href" do
|
134
|
+
before do
|
135
|
+
FakeWeb.register_uri('http://www.google.com/', :string => 'google', :status => [ 404, "Not Found" ])
|
136
|
+
@filename = Webby.datapath('html', 'external.html')
|
137
|
+
@validator.validate_externals = true
|
138
|
+
end
|
139
|
+
|
140
|
+
it "does not add the file to the valid uri list" do
|
141
|
+
lambda { @validator.check_file(@filename) }.should_not change(@validator.instance_variable_get('@valid_uris'), :size)
|
142
|
+
end
|
143
|
+
|
144
|
+
it "adds the file to the invalid uri list" do
|
145
|
+
lambda { @validator.check_file(@filename) }.should change(@validator.instance_variable_get('@invalid_uris'), :size).by(1)
|
146
|
+
end
|
147
|
+
|
148
|
+
it "***CURRENTLY*** returns nil" do
|
149
|
+
@validator.check_file(@filename).should be_nil
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
@@ -7,7 +7,7 @@ describe Webby::Resources::DB do
|
|
7
7
|
|
8
8
|
before :each do
|
9
9
|
layout = Webby::Resources::Layout.
|
10
|
-
new(Webby.datapath
|
10
|
+
new(Webby.datapath(%w[site layouts tumblog default.txt]))
|
11
11
|
Webby::Resources.stub!(:find_layout).and_return(layout)
|
12
12
|
|
13
13
|
@db = Webby::Resources::DB.new
|
@@ -53,13 +53,13 @@ describe Webby::Resources::DB do
|
|
53
53
|
ary = []
|
54
54
|
@db.each {|page| ary << page.url}
|
55
55
|
ary.should == %w[
|
56
|
-
/tumblog
|
56
|
+
/tumblog/
|
57
57
|
/tumblog/rss.xml
|
58
|
-
/tumblog/200806/the-noble-chicken
|
59
|
-
/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke
|
60
|
-
/tumblog/200807/mad-city-chickens
|
61
|
-
/tumblog/200807/the-wisdom-of-the-dutch
|
62
|
-
/tumblog/200807/up-a-tree
|
58
|
+
/tumblog/200806/the-noble-chicken/
|
59
|
+
/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke/
|
60
|
+
/tumblog/200807/mad-city-chickens/
|
61
|
+
/tumblog/200807/the-wisdom-of-the-dutch/
|
62
|
+
/tumblog/200807/up-a-tree/
|
63
63
|
]
|
64
64
|
end
|
65
65
|
|
@@ -70,11 +70,11 @@ describe Webby::Resources::DB do
|
|
70
70
|
|
71
71
|
page = Webby::Resources::Page.new('content/tumblog/rss.txt')
|
72
72
|
parent = @db.parent_of(page)
|
73
|
-
parent.url.should == '/tumblog'
|
73
|
+
parent.url.should == '/tumblog/'
|
74
74
|
|
75
75
|
page = Webby::Resources::Page.new('content/tumblog/200807/up-a-tree/index.txt')
|
76
76
|
parent = @db.parent_of(page)
|
77
|
-
parent.url.should == '/tumblog'
|
77
|
+
parent.url.should == '/tumblog/'
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'returns the siblings of a resource' do
|
@@ -97,11 +97,11 @@ describe Webby::Resources::DB do
|
|
97
97
|
|
98
98
|
children.length.should == 5
|
99
99
|
children.map {|page| page.url}.sort.should == %w[
|
100
|
-
/tumblog/200806/the-noble-chicken
|
101
|
-
/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke
|
102
|
-
/tumblog/200807/mad-city-chickens
|
103
|
-
/tumblog/200807/the-wisdom-of-the-dutch
|
104
|
-
/tumblog/200807/up-a-tree
|
100
|
+
/tumblog/200806/the-noble-chicken/
|
101
|
+
/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke/
|
102
|
+
/tumblog/200807/mad-city-chickens/
|
103
|
+
/tumblog/200807/the-wisdom-of-the-dutch/
|
104
|
+
/tumblog/200807/up-a-tree/
|
105
105
|
]
|
106
106
|
end
|
107
107
|
|
@@ -111,11 +111,11 @@ describe Webby::Resources::DB do
|
|
111
111
|
|
112
112
|
children.length.should == 5
|
113
113
|
children.map {|page| page.url}.should == %w[
|
114
|
-
/tumblog/200806/the-noble-chicken
|
115
|
-
/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke
|
116
|
-
/tumblog/200807/mad-city-chickens
|
117
|
-
/tumblog/200807/the-wisdom-of-the-dutch
|
118
|
-
/tumblog/200807/up-a-tree
|
114
|
+
/tumblog/200806/the-noble-chicken/
|
115
|
+
/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke/
|
116
|
+
/tumblog/200807/mad-city-chickens/
|
117
|
+
/tumblog/200807/the-wisdom-of-the-dutch/
|
118
|
+
/tumblog/200807/up-a-tree/
|
119
119
|
]
|
120
120
|
end
|
121
121
|
|
@@ -125,11 +125,11 @@ describe Webby::Resources::DB do
|
|
125
125
|
|
126
126
|
children.length.should == 5
|
127
127
|
children.map {|page| page.url}.should == %w[
|
128
|
-
/tumblog/200806/the-noble-chicken
|
129
|
-
/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke
|
130
|
-
/tumblog/200807/mad-city-chickens
|
131
|
-
/tumblog/200807/the-wisdom-of-the-dutch
|
132
|
-
/tumblog/200807/up-a-tree
|
128
|
+
/tumblog/200806/the-noble-chicken/
|
129
|
+
/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke/
|
130
|
+
/tumblog/200807/mad-city-chickens/
|
131
|
+
/tumblog/200807/the-wisdom-of-the-dutch/
|
132
|
+
/tumblog/200807/up-a-tree/
|
133
133
|
].reverse
|
134
134
|
end
|
135
135
|
end
|
@@ -6,7 +6,7 @@ require File.expand_path(
|
|
6
6
|
describe Webby::Resources::Layout do
|
7
7
|
before :each do
|
8
8
|
layout = Webby::Resources::Layout.
|
9
|
-
new(Webby.datapath
|
9
|
+
new(Webby.datapath(%w[site layouts tumblog default.txt]))
|
10
10
|
Webby::Resources.stub!(:find_layout).and_return(layout)
|
11
11
|
|
12
12
|
@default = File.join %w[layouts tumblog default.txt]
|
@@ -6,7 +6,7 @@ require File.expand_path(
|
|
6
6
|
describe Webby::Resources::Page do
|
7
7
|
before :each do
|
8
8
|
layout = Webby::Resources::Layout.
|
9
|
-
new(Webby.datapath
|
9
|
+
new(Webby.datapath(%w[site layouts default.txt]))
|
10
10
|
Webby::Resources.stub!(:find_layout).and_return(layout)
|
11
11
|
|
12
12
|
@filename = File.join %w[content index.txt]
|
@@ -55,7 +55,13 @@ describe Webby::Resources::Page do
|
|
55
55
|
it "uses only the directory name for 'index' files" do
|
56
56
|
filename = File.join %w[content tumblog index.txt]
|
57
57
|
resource = Webby::Resources::Page.new(filename)
|
58
|
-
resource.url.should == '/tumblog'
|
58
|
+
resource.url.should == '/tumblog/'
|
59
|
+
end
|
60
|
+
|
61
|
+
it "avoids adding a double trailing slash on the end" do
|
62
|
+
filename = File.join %w[content index.txt]
|
63
|
+
resource = Webby::Resources::Page.new(filename)
|
64
|
+
resource.url.should == '/'
|
59
65
|
end
|
60
66
|
end
|
61
67
|
|
@@ -7,7 +7,7 @@ describe Webby::Resources::Resource do
|
|
7
7
|
|
8
8
|
before :each do
|
9
9
|
layout = Webby::Resources::Layout.
|
10
|
-
new(Webby.datapath
|
10
|
+
new(Webby.datapath(%w[site layouts default.txt]))
|
11
11
|
Webby::Resources.stub!(:find_layout).and_return(layout)
|
12
12
|
|
13
13
|
@filename = File.join %w[content index.txt]
|
@@ -47,7 +47,7 @@ describe Webby::Resources do
|
|
47
47
|
describe "#new" do
|
48
48
|
before :each do
|
49
49
|
layout = Webby::Resources::Layout.
|
50
|
-
new(Webby.datapath
|
50
|
+
new(Webby.datapath(%w[site layouts default.txt]))
|
51
51
|
Webby::Resources.stub!(:find_layout).and_return(layout)
|
52
52
|
end
|
53
53
|
|
data/tasks/ann.rake
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# $Id$
|
2
1
|
|
3
2
|
begin
|
4
3
|
require 'bones/smtp_tls'
|
@@ -43,7 +42,7 @@ namespace :ann do
|
|
43
42
|
desc "Send an email announcement"
|
44
43
|
task :email => ['ann:prereqs', PROJ.ann.file] do
|
45
44
|
ann = PROJ.ann
|
46
|
-
from = ann.email[:from] || PROJ.email
|
45
|
+
from = ann.email[:from] || Array(PROJ.authors).first || PROJ.email
|
47
46
|
to = Array(ann.email[:to])
|
48
47
|
|
49
48
|
### build a mail header for RFC 822
|
data/tasks/bones.rake
CHANGED
data/tasks/gem.rake
CHANGED
@@ -4,13 +4,17 @@ require 'rake/packagetask'
|
|
4
4
|
require 'rubygems/user_interaction'
|
5
5
|
require 'rubygems/builder'
|
6
6
|
|
7
|
-
|
7
|
+
module Bones
|
8
|
+
class GemPackageTask < Rake::PackageTask
|
8
9
|
# Ruby GEM spec containing the metadata for this package. The
|
9
10
|
# name, version and package_files are automatically determined
|
10
11
|
# from the GEM spec and don't need to be explicitly provided.
|
11
12
|
#
|
12
13
|
attr_accessor :gem_spec
|
13
14
|
|
15
|
+
# Tasks from the Bones gem directory
|
16
|
+
attr_reader :bones_files
|
17
|
+
|
14
18
|
# Create a GEM Package task library. Automatically define the gem
|
15
19
|
# if a block is given. If no block is supplied, then +define+
|
16
20
|
# needs to be called to define the task.
|
@@ -28,6 +32,12 @@ class Bones::GemPackageTask < Rake::PackageTask
|
|
28
32
|
super(gem.name, gem.version)
|
29
33
|
@gem_spec = gem
|
30
34
|
@package_files += gem_spec.files if gem_spec.files
|
35
|
+
@bones_files = []
|
36
|
+
|
37
|
+
local_setup = File.join(Dir.pwd, %w[tasks setup.rb])
|
38
|
+
if !test(?e, local_setup)
|
39
|
+
Dir.glob(::Bones.path(%w[lib bones tasks *])).each {|fn| bones_files << fn}
|
40
|
+
end
|
31
41
|
end
|
32
42
|
|
33
43
|
# Create the Rake tasks and actions specified by this
|
@@ -38,7 +48,7 @@ class Bones::GemPackageTask < Rake::PackageTask
|
|
38
48
|
super
|
39
49
|
task :prereqs
|
40
50
|
task :package => ['gem:prereqs', "#{package_dir_path}/#{gem_file}"]
|
41
|
-
file "#{package_dir_path}/#{gem_file}" => [package_dir_path] + package_files do
|
51
|
+
file "#{package_dir_path}/#{gem_file}" => [package_dir_path] + package_files + bones_files do
|
42
52
|
when_writing("Creating GEM") {
|
43
53
|
chdir(package_dir_path) do
|
44
54
|
Gem::Builder.new(gem_spec).build
|
@@ -48,6 +58,26 @@ class Bones::GemPackageTask < Rake::PackageTask
|
|
48
58
|
end
|
49
59
|
}
|
50
60
|
end
|
61
|
+
|
62
|
+
file package_dir_path => bones_files do
|
63
|
+
mkdir_p package_dir rescue nil
|
64
|
+
|
65
|
+
gem_spec.files = (gem_spec.files +
|
66
|
+
bones_files.map {|fn| File.join('tasks', File.basename(fn))}).sort
|
67
|
+
|
68
|
+
bones_files.each do |fn|
|
69
|
+
base_fn = File.join('tasks', File.basename(fn))
|
70
|
+
f = File.join(package_dir_path, base_fn)
|
71
|
+
fdir = File.dirname(f)
|
72
|
+
mkdir_p(fdir) if !File.exist?(fdir)
|
73
|
+
if File.directory?(fn)
|
74
|
+
mkdir_p(f)
|
75
|
+
else
|
76
|
+
raise "file name conflict for '#{base_fn}' (conflicts with '#{fn}')" if test(?e, f)
|
77
|
+
safe_ln(fn, f)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
51
81
|
end
|
52
82
|
|
53
83
|
def gem_file
|
@@ -57,7 +87,8 @@ class Bones::GemPackageTask < Rake::PackageTask
|
|
57
87
|
"#{package_name}-#{@gem_spec.platform}.gem"
|
58
88
|
end
|
59
89
|
end
|
60
|
-
end # class
|
90
|
+
end # class GemPackageTask
|
91
|
+
end # module Bones
|
61
92
|
|
62
93
|
namespace :gem do
|
63
94
|
|
@@ -76,6 +107,10 @@ namespace :gem do
|
|
76
107
|
s.add_dependency(*dep)
|
77
108
|
end
|
78
109
|
|
110
|
+
PROJ.gem.development_dependencies.each do |dep|
|
111
|
+
s.add_development_dependency(*dep)
|
112
|
+
end
|
113
|
+
|
79
114
|
s.files = PROJ.gem.files
|
80
115
|
s.executables = PROJ.gem.executables.map {|fn| File.basename(fn)}
|
81
116
|
s.extensions = PROJ.gem.files.grep %r/extconf\.rb$/
|
@@ -124,6 +159,13 @@ namespace :gem do
|
|
124
159
|
puts PROJ.gem._spec.to_ruby
|
125
160
|
end
|
126
161
|
|
162
|
+
desc 'Write the gemspec '
|
163
|
+
task :spec => 'gem:prereqs' do
|
164
|
+
File.open("#{PROJ.name}.gemspec", 'w') do |f|
|
165
|
+
f.write PROJ.gem._spec.to_ruby
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
127
169
|
desc 'Install the gem'
|
128
170
|
task :install => [:clobber, 'gem:package'] do
|
129
171
|
sh "#{SUDO} #{GEM} install --local pkg/#{PROJ.gem._spec.full_name}"
|
@@ -147,41 +189,13 @@ namespace :gem do
|
|
147
189
|
task :cleanup do
|
148
190
|
sh "#{SUDO} #{GEM} cleanup #{PROJ.gem._spec.name}"
|
149
191
|
end
|
150
|
-
|
151
|
-
namespace :mswin32 do
|
152
|
-
win32_spec = PROJ.gem._spec.dup
|
153
|
-
win32_spec.platform = 'x86-mswin32'
|
154
|
-
|
155
|
-
pkg = Bones::GemPackageTask.new(win32_spec)
|
156
|
-
class << pkg
|
157
|
-
def package_dir_path() "#{package_dir}/#{package_name}-x86-mswin32"; end
|
158
|
-
end
|
159
|
-
pkg.define
|
160
|
-
|
161
|
-
file "#{pkg.package_dir_path}/#{pkg.gem_file}" => :unix2dos
|
162
|
-
|
163
|
-
task :unix2dos do
|
164
|
-
reject = %w[.gif .jpg .jpeg]
|
165
|
-
Find.find(File.join(pkg.package_dir_path, 'examples')) do |fn|
|
166
|
-
next unless test(?f, fn)
|
167
|
-
next if reject.include?(File.extname(fn))
|
168
|
-
sh %{unix2dos #{fn}}
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end # namespace :mswin32
|
172
192
|
end # namespace :gem
|
173
193
|
|
174
194
|
|
175
195
|
desc 'Alias to gem:package'
|
176
|
-
task :gem =>
|
177
|
-
|
178
|
-
task :clobber => ['gem:clobber_package', 'gem:mswin32:clobber_package']
|
196
|
+
task :gem => 'gem:package'
|
179
197
|
|
180
|
-
|
181
|
-
|
182
|
-
gem:mswin32:clobber_package
|
183
|
-
gem:mswin32:package
|
184
|
-
gem:mswin32:repackage
|
185
|
-
].each {|name| remove_desc_for_task name}
|
198
|
+
task :clobber => 'gem:clobber_package'
|
199
|
+
remove_desc_for_task 'gem:clobber_package'
|
186
200
|
|
187
201
|
# EOF
|