require ::File.expand_path(
::File.join(::File.dirname(__FILE__), %w[.. .. spec_helper]))
# ---------------------------------------------------------------------------
describe Webby::Filters::Outline do
before :all do
@input = Webby::Resources::MetaFile.read(
Webby.datapath(%w[outline basic.txt]))
end
it 'should regsiter the outline filter handler' do
Webby::Filters._handlers['outline'].should_not be_nil
end
it 'generates outline formatting for HTML heading tags' do
output = File.read(Webby.datapath(%w[outline basic.out]))
outline = Webby::Filters::Outline.new(@input)
outline.filter.should == output
end
it 'starts numbering at an arbitrary value' do
input = @input.sub(%r//, '')
output = File.read(Webby.datapath(%w[outline numbering.out]))
outline = Webby::Filters::Outline.new(input)
outline.filter.should == output
end
it 'limits the range of headers the table of contents covers' do
input = @input.sub(%r//, '')
output = File.read(Webby.datapath(%w[outline toc_range_1.out]))
outline = Webby::Filters::Outline.new(input)
outline.filter.should == output
input = @input.sub(%r//, '')
output = File.read(Webby.datapath(%w[outline toc_range_2.out]))
outline = Webby::Filters::Outline.new(input)
outline.filter.should == output
end
it 'uses different list styling for the table of contents' do
input = @input.sub(%r//, '')
output = File.read(Webby.datapath(%w[outline toc_style.out]))
outline = Webby::Filters::Outline.new(input)
outline.filter.should == output
end
it 'performs outline numbering without creatng a table of contents' do
input = @input.sub(%r//, '')
output = File.read(Webby.datapath(%w[outline numbering_only.out]))
outline = Webby::Filters::Outline.new(input)
outline.filter.should == output
end
it 'detects mis-ordered heading tags' do
input = <<-HTML
Heading Three
Heading Two
Heading One
HTML
outline = Webby::Filters::Outline.new(input)
lambda {outline.filter}.should raise_error(
Webby::Error, "heading tags are not in order, cannot outline"
)
end
it 'does not clobber other HTML tags' do
html = <<-HTML
This is the title
And some sampler text
HTML
input = @input.sub(%r//, html)
output = File.read(Webby.datapath(%w[outline no_clobber.out]))
outline = Webby::Filters::Outline.new(input)
outline.filter.should == output
end
end
# EOF