dokkit 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +5 -0
- data/lib/dokkit/environment/basic.rb +9 -1
- data/lib/dokkit/filters/erb.rb +27 -0
- data/lib/dokkit/filters/tidy.rb +29 -0
- data/lib/dokkit/filters.rb +2 -1
- data/lib/dokkit/resource/document.rb +35 -32
- data/lib/dokkit.rb +1 -1
- data/spec/dokkit/environment/basic_spec.rb +3 -0
- data/spec/dokkit/filters/erb_spec.rb +26 -0
- data/spec/dokkit/filters/tidy_spec.rb +48 -0
- data/spec/dokkit/resource/document_spec.rb +88 -50
- data/spec/dokkit/resource/test_data/doc/pages/document_with_postfilter.ext +10 -0
- data/spec/spec_helper.rb +5 -0
- metadata +7 -2
data/Manifest.txt
CHANGED
@@ -16,8 +16,10 @@ lib/dokkit/factory.rb
|
|
16
16
|
lib/dokkit/factory/factory.rb
|
17
17
|
lib/dokkit/filters.rb
|
18
18
|
lib/dokkit/filters/deplate.rb
|
19
|
+
lib/dokkit/filters/erb.rb
|
19
20
|
lib/dokkit/filters/maruku.rb
|
20
21
|
lib/dokkit/filters/nil.rb
|
22
|
+
lib/dokkit/filters/tidy.rb
|
21
23
|
lib/dokkit/hash.rb
|
22
24
|
lib/dokkit/logging.rb
|
23
25
|
lib/dokkit/logging/logger.rb
|
@@ -59,8 +61,10 @@ spec/dokkit/environment/test_data/doc/pages/document_2
|
|
59
61
|
spec/dokkit/environment/test_data/doc/pages/subdir/document_1
|
60
62
|
spec/dokkit/factory/factory_spec.rb
|
61
63
|
spec/dokkit/filters/deplate_spec.rb
|
64
|
+
spec/dokkit/filters/erb_spec.rb
|
62
65
|
spec/dokkit/filters/maruku_spec.rb
|
63
66
|
spec/dokkit/filters/nil_spec.rb
|
67
|
+
spec/dokkit/filters/tidy_spec.rb
|
64
68
|
spec/dokkit/hash_spec.rb
|
65
69
|
spec/dokkit/logging/logger_spec.rb
|
66
70
|
spec/dokkit/logging/observers/console_spec.rb
|
@@ -87,6 +91,7 @@ spec/dokkit/resource/test_data/doc/pages/document_with_nested_layout.ext
|
|
87
91
|
spec/dokkit/resource/test_data/doc/pages/document_with_nil_target.ext
|
88
92
|
spec/dokkit/resource/test_data/doc/pages/document_with_not_defined_target.ext
|
89
93
|
spec/dokkit/resource/test_data/doc/pages/document_with_one_target.ext
|
94
|
+
spec/dokkit/resource/test_data/doc/pages/document_with_postfilter.ext
|
90
95
|
spec/dokkit/resource/test_data/doc/pages/subdir/COMMON.yaml
|
91
96
|
spec/dokkit/resource/test_data/doc/pages/subdir/document.ext
|
92
97
|
spec/dokkit/resource/test_data/doc/pages/subdir/document.yaml
|
@@ -7,7 +7,6 @@
|
|
7
7
|
#
|
8
8
|
|
9
9
|
require 'ostruct'
|
10
|
-
require 'rake'
|
11
10
|
require 'dokkit'
|
12
11
|
require 'dokkit/environment'
|
13
12
|
require 'dokkit/logging'
|
@@ -98,6 +97,8 @@ module Dokkit
|
|
98
97
|
# Construct a filter factory and register filters.
|
99
98
|
def filter_factory
|
100
99
|
@filter_factory ||= Dokkit::Factory.new do |factory|
|
100
|
+
factory.add('erb' => lambda { |binding| Dokkit::Filter::ERB.new(binding) } )
|
101
|
+
factory.add('tidy' => lambda { Dokkit::Filter::Tidy.new } )
|
101
102
|
factory.add('maruku-html' => lambda { Dokkit::Filter::MarukuHTML.new } )
|
102
103
|
factory.add('deplate-latex' => lambda { Dokkit::Filter::DeplateLatex.new } )
|
103
104
|
factory.add('deplate-html' => lambda { Dokkit::Filter::DeplateHTML.new } )
|
@@ -114,6 +115,7 @@ module Dokkit
|
|
114
115
|
factory.add(:data => data_factory_block)
|
115
116
|
end
|
116
117
|
end
|
118
|
+
|
117
119
|
# Return a block that is able to construct a Document instance.
|
118
120
|
def document_factory_block
|
119
121
|
lambda do |source_fn|
|
@@ -126,20 +128,24 @@ module Dokkit
|
|
126
128
|
&extmap[source_fn])
|
127
129
|
end
|
128
130
|
end
|
131
|
+
|
129
132
|
# Return a block that is able to construct a Data instance.
|
130
133
|
def data_factory_block
|
131
134
|
lambda do |source_fn|
|
132
135
|
Resource::Data.new(source_fn, configuration.marshal_dump)
|
133
136
|
end
|
134
137
|
end
|
138
|
+
|
135
139
|
# Define render tasklib.
|
136
140
|
def render
|
137
141
|
TaskLib::Render.new(logger, resource_factory, documents.files, data.files)
|
138
142
|
end
|
143
|
+
|
139
144
|
# Define clean tasklib.
|
140
145
|
def clean
|
141
146
|
TaskLib::Clean.new(logger, configuration.marshal_dump)
|
142
147
|
end
|
148
|
+
|
143
149
|
end
|
144
150
|
end
|
145
151
|
end
|
@@ -147,10 +153,12 @@ end
|
|
147
153
|
module Dokkit
|
148
154
|
module Environment
|
149
155
|
module Basic
|
156
|
+
|
150
157
|
# Define a setup container.
|
151
158
|
class Container
|
152
159
|
include Dokkit::Environment::Basic
|
153
160
|
end
|
161
|
+
|
154
162
|
end
|
155
163
|
end
|
156
164
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# File 'erb.rb' created on 23 lug 2008 at 15:40:59.
|
3
|
+
#
|
4
|
+
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
5
|
+
#
|
6
|
+
# (C)2006-2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'erb'
|
10
|
+
|
11
|
+
module Dokkit
|
12
|
+
module Filter
|
13
|
+
|
14
|
+
class ERB
|
15
|
+
|
16
|
+
def initialize(binding)
|
17
|
+
@binding = binding
|
18
|
+
end
|
19
|
+
|
20
|
+
def filter(text)
|
21
|
+
::ERB.new(text).result(@binding)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#
|
2
|
+
# File 'tidy.rb' created on 27 lug 2008 at 12:02:48.
|
3
|
+
#
|
4
|
+
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
5
|
+
#
|
6
|
+
# (C)2006-2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'maruku'
|
10
|
+
|
11
|
+
module Dokkit
|
12
|
+
module Filter
|
13
|
+
|
14
|
+
class Tidy
|
15
|
+
|
16
|
+
def filter(text)
|
17
|
+
cmd = "tidy -q -i"
|
18
|
+
out = IO.popen(cmd, 'r+') do |tidy|
|
19
|
+
tidy.write text
|
20
|
+
tidy.close_write
|
21
|
+
tidy.read
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
data/lib/dokkit/filters.rb
CHANGED
@@ -25,11 +25,15 @@ module Dokkit
|
|
25
25
|
|
26
26
|
# Set the default filters chain for commonly used output format.
|
27
27
|
DEFAULT_FILTERS_CHAIN = {
|
28
|
-
'html' => ['deplate-html'],
|
29
|
-
'latex' => ['deplate-latex'],
|
30
|
-
'text' => ['deplate-text']
|
28
|
+
'html' => ['erb', 'deplate-html'],
|
29
|
+
'latex' => ['erb', 'deplate-latex'],
|
30
|
+
'text' => ['erb', 'deplate-text']
|
31
31
|
}
|
32
|
-
|
32
|
+
DEFAULT_POST_FILTERS_CHAIN = {
|
33
|
+
'html' => ['erb'],
|
34
|
+
'latex' => ['erb'],
|
35
|
+
'text' => ['erb']
|
36
|
+
}
|
33
37
|
attr_reader :configuration
|
34
38
|
attr_reader :source_fn
|
35
39
|
attr_reader :basename, :name_noext, :dirname, :relativename
|
@@ -121,7 +125,22 @@ module Dokkit
|
|
121
125
|
@logger.error("No defined filters chain for format '#{format}'!")
|
122
126
|
end
|
123
127
|
end
|
124
|
-
|
128
|
+
|
129
|
+
# Return the post filters chain associated with the given format.
|
130
|
+
def post_filters_for(format)
|
131
|
+
if @targets.has_key?(format)
|
132
|
+
if @targets[format].has_key?('postfilter')
|
133
|
+
@targets[format]['postfilter']
|
134
|
+
elsif DEFAULT_POST_FILTERS_CHAIN.has_key?(format)
|
135
|
+
DEFAULT_POST_FILTERS_CHAIN[format]
|
136
|
+
end
|
137
|
+
elsif DEFAULT_POST_FILTERS_CHAIN.has_key?(format)
|
138
|
+
DEFAULT_POST_FILTERS_CHAIN[format]
|
139
|
+
else
|
140
|
+
@logger.error("No defined post filters chain for format '#{format}'!")
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
125
144
|
def target_for(format)
|
126
145
|
@targets[format][:target_fn]
|
127
146
|
end
|
@@ -215,24 +234,16 @@ module Dokkit
|
|
215
234
|
|
216
235
|
# Produce output from source.
|
217
236
|
def render_source!(format)
|
218
|
-
unless @source.nil?
|
219
|
-
erb = ERB.new(@source)
|
220
|
-
erb.filename = @source_fn
|
221
|
-
@content_for_layout = apply_filters(erb.result(binding), format)
|
222
|
-
end
|
237
|
+
@content_for_layout = apply_filters(@source, filters_for(format), format) unless @source.nil?
|
223
238
|
end
|
224
239
|
|
240
|
+
def render_layout!(layout_fn, format)
|
241
|
+
@content_for_layout = apply_filters(File.read(layout_fn), post_filters_for(format), format) unless File.read(layout_fn).nil?
|
242
|
+
end
|
243
|
+
|
225
244
|
# Injects rendered content from +source_fn+ in the layout chain.
|
226
245
|
def render_all_layouts!(format)
|
227
|
-
unless !@layouts[format] || @layouts[format].empty?
|
228
|
-
@layouts[format].each { |layout_fn| render_layout!(layout_fn) }
|
229
|
-
end
|
230
|
-
end
|
231
|
-
|
232
|
-
def render_layout!(layout_fn)
|
233
|
-
erb = ERB.new(File.read(layout_fn))
|
234
|
-
erb.filename = layout_fn
|
235
|
-
@content_for_layout = erb.result(binding)
|
246
|
+
@layouts[format].each { |layout_fn| render_layout!(layout_fn, format) } unless !@layouts[format] || @layouts[format].empty?
|
236
247
|
end
|
237
248
|
|
238
249
|
# Collect all dependencies.
|
@@ -259,7 +270,7 @@ module Dokkit
|
|
259
270
|
def collect_layouts
|
260
271
|
@targets.each_key do |format|
|
261
272
|
@layouts[format] = []
|
262
|
-
|
273
|
+
|
263
274
|
process_layout_configuration_key(format)
|
264
275
|
|
265
276
|
@layouts[format].uniq!
|
@@ -292,7 +303,8 @@ module Dokkit
|
|
292
303
|
if opts
|
293
304
|
ext = (opts['ext'] if opts.has_key?('ext')) || format_key
|
294
305
|
filters = (opts['filter'] if opts.has_key?('filter')) || DEFAULT_FILTERS_CHAIN['html']
|
295
|
-
|
306
|
+
post_filters = (opts['postfilter'] if opts.has_key?('postfilter')) || DEFAULT_POST_FILTERS_CHAIN['html']
|
307
|
+
{ :target_fn => target_fn(ext.to_sym), 'filter' => filters, 'postfilter' => post_filters }
|
296
308
|
else
|
297
309
|
@logger.error("You must define format '#{format}'!")
|
298
310
|
end
|
@@ -366,17 +378,8 @@ module Dokkit
|
|
366
378
|
end
|
367
379
|
|
368
380
|
# Apply filters on text to produce the given format.
|
369
|
-
def apply_filters(text, format)
|
370
|
-
filters_chain
|
371
|
-
filters = []
|
372
|
-
if filters_chain
|
373
|
-
filters_chain.each do |filter|
|
374
|
-
filters << @filter_factory.get(filter)
|
375
|
-
end
|
376
|
-
filters.inject(text) { |s, f| f.filter(s) }
|
377
|
-
else
|
378
|
-
@logger.error("Don't know how to render '#{source_fn}': cannot find filters for format '#{format}'!")
|
379
|
-
end
|
381
|
+
def apply_filters(text, filters_chain, format)
|
382
|
+
filters_chain.collect { |filter| @filter_factory.get(filter, binding) }.inject(text) { |s, f| f.filter(s) }
|
380
383
|
end
|
381
384
|
|
382
385
|
end
|
data/lib/dokkit.rb
CHANGED
@@ -95,6 +95,9 @@ module Dokkit
|
|
95
95
|
it 'should initialize only one instance of resource factory' do
|
96
96
|
@container.resource_factory.object_id.should == @container.resource_factory.object_id
|
97
97
|
end
|
98
|
+
it 'should construct a ERB filter instance through filter factory' do
|
99
|
+
@container.filter_factory.get('erb', binding).is_a?(Filter::ERB).should be_true
|
100
|
+
end
|
98
101
|
it 'should construct a DeplateHTML filter instance through filter factory' do
|
99
102
|
@container.filter_factory.get('deplate-html').is_a?(Filter::DeplateHTML).should be_true
|
100
103
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#
|
2
|
+
# File 'erb_spec.rb' created on 23 lug 2008 at 15:38:04.
|
3
|
+
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
4
|
+
#
|
5
|
+
# (c)2006-2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
6
|
+
# #
|
7
|
+
# To execute this spec run:
|
8
|
+
#
|
9
|
+
# spec spec/dokkit/filters/erb_spec.rb
|
10
|
+
#
|
11
|
+
|
12
|
+
$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../../../lib')))
|
13
|
+
|
14
|
+
require 'rubygems'
|
15
|
+
require 'spec'
|
16
|
+
require 'dokkit'
|
17
|
+
require 'dokkit/filters/erb'
|
18
|
+
|
19
|
+
describe Dokkit::Filter::ERB do
|
20
|
+
before do
|
21
|
+
@erb = Dokkit::Filter::ERB.new(binding)
|
22
|
+
end
|
23
|
+
it 'should compile an erb template' do
|
24
|
+
@erb.filter('<%= "process this" %>').should == "process this"
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#
|
2
|
+
# File 'tidy_spec.rb' created on 27 lug 2008 at 14:30:55.
|
3
|
+
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
4
|
+
#
|
5
|
+
# (c)2006-2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
6
|
+
#
|
7
|
+
|
8
|
+
$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../../../lib')))
|
9
|
+
|
10
|
+
require 'rubygems'
|
11
|
+
require 'spec'
|
12
|
+
require 'dokkit'
|
13
|
+
require 'dokkit/filters/tidy'
|
14
|
+
|
15
|
+
INPUT = <<EOI
|
16
|
+
<html>
|
17
|
+
<body>
|
18
|
+
<p>content</p>
|
19
|
+
</body>
|
20
|
+
</html>
|
21
|
+
EOI
|
22
|
+
|
23
|
+
OUTPUT = <<EOO
|
24
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
25
|
+
|
26
|
+
<html>
|
27
|
+
<head>
|
28
|
+
<meta name="generator" content=
|
29
|
+
"HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org">
|
30
|
+
|
31
|
+
<title></title>
|
32
|
+
</head>
|
33
|
+
|
34
|
+
<body>
|
35
|
+
<p>content</p>
|
36
|
+
</body>
|
37
|
+
</html>
|
38
|
+
EOO
|
39
|
+
|
40
|
+
describe Dokkit::Filter::Tidy do
|
41
|
+
before do
|
42
|
+
@tidy = Dokkit::Filter::Tidy.new
|
43
|
+
end
|
44
|
+
it 'should compile an erb template' do
|
45
|
+
@tidy.filter(INPUT).should == OUTPUT
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
@@ -9,7 +9,6 @@
|
|
9
9
|
# spec spec/document_spec.rb
|
10
10
|
#
|
11
11
|
|
12
|
-
|
13
12
|
$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../../../lib')))
|
14
13
|
|
15
14
|
require 'rubygems'
|
@@ -107,17 +106,17 @@ describe Dokkit::Resource::Document, ' when inizialized with document.ext' do
|
|
107
106
|
@document.target_for(@document.default_format).should == 'output/subdir/document.html'
|
108
107
|
end
|
109
108
|
it 'should have a default filter chain for the default output format' do
|
110
|
-
@document.filters_for(@document.default_format).should == ['deplate-html']
|
109
|
+
@document.filters_for(@document.default_format).should == ['erb', 'deplate-html']
|
111
110
|
end
|
112
111
|
it 'should have a default filter chain for latex output' do
|
113
|
-
@document.filters_for('latex').should == ['deplate-latex']
|
112
|
+
@document.filters_for('latex').should == ['erb', 'deplate-latex']
|
114
113
|
end
|
115
114
|
it 'should have a default filter chain for text output' do
|
116
|
-
@document.filters_for('text').should == ['deplate-text']
|
115
|
+
@document.filters_for('text').should == ['erb', 'deplate-text']
|
117
116
|
end
|
118
117
|
it 'should fail if a filter chain for a given output format was not found' do
|
119
118
|
@logger.should_receive(:error).with(/defined filter/)
|
120
|
-
@document.filters_for(
|
119
|
+
@document.filters_for('notexists')
|
121
120
|
end
|
122
121
|
it 'should return the target filename for the given format' do
|
123
122
|
@document.target_for('html').should == 'output/subdir/document.html'
|
@@ -148,7 +147,7 @@ describe Dokkit::Resource::Document, ' when inizialized with document.ext' do
|
|
148
147
|
'doc/pages/COMMON.yaml',
|
149
148
|
'doc/configs/subdir/document.yaml',
|
150
149
|
{ 'key_in_header' => 'value in header'}
|
151
|
-
|
150
|
+
)
|
152
151
|
end
|
153
152
|
it 'should collect config filenames' do
|
154
153
|
@document.config_fns.should == ['doc/configs/subdir/document.yaml',
|
@@ -166,12 +165,12 @@ describe Dokkit::Resource::Document, ' when inizialized with document.ext' do
|
|
166
165
|
end
|
167
166
|
it 'should store the names of its dependencies grouped by format' do
|
168
167
|
@document.deps_for('html').should == ['doc/pages/subdir/document.ext',
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
168
|
+
'doc/configs/subdir/document.yaml',
|
169
|
+
File.expand_path('doc/pages/COMMON.yaml'),
|
170
|
+
File.expand_path('doc/pages/subdir/COMMON.yaml'),
|
171
|
+
'doc/pages/subdir/document.yaml',
|
172
|
+
'doc/configs/required.yaml',
|
173
|
+
'doc/layouts/subdir/document.html']
|
175
174
|
end
|
176
175
|
it 'should fail if config file doesn''t exist' do
|
177
176
|
@logger.should_receive(:error).with("Configuration file 'notexists' not found for '#{@document.source_fn}'!")
|
@@ -186,12 +185,17 @@ describe Dokkit::Resource::Document, ' when inizialized with document.ext' do
|
|
186
185
|
@document.configuration['notexists'].should == @document.default_configuration_value
|
187
186
|
end
|
188
187
|
describe ' and rendered in html' do
|
189
|
-
|
190
|
-
filter = mock('filter'
|
191
|
-
@
|
192
|
-
|
188
|
+
before do
|
189
|
+
@filter = mock('filter')
|
190
|
+
@filter.stub!(:filter)
|
191
|
+
end
|
192
|
+
it 'should use erb and deplate-html filters' do
|
193
|
+
@filter_factory.should_receive(:get).twice.with('erb', :anything).and_return(@filter)
|
194
|
+
@filter_factory.should_receive(:get).with('deplate-html', :anything).and_return(@filter)
|
195
|
+
@document.render
|
193
196
|
end
|
194
197
|
end
|
198
|
+
|
195
199
|
describe ' and rendered in a unknown format' do
|
196
200
|
it 'should fail if output format doesn''t exist' do
|
197
201
|
@logger.should_receive(:error).with(/format.*is unknown/)
|
@@ -216,18 +220,19 @@ describe Dokkit::Resource::Document, ' when inizialized with document_with_many_
|
|
216
220
|
cache,
|
217
221
|
@resource_factory,
|
218
222
|
@filter_factory
|
219
|
-
|
223
|
+
)
|
220
224
|
end
|
221
225
|
after(:all) do
|
222
226
|
Dir.chdir(@initial_dir)
|
223
227
|
end
|
224
228
|
it 'should collect all the targets grouped by format' do
|
225
229
|
@document.targets.should == {
|
226
|
-
# 'html' => { :target_fn => 'output/document_with_many_targets.html' },
|
230
|
+
# 'html' => { :target_fn => 'output/document_with_many_targets.html' },
|
227
231
|
'latex' => { :target_fn => 'output/document_with_many_targets.latex' },
|
228
232
|
'text' => { :target_fn => 'output/document_with_many_targets.text' },
|
229
233
|
'custom' => {
|
230
234
|
:target_fn => 'output/document_with_many_targets.html',
|
235
|
+
'postfilter' => ['erb'],
|
231
236
|
'filter' => ['maruku-html']
|
232
237
|
}
|
233
238
|
}
|
@@ -235,42 +240,48 @@ describe Dokkit::Resource::Document, ' when inizialized with document_with_many_
|
|
235
240
|
it 'should return filter_chain for custom format' do
|
236
241
|
@document.filters_for('custom').should == ['maruku-html']
|
237
242
|
end
|
238
|
-
# describe ' and rendered in html format' do
|
239
|
-
# it 'should produce html output' do
|
240
|
-
# result = "<h1>Title</h1>"
|
241
|
-
# filter = mock('filter', :filter => result)
|
242
|
-
# @filter_factory.should_receive(:get).with('deplate-html').and_return(filter)
|
243
|
-
# @document.render(:format => 'html').should match(/#{result}/)
|
244
|
-
# end
|
245
|
-
# end
|
243
|
+
# describe ' and rendered in html format' do
|
244
|
+
# it 'should produce html output' do
|
245
|
+
# result = "<h1>Title</h1>"
|
246
|
+
# filter = mock('filter', :filter => result)
|
247
|
+
# @filter_factory.should_receive(:get).with('deplate-html').and_return(filter)
|
248
|
+
# @document.render(:format => 'html').should match(/#{result}/)
|
249
|
+
# end
|
250
|
+
# end
|
246
251
|
describe ' and rendered in latex format' do
|
247
|
-
|
248
|
-
|
249
|
-
filter
|
250
|
-
|
251
|
-
|
252
|
+
before do
|
253
|
+
@filter = mock('filter')
|
254
|
+
@filter.stub!(:filter)
|
255
|
+
end
|
256
|
+
it 'should use erb and deplate-latex filters' do
|
257
|
+
@filter_factory.should_receive(:get).twice.with('erb', :anything).and_return(@filter)
|
258
|
+
@filter_factory.should_receive(:get).with('deplate-latex', :anything).and_return(@filter)
|
259
|
+
@document.render(:format => 'latex')
|
252
260
|
end
|
253
261
|
end
|
254
262
|
describe ' and rendered in text format' do
|
255
|
-
|
256
|
-
|
257
|
-
filter
|
258
|
-
|
259
|
-
|
263
|
+
before do
|
264
|
+
@filter = mock('filter')
|
265
|
+
@filter.stub!(:filter)
|
266
|
+
end
|
267
|
+
it 'should use erb and deplate-text filters' do
|
268
|
+
@filter_factory.should_receive(:get).with('erb', :anything).and_return(@filter)
|
269
|
+
@filter_factory.should_receive(:get).with('deplate-text', :anything).and_return(@filter)
|
270
|
+
@document.render(:format => 'text')
|
260
271
|
end
|
261
272
|
end
|
262
273
|
describe ' and rendered in custom format' do
|
263
274
|
it 'should produce html output using maruku' do
|
264
275
|
result = "<h1>Title</h1>"
|
265
276
|
filter = mock('filter', :filter => result)
|
266
|
-
@filter_factory.should_receive(:get).with('maruku-html').and_return(filter)
|
277
|
+
@filter_factory.should_receive(:get).with('maruku-html', :anything).and_return(filter)
|
267
278
|
@document.render(:format => 'custom').should match(/#{result}/)
|
268
279
|
end
|
269
280
|
end
|
270
281
|
end
|
271
282
|
|
272
283
|
describe Dokkit::Resource::Document, ' when inizialized with document_with_nested_layout.ext' do
|
273
|
-
include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
|
284
|
+
include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource, SpecHelper::Filter
|
274
285
|
before(:all) do
|
275
286
|
@initial_dir = Dir.pwd
|
276
287
|
Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
|
@@ -284,7 +295,7 @@ describe Dokkit::Resource::Document, ' when inizialized with document_with_neste
|
|
284
295
|
cache,
|
285
296
|
@resource_factory,
|
286
297
|
@filter_factory
|
287
|
-
|
298
|
+
)
|
288
299
|
end
|
289
300
|
after(:all) do
|
290
301
|
Dir.chdir(@initial_dir)
|
@@ -294,13 +305,14 @@ describe Dokkit::Resource::Document, ' when inizialized with document_with_neste
|
|
294
305
|
end
|
295
306
|
describe ' and rendered in html format' do
|
296
307
|
it 'should produce html output using layout chain' do
|
297
|
-
|
298
|
-
|
299
|
-
|
308
|
+
@filter_factory.should_receive(:get).with('erb', :anything).and_return(filter('<p>some content</p>'),
|
309
|
+
filter('<div id="nested"><p>some content</p></div>'),
|
310
|
+
filter('<html><div id="nested"><p>some content</p></div></html>'))
|
311
|
+
@filter_factory.should_receive(:get).with('deplate-html', :anything).and_return(filter('<p>some content</p>'))
|
300
312
|
render_result = @document.render
|
301
313
|
render_result.should match(/\A\<html\>/)
|
302
314
|
render_result.should match(/<div id=\"nested\"\>/)
|
303
|
-
render_result.should match(/
|
315
|
+
render_result.should match(/some content/)
|
304
316
|
end
|
305
317
|
end
|
306
318
|
end
|
@@ -320,7 +332,7 @@ describe Dokkit::Resource::Document, ' when inizialized with document_with_many_
|
|
320
332
|
cache,
|
321
333
|
@resource_factory,
|
322
334
|
@filter_factory
|
323
|
-
|
335
|
+
)
|
324
336
|
end
|
325
337
|
after(:all) do
|
326
338
|
Dir.chdir(@initial_dir)
|
@@ -470,12 +482,12 @@ describe Dokkit::Resource::Document, ' when render partial' do
|
|
470
482
|
@resource_factory = resource_factory
|
471
483
|
end
|
472
484
|
before do
|
473
|
-
# @document = Dokkit::Resource::Document.new('doc/pages/document_with_partial.ext',
|
474
|
-
# configuration,
|
475
|
-
# @logger,
|
476
|
-
# cache,
|
477
|
-
# @resource_factory,
|
478
|
-
# @filter_factory)
|
485
|
+
# @document = Dokkit::Resource::Document.new('doc/pages/document_with_partial.ext',
|
486
|
+
# configuration,
|
487
|
+
# @logger,
|
488
|
+
# cache,
|
489
|
+
# @resource_factory,
|
490
|
+
# @filter_factory)
|
479
491
|
end
|
480
492
|
after(:all) do
|
481
493
|
Dir.chdir(@initial_dir)
|
@@ -483,3 +495,29 @@ describe Dokkit::Resource::Document, ' when render partial' do
|
|
483
495
|
it 'should instantiate a document object'
|
484
496
|
it 'should cache document'
|
485
497
|
end
|
498
|
+
|
499
|
+
describe Dokkit::Resource::Document, 'post filtering' do
|
500
|
+
include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
|
501
|
+
include SpecHelper::Filter
|
502
|
+
|
503
|
+
before(:all) do
|
504
|
+
@initial_dir = Dir.pwd
|
505
|
+
Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
|
506
|
+
end
|
507
|
+
after(:all) do
|
508
|
+
Dir.chdir(@initial_dir)
|
509
|
+
end
|
510
|
+
before do
|
511
|
+
@filter_factory = filter_factory
|
512
|
+
@document = Dokkit::Resource::Document.new('doc/pages/document_with_postfilter.ext',
|
513
|
+
configuration,
|
514
|
+
logger,
|
515
|
+
cache,
|
516
|
+
resource_factory,
|
517
|
+
@filter_factory)
|
518
|
+
end
|
519
|
+
it 'should postfilter the document' do
|
520
|
+
@filter_factory.should_receive(:get).twice.with('erb', :anything).twice.and_return(filter('filtered output'))
|
521
|
+
@document.render
|
522
|
+
end
|
523
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dokkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrea Fazzi
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-07-
|
12
|
+
date: 2008-07-27 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -68,8 +68,10 @@ files:
|
|
68
68
|
- lib/dokkit/factory/factory.rb
|
69
69
|
- lib/dokkit/filters.rb
|
70
70
|
- lib/dokkit/filters/deplate.rb
|
71
|
+
- lib/dokkit/filters/erb.rb
|
71
72
|
- lib/dokkit/filters/maruku.rb
|
72
73
|
- lib/dokkit/filters/nil.rb
|
74
|
+
- lib/dokkit/filters/tidy.rb
|
73
75
|
- lib/dokkit/hash.rb
|
74
76
|
- lib/dokkit/logging.rb
|
75
77
|
- lib/dokkit/logging/logger.rb
|
@@ -111,8 +113,10 @@ files:
|
|
111
113
|
- spec/dokkit/environment/test_data/doc/pages/subdir/document_1
|
112
114
|
- spec/dokkit/factory/factory_spec.rb
|
113
115
|
- spec/dokkit/filters/deplate_spec.rb
|
116
|
+
- spec/dokkit/filters/erb_spec.rb
|
114
117
|
- spec/dokkit/filters/maruku_spec.rb
|
115
118
|
- spec/dokkit/filters/nil_spec.rb
|
119
|
+
- spec/dokkit/filters/tidy_spec.rb
|
116
120
|
- spec/dokkit/hash_spec.rb
|
117
121
|
- spec/dokkit/logging/logger_spec.rb
|
118
122
|
- spec/dokkit/logging/observers/console_spec.rb
|
@@ -139,6 +143,7 @@ files:
|
|
139
143
|
- spec/dokkit/resource/test_data/doc/pages/document_with_nil_target.ext
|
140
144
|
- spec/dokkit/resource/test_data/doc/pages/document_with_not_defined_target.ext
|
141
145
|
- spec/dokkit/resource/test_data/doc/pages/document_with_one_target.ext
|
146
|
+
- spec/dokkit/resource/test_data/doc/pages/document_with_postfilter.ext
|
142
147
|
- spec/dokkit/resource/test_data/doc/pages/subdir/COMMON.yaml
|
143
148
|
- spec/dokkit/resource/test_data/doc/pages/subdir/document.ext
|
144
149
|
- spec/dokkit/resource/test_data/doc/pages/subdir/document.yaml
|