rote 0.3.0.2 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CONTRIBUTORS +1 -0
- data/DONE +6 -0
- data/LICENSE +1 -1
- data/README +10 -3
- data/Rakefile +1 -3
- data/TODO +18 -11
- data/doc/pages/guide/index.html +291 -87
- data/doc/res/stylesheets/normal.css +46 -4
- data/lib/rote.rb +2 -2
- data/lib/rote/app.rb +1 -1
- data/lib/rote/cache.rb +144 -0
- data/lib/rote/filters.rb +20 -4
- data/lib/rote/filters/base.rb +1 -1
- data/lib/rote/filters/bluecloth.rb +40 -0
- data/lib/rote/filters/eval.rb +58 -0
- data/lib/rote/filters/exec.rb +42 -0
- data/lib/rote/filters/rdoc.rb +1 -1
- data/lib/rote/filters/redcloth.rb +11 -9
- data/lib/rote/filters/syntax.rb +1 -1
- data/lib/rote/filters/tidy.rb +1 -1
- data/lib/rote/filters/toc.rb +1 -1
- data/lib/rote/format.rb +1 -1
- data/lib/rote/format/html.rb +1 -1
- data/lib/rote/page.rb +68 -41
- data/lib/rote/project/Rakefile +4 -5
- data/lib/rote/rotetasks.rb +1 -1
- data/test/layouts/nestme.rb +2 -0
- data/test/layouts/nestme.txt +1 -0
- data/test/pages/nestedlayout.rb +5 -0
- data/test/pages/nestedlayout.txt +1 -0
- data/test/test_cache.rb +67 -0
- data/test/{test_formatting.rb → test_filters.rb} +82 -4
- data/test/test_html_page.rb +1 -5
- data/test/test_page.rb +26 -8
- metadata +13 -8
- data/test/pages/markdown.txt +0 -8
- data/test/pages/rdoc.txt +0 -6
- data/test/pages/textile.rb +0 -3
- data/test/pages/textile.txt +0 -1
data/lib/rote/filters/rdoc.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# (c)2005 Ross Bamford (and contributors)
|
4
4
|
#
|
5
5
|
# See 'rote.rb' or LICENSE for licence information.
|
6
|
-
# $Id: rdoc.rb
|
6
|
+
# $Id: rdoc.rb 128 2005-12-12 02:45:24 +0000 (Mon, 12 Dec 2005) roscopeco $
|
7
7
|
#++
|
8
8
|
|
9
9
|
require 'rdoc/markup/simple_markup'
|
@@ -1,9 +1,9 @@
|
|
1
1
|
#--
|
2
2
|
# Rote filter for RedCloth
|
3
|
-
# (c)2005 Ross Bamford (and contributors)
|
3
|
+
# (c)2005, 2006 Ross Bamford (and contributors)
|
4
4
|
#
|
5
5
|
# See 'rote.rb' or LICENSE for licence information.
|
6
|
-
# $Id: redcloth.rb
|
6
|
+
# $Id: redcloth.rb 128 2005-12-12 02:45:24 +0000 (Mon, 12 Dec 2005) roscopeco $
|
7
7
|
#++
|
8
8
|
|
9
9
|
require 'redcloth'
|
@@ -12,20 +12,22 @@ require 'rote/filters/base'
|
|
12
12
|
module Rote
|
13
13
|
module Filters
|
14
14
|
#####
|
15
|
-
## Page filter that converts
|
16
|
-
## RedCloth.
|
17
|
-
##
|
15
|
+
## Page filter that converts Textile formatting to HTML using
|
16
|
+
## RedCloth.
|
17
|
+
##
|
18
|
+
## *Note* that, although RedCloth provides partial Markdown
|
19
|
+
## support, it is *highly recommended* that the BlueCloth
|
20
|
+
## filter be applied to markdown pages instead of this one.
|
18
21
|
class RedCloth < TextFilter
|
19
22
|
|
20
23
|
# Create a new filter instance. The supplied options are passed
|
21
|
-
# directly to RedCloth.
|
22
|
-
# :markdown - See RedCloth docs for a full list.
|
24
|
+
# directly to RedCloth. See RedCloth docs for a full list.
|
23
25
|
#
|
24
|
-
# If no options are supplied,
|
26
|
+
# If no options are supplied, full textile support is
|
27
|
+
# provided.
|
25
28
|
def initialize(*redcloth_opts)
|
26
29
|
super()
|
27
30
|
@redcloth_opts = redcloth_opts
|
28
|
-
raise "RedCloth is not available" unless defined?(RedCloth)
|
29
31
|
end
|
30
32
|
|
31
33
|
def handler(text,page)
|
data/lib/rote/filters/syntax.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# (c)2005 Ross Bamford (and contributors)
|
4
4
|
#
|
5
5
|
# See 'rote.rb' or LICENSE for licence information.
|
6
|
-
# $Id: syntax.rb
|
6
|
+
# $Id: syntax.rb 144 2005-12-14 19:17:21 +0000 (Wed, 14 Dec 2005) roscopeco $
|
7
7
|
#++
|
8
8
|
|
9
9
|
require 'syntax'
|
data/lib/rote/filters/tidy.rb
CHANGED
data/lib/rote/filters/toc.rb
CHANGED
data/lib/rote/format.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# (c)2005 Ross Bamford (and contributors)
|
4
4
|
#
|
5
5
|
# See 'rote.rb' or LICENSE for licence information.
|
6
|
-
# $Id: format.rb
|
6
|
+
# $Id: format.rb 128 2005-12-12 02:45:24 +0000 (Mon, 12 Dec 2005) roscopeco $
|
7
7
|
#++
|
8
8
|
|
9
9
|
Dir[File.join(File.dirname(__FILE__), 'format/*.rb')].each { |f| require f }
|
data/lib/rote/format/html.rb
CHANGED
data/lib/rote/page.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
#--
|
2
2
|
# Rote page class
|
3
|
-
# (c)2005 Ross Bamford (and contributors)
|
3
|
+
# (c)2005, 2006 Ross Bamford (and contributors)
|
4
4
|
#
|
5
5
|
# See 'rote.rb' or LICENSE for licence information.
|
6
|
-
# $Id: page.rb
|
6
|
+
# $Id: page.rb 143 2005-12-14 19:01:05 +0000 (Wed, 14 Dec 2005) roscopeco $
|
7
7
|
#++
|
8
8
|
|
9
9
|
require 'erb'
|
10
|
-
|
11
|
-
# Don't want user to have to require these in their pagecode.
|
12
|
-
require 'rote/format/html'
|
10
|
+
require 'rote/cache'
|
13
11
|
|
14
12
|
module Rote
|
15
13
|
STRIP_SLASHES = /^\/?(.*?)\/?$/
|
@@ -69,11 +67,18 @@ module Rote
|
|
69
67
|
|
70
68
|
# The text of the layout to use for this page. This is read in
|
71
69
|
# when (if) the page source calls layout(basename).
|
72
|
-
|
70
|
+
#
|
71
|
+
# *Deprecated* This has no knowledge of nested layout,
|
72
|
+
# and operates only on the innermost layout.
|
73
|
+
attr_reader :layout_text # Deprecated vv0.3.2 v-0.4
|
73
74
|
|
74
75
|
# The names from which this page's template and layout (if any)
|
75
|
-
#
|
76
|
-
attr_reader :template_name, :
|
76
|
+
# are read, relative to the +base_path+.
|
77
|
+
attr_reader :template_name, :layout_names
|
78
|
+
|
79
|
+
# Convenience accessor for the first queued layout. This is the
|
80
|
+
# innermost layout, usually specified by the page itself.
|
81
|
+
def layout_name; layout_names.first; end
|
77
82
|
|
78
83
|
# The base paths for this page's template and layout. These point
|
79
84
|
# to the directories configured in the Rake tasks.
|
@@ -100,12 +105,12 @@ module Rote
|
|
100
105
|
def initialize(template_name, pages_dir = '.', layout_dir = pages_dir, &blk)
|
101
106
|
@template_text = nil
|
102
107
|
@template_name = nil
|
103
|
-
@
|
104
|
-
@layout_name = nil
|
108
|
+
@layout_names = []
|
105
109
|
@content_for_layout = nil
|
106
110
|
@result = nil
|
107
111
|
@layout_defext = File.extname(template_name)
|
108
112
|
@layout_path = layout_dir[STRIP_SLASHES,1]
|
113
|
+
@layout_text = nil
|
109
114
|
@base_path = pages_dir[STRIP_SLASHES,1]
|
110
115
|
|
111
116
|
@page_filters, @post_filters = [], []
|
@@ -130,13 +135,13 @@ module Rote
|
|
130
135
|
# Returns the full filename of this Page's template. This is obtained by
|
131
136
|
# joining the base path with template name.
|
132
137
|
def template_filename
|
133
|
-
|
138
|
+
File.join(base_path,template_name) if template_name
|
134
139
|
end
|
135
140
|
|
136
|
-
# Returns the full filename of
|
137
|
-
#
|
141
|
+
# Returns the full filename of the first queued layout. This is
|
142
|
+
# the innermost layout, usually specified by the page itself.
|
138
143
|
def layout_filename
|
139
|
-
|
144
|
+
layout_fn(layout_name)
|
140
145
|
end
|
141
146
|
|
142
147
|
# Returns the full filename of this Page's ruby source. If no source is
|
@@ -179,11 +184,11 @@ module Rote
|
|
179
184
|
@result or do_render! # sets up result for next time...
|
180
185
|
end
|
181
186
|
|
182
|
-
alias to_s render
|
187
|
+
alias :to_s :render
|
183
188
|
|
184
|
-
#
|
185
|
-
#
|
186
|
-
#
|
189
|
+
# Adds the specified layout to those that will be rendered. The specified
|
190
|
+
# basename should be the name of the layout file relative to the
|
191
|
+
# +layout_dir+, with no extension.
|
187
192
|
#
|
188
193
|
# *The* *layout* *is* *not* *read* *by* *this* *method*. It, and
|
189
194
|
# it's source, are loaded only at rendering time. This prevents
|
@@ -194,10 +199,7 @@ module Rote
|
|
194
199
|
# that the instance is frozen.
|
195
200
|
def layout(basename)
|
196
201
|
if basename
|
197
|
-
#
|
198
|
-
@layout_name = "#{basename}#{@layout_defext if File.extname(basename).empty?}"
|
199
|
-
else
|
200
|
-
@layout_name = nil
|
202
|
+
self.layout_names << "#{basename}#{@layout_defext if File.extname(basename).empty?}"
|
201
203
|
end
|
202
204
|
end
|
203
205
|
|
@@ -224,17 +226,28 @@ module Rote
|
|
224
226
|
end
|
225
227
|
end
|
226
228
|
|
227
|
-
def
|
228
|
-
if fn
|
229
|
-
|
230
|
-
|
229
|
+
def layout_fn(fn)
|
230
|
+
File.join(layout_path,fn) if fn
|
231
|
+
end
|
232
|
+
|
233
|
+
# Loads the layout. This method evaluates the layout code
|
234
|
+
# and returns it's text. The layout (and code if found)
|
235
|
+
# are also registered as cached deps.
|
236
|
+
def load_layout(fn)
|
237
|
+
if fn = layout_fn(fn)
|
238
|
+
raise "Layout #{fn} not found" unless File.exists?(fn)
|
231
239
|
|
232
240
|
# layout code
|
233
241
|
cfn = Page::page_ruby_filename(fn)
|
234
|
-
|
242
|
+
if File.exists?(cfn)
|
243
|
+
instance_eval(File.read(cfn), cfn)
|
244
|
+
Rake.register_dependency(cfn)
|
245
|
+
end
|
246
|
+
|
247
|
+
Rake.register_dependency(fn)
|
248
|
+
File.read(fn)
|
235
249
|
end
|
236
|
-
end
|
237
|
-
|
250
|
+
end
|
238
251
|
|
239
252
|
def render_page_filters(text)
|
240
253
|
page_filters.inject(text) { |s, f| f.filter(s, self) }
|
@@ -254,19 +267,33 @@ module Rote
|
|
254
267
|
@content_for_layout = render_page_filters( erb.result(binding) )
|
255
268
|
end
|
256
269
|
|
257
|
-
#
|
258
|
-
|
259
|
-
|
260
|
-
#
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
270
|
+
# Do layout _after_ page eval. As we go through this, the layouts
|
271
|
+
# we load may add to the end of the layout names array, so nested
|
272
|
+
# layout is supported by just chasing the end of the array until
|
273
|
+
# it's empty. The process is basically
|
274
|
+
#
|
275
|
+
# Page is loaded, calls 'layout' with it's layout.
|
276
|
+
# During render, that fn is taken, and loaded. Layout code
|
277
|
+
# again calls 'layout'.
|
278
|
+
# On next loop iteration, that new filename is loaded, and it's
|
279
|
+
# code is executed ... and so on.
|
280
|
+
#
|
281
|
+
# Each loop puts the result into @content_for_layout, so that
|
282
|
+
# nested layouts can work just the same as regular.
|
283
|
+
@layout_names.each do |fn|
|
284
|
+
txt = load_layout(fn)
|
285
|
+
|
286
|
+
@layout_text ||= txt # legacy support vv0.3.2 v-0.4
|
287
|
+
|
288
|
+
# render into the layout if supplied.
|
289
|
+
if txt
|
290
|
+
erb = ERB.new(txt)
|
291
|
+
erb.filename = fn
|
292
|
+
@content_for_layout = erb.result(binding)
|
293
|
+
end
|
294
|
+
end
|
268
295
|
|
269
|
-
@result = render_post_filters(@
|
296
|
+
@result = render_post_filters(@content_for_layout)
|
270
297
|
freeze
|
271
298
|
|
272
299
|
@result
|
data/lib/rote/project/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Standard Rakefile for custom Rote build
|
2
2
|
#
|
3
3
|
# Generated from:
|
4
|
-
# $Id: Rakefile
|
4
|
+
# $Id: Rakefile 143 2005-12-14 19:01:05 +0000 (Wed, 14 Dec 2005) roscopeco $
|
5
5
|
#
|
6
6
|
begin
|
7
7
|
require 'rubygems'
|
@@ -12,8 +12,7 @@ end
|
|
12
12
|
require 'rake'
|
13
13
|
require 'rake/clean'
|
14
14
|
require 'rote'
|
15
|
-
require 'rote/filters
|
16
|
-
require 'rote/filters/rdoc'
|
15
|
+
require 'rote/filters'
|
17
16
|
require 'rote/format/html'
|
18
17
|
|
19
18
|
include Rote
|
@@ -47,12 +46,12 @@ ws = Rote::DocTask.new(:doc) do |site|
|
|
47
46
|
|
48
47
|
site.ext_mapping(/thtml|textile/, 'html') do |page|
|
49
48
|
page.extend Format::HTML
|
50
|
-
page.page_filter Filters::RedCloth.new
|
49
|
+
page.page_filter Filters::RedCloth.new
|
51
50
|
end
|
52
51
|
|
53
52
|
site.ext_mapping(/mhtml|markdown/, 'html') do |page|
|
54
53
|
page.extend Format::HTML
|
55
|
-
page.page_filter Filters::
|
54
|
+
page.page_filter Filters::BlueCloth.new
|
56
55
|
end
|
57
56
|
|
58
57
|
site.ext_mapping(/rdhtml|rdoc/, 'html') do |page|
|
data/lib/rote/rotetasks.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# (c)2005 Ross Bamford (and contributors)
|
4
4
|
#
|
5
5
|
# See 'rote.rb' or LICENSE for licence information.
|
6
|
-
# $Id: rotetasks.rb
|
6
|
+
# $Id: rotetasks.rb 128 2005-12-12 02:45:24 +0000 (Mon, 12 Dec 2005) roscopeco $
|
7
7
|
#++
|
8
8
|
require 'rake'
|
9
9
|
require 'rake/tasklib'
|
@@ -0,0 +1 @@
|
|
1
|
+
this: '<%= @content_for_layout %>'
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= @myvar %> and <%= @global %>
|
data/test/test_cache.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
begin
|
2
|
+
require 'rubygems'
|
3
|
+
rescue LoadError
|
4
|
+
nil
|
5
|
+
end
|
6
|
+
|
7
|
+
$LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__),'../lib'))
|
8
|
+
|
9
|
+
require 'rake'
|
10
|
+
require 'rote/cache'
|
11
|
+
|
12
|
+
module Rote
|
13
|
+
class TestCache < Test::Unit::TestCase
|
14
|
+
|
15
|
+
def test_rake_cache_dir
|
16
|
+
assert_equal '.rake_cache', Rake.cache_dir
|
17
|
+
Rake.cache_dir = './.cache'
|
18
|
+
assert_equal './.cache', Rake.cache_dir
|
19
|
+
Rake.cache_dir = nil
|
20
|
+
assert_equal '.rake_cache', Rake.cache_dir
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_rake_dependencies_file
|
24
|
+
assert_equal '.rake_cache/dependencies.yaml', Rake.dependencies_file
|
25
|
+
Rake.cache_dir = './.cache'
|
26
|
+
assert_equal './.cache/dependencies.yaml', Rake.dependencies_file
|
27
|
+
Rake.cache_dir = nil
|
28
|
+
assert_equal '.rake_cache/dependencies.yaml', Rake.dependencies_file
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_rake_task_stack
|
32
|
+
assert_equal [], Rake.task_stack
|
33
|
+
|
34
|
+
outertask = task :outertask do
|
35
|
+
assert_equal ['outertask'], Rake.task_stack
|
36
|
+
|
37
|
+
innertask = task :innertask do
|
38
|
+
assert_equal ['outertask', 'innertask'], Rake.task_stack
|
39
|
+
end
|
40
|
+
|
41
|
+
assert_equal ['outertask'], Rake.task_stack
|
42
|
+
end
|
43
|
+
|
44
|
+
assert_equal [], Rake.task_stack
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_rake_register_dep_cached_deps
|
48
|
+
assert_equal({}, Rake.cached_dependencies)
|
49
|
+
|
50
|
+
# should fail here, return nil, do nothing.
|
51
|
+
# there's no current task
|
52
|
+
assert_nil Rake.register_dependency('dep')
|
53
|
+
assert_equal({}, Rake.cached_dependencies)
|
54
|
+
|
55
|
+
testtask = task :test_register_dep do
|
56
|
+
assert_equal(['dep'], Rake.register_dependency('dep'))
|
57
|
+
end
|
58
|
+
|
59
|
+
testtask.invoke(false)
|
60
|
+
|
61
|
+
assert_equal({'test_register_dep' => ['dep']}, Rake.cached_dependencies)
|
62
|
+
end
|
63
|
+
|
64
|
+
# TODO need to test load / save
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -4,12 +4,18 @@ rescue LoadError
|
|
4
4
|
nil
|
5
5
|
end
|
6
6
|
|
7
|
+
# make sure we're testing this version, not an installed Gem!
|
8
|
+
$LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__),'../lib'))
|
9
|
+
|
7
10
|
require 'test/unit'
|
8
11
|
require 'rote/page'
|
9
12
|
require 'rote/filters/redcloth'
|
13
|
+
require 'rote/filters/bluecloth'
|
10
14
|
require 'rote/filters/rdoc'
|
11
15
|
require 'rote/filters/toc'
|
12
16
|
require 'rote/filters/syntax'
|
17
|
+
require 'rote/filters/exec'
|
18
|
+
require 'rote/filters/eval'
|
13
19
|
|
14
20
|
SYNTEST = <<-EOM
|
15
21
|
<p>Non-code</p>
|
@@ -27,6 +33,38 @@ SYNTEST = <<-EOM
|
|
27
33
|
|
28
34
|
EOM
|
29
35
|
|
36
|
+
EXECTEST = <<-EOM
|
37
|
+
<p>Non-eval</p>
|
38
|
+
#:exec#ruby#
|
39
|
+
def amethod(arg)
|
40
|
+
puts arg
|
41
|
+
end
|
42
|
+
|
43
|
+
amethod('Hello, World')
|
44
|
+
#:exec#
|
45
|
+
<p>More non-code</p>
|
46
|
+
#:exec#ruby#
|
47
|
+
puts "Hello again!"
|
48
|
+
#:exec#
|
49
|
+
|
50
|
+
EOM
|
51
|
+
|
52
|
+
EVALTEST = <<-EOM
|
53
|
+
<p>Non-eval</p>
|
54
|
+
#:eval#one#
|
55
|
+
def amethod(arg)
|
56
|
+
puts arg
|
57
|
+
end
|
58
|
+
|
59
|
+
amethod('Hello, World')
|
60
|
+
#:eval#
|
61
|
+
<p>More non-code</p>
|
62
|
+
#:eval#one#
|
63
|
+
puts "Hello again!"
|
64
|
+
#:eval#
|
65
|
+
|
66
|
+
EOM
|
67
|
+
|
30
68
|
SYNEXPECT = <<-EOM
|
31
69
|
<p>Non-code</p>
|
32
70
|
<pre class='ruby'><code> <span class=\"keyword\">def </span><span class=\"method\">amethod</span><span class=\"punct\">(</span><span class=\"ident\">arg</span><span class=\"punct\">)</span>
|
@@ -38,6 +76,11 @@ SYNEXPECT = <<-EOM
|
|
38
76
|
<span class=\"keyword\">end</span></code></pre>
|
39
77
|
EOM
|
40
78
|
|
79
|
+
EXECEXPECT = " <p>Non-eval</p>\nHello, World\n\n <p>More non-code</p>\nHello again!\n"
|
80
|
+
|
81
|
+
EVALEXPECT = " <p>Non-eval</p>\nHello, World\n\n <p>More non-code</p>\nHello again!\n"
|
82
|
+
|
83
|
+
|
41
84
|
TOCTEST = <<-EOM
|
42
85
|
<h2>Section One</h2>
|
43
86
|
<p>This is section one</p>
|
@@ -60,7 +103,8 @@ TOCEXPECTALL = <<-EOM
|
|
60
103
|
EOM
|
61
104
|
|
62
105
|
module Rote
|
63
|
-
class
|
106
|
+
class TestFilters < Test::Unit::TestCase
|
107
|
+
|
64
108
|
############## filters/redcloth #################
|
65
109
|
def test_render_default # textile
|
66
110
|
t = Filters::RedCloth.new.filter('*Textile* _Test_', nil)
|
@@ -68,13 +112,28 @@ module Rote
|
|
68
112
|
end
|
69
113
|
|
70
114
|
def test_render_textile
|
115
|
+
t = Filters::RedCloth.new.filter('*Textile* _Test_', nil)
|
116
|
+
assert_equal '<p><strong>Textile</strong> <em>Test</em></p>', t
|
117
|
+
|
71
118
|
t = Filters::RedCloth.new(:textile).filter('*Textile* _Test_', nil)
|
72
119
|
assert_equal '<p><strong>Textile</strong> <em>Test</em></p>', t
|
73
120
|
end
|
74
121
|
|
75
122
|
def test_render_markdown
|
76
|
-
t = Filters::
|
77
|
-
assert_equal '<h1
|
123
|
+
t = Filters::BlueCloth.new.filter("__this__ is a _test_\n==================", nil)
|
124
|
+
assert_equal '<h1><strong>this</strong> is a <em>test</em></h1>', t
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_render_markdown_custom
|
128
|
+
f = Filters::BlueCloth.new do |bluecloth, page|
|
129
|
+
assert_not_nil bluecloth
|
130
|
+
assert_nil page # we pass in nil below
|
131
|
+
|
132
|
+
bluecloth.to_html
|
133
|
+
end
|
134
|
+
|
135
|
+
t = f.filter("__this__ is a _test_\n==================", nil)
|
136
|
+
assert_equal '<h1><strong>this</strong> is a <em>test</em></h1>', t
|
78
137
|
end
|
79
138
|
|
80
139
|
############## filters/rdoc #################
|
@@ -111,8 +170,27 @@ module Rote
|
|
111
170
|
# good
|
112
171
|
assert_equal SYNEXPECT.chomp, Filters::Syntax.new.filter(SYNTEST,nil)
|
113
172
|
end
|
114
|
-
# TODO test macro stuff etc.
|
115
173
|
|
174
|
+
def test_exec_filter
|
175
|
+
# bad
|
176
|
+
assert_equal '', Filters::Exec.new.filter('',nil)
|
177
|
+
assert_equal 'Has no source', Filters::Exec.new.filter('Has no source',nil)
|
178
|
+
|
179
|
+
# good
|
180
|
+
assert_equal EXECEXPECT, Filters::Exec.new.filter(EXECTEST,nil)
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_eval_filter
|
184
|
+
# bad
|
185
|
+
assert_equal '', Filters::Eval.new.filter('',nil)
|
186
|
+
assert_equal 'Has no source', Filters::Eval.new.filter('Has no source',nil)
|
187
|
+
|
188
|
+
# good
|
189
|
+
assert_equal EVALEXPECT, Filters::Eval.new.filter(EVALTEST,nil)
|
190
|
+
|
191
|
+
# Make sure Stdout was returned to normal
|
192
|
+
assert $stdout.class != StringIO
|
193
|
+
end
|
116
194
|
end
|
117
195
|
|
118
196
|
|