Relative paths in the source jumplist
Adding a dependency on `Pathname`, which provides the excellent `relative_path_from` method. That happens to be exactly what's needed to fix the pathnames for the source jumplist issue that [Topfunky][] reported. Closes GH-26. [Topfunky]: https://github.com/topfunky
This commit is contained in:
parent
9d49139090
commit
12b26fe704
@ -43,6 +43,8 @@ Changelog
|
||||
|
||||
* Fixing language support for Pygments webservice (Issue #11)
|
||||
|
||||
* The source jumplist now generates correctly relative URLs (Issue #26)
|
||||
|
||||
[vast]: https://github.com/vast
|
||||
|
||||
0.5
|
||||
|
@ -59,6 +59,15 @@ if sources.empty?
|
||||
abort_with_note "#{File.basename($0)}: no input <file>s given"
|
||||
end
|
||||
|
||||
# Postprocess `sources` so that paths like `bin/file.rb` are written as `./bin/file.rb`:
|
||||
sources = sources.map do |filename|
|
||||
if filename.match( '^[a-zA-Z]' )
|
||||
File.join( '.', filename )
|
||||
else
|
||||
filename
|
||||
end
|
||||
end
|
||||
|
||||
# What a fucking mess. Most of this is duplicated in rocco.rb too.
|
||||
libdir = File.expand_path('../../lib', __FILE__).sub(/^#{Dir.pwd}\//, '')
|
||||
begin
|
||||
|
@ -1,4 +1,5 @@
|
||||
require 'mustache'
|
||||
require 'pathname'
|
||||
|
||||
class Rocco::Layout < Mustache
|
||||
self.template_path = File.dirname(__FILE__)
|
||||
@ -36,11 +37,14 @@ class Rocco::Layout < Mustache
|
||||
end
|
||||
|
||||
def sources
|
||||
currentpath = Pathname.new( File.dirname( @doc.file ) )
|
||||
@doc.sources.sort.map do |source|
|
||||
htmlpath = Pathname.new( source.sub( Regexp.new( "#{File.extname(source)}$"), ".html" ) )
|
||||
|
||||
{
|
||||
:path => source,
|
||||
:basename => File.basename(source),
|
||||
:url => source.sub( Regexp.new( "#{File.extname(source)}$"), ".html" )
|
||||
:url => htmlpath.relative_path_from( currentpath )
|
||||
}
|
||||
end
|
||||
end
|
||||
|
31
test/test_source_list.rb
Normal file
31
test/test_source_list.rb
Normal file
@ -0,0 +1,31 @@
|
||||
require File.dirname(__FILE__) + '/helper'
|
||||
|
||||
class RoccoSourceListTests < Test::Unit::TestCase
|
||||
def test_flat_sourcelist
|
||||
r = Rocco.new( 'issue26.sh', [ 'issue26a.sh', 'issue26b.sh', 'issue26c.sh' ] ) {
|
||||
"# Comment 1\n# Comment 1\nprint 'omg!'"
|
||||
}
|
||||
html = r.to_html
|
||||
puts r.to_html
|
||||
assert(
|
||||
html.include?( '<a class="source" href="issue26a.html">issue26a.sh</a>' ) &&
|
||||
html.include?( '<a class="source" href="issue26b.html">issue26b.sh</a>' ) &&
|
||||
html.include?( '<a class="source" href="issue26c.html">issue26c.sh</a>' ),
|
||||
"URLs correctly generated for files in a flat directory structure"
|
||||
)
|
||||
end
|
||||
def test_heiarachical_sourcelist
|
||||
r = Rocco.new( 'a/issue26.sh', [ 'a/issue26a.sh', 'b/issue26b.sh', 'c/issue26c.sh' ] ) {
|
||||
"# Comment 1\n# Comment 1\nprint 'omg!'"
|
||||
}
|
||||
html = r.to_html
|
||||
puts r.to_html
|
||||
assert(
|
||||
html.include?( '<a class="source" href="issue26a.html">issue26a.sh</a>' ) &&
|
||||
html.include?( '<a class="source" href="../b/issue26b.html">issue26b.sh</a>' ) &&
|
||||
html.include?( '<a class="source" href="../c/issue26c.html">issue26c.sh</a>' ),
|
||||
"URLs correctly generated for files in a flat directory structure"
|
||||
)
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in New Issue
Block a user