Permalink
Browse files

Merge remote branch 'mikewest/template'

Conflicts:
	lib/rocco.rb
  • Loading branch information...
2 parents 6266408 + bb9b167 commit 236fb2731ce3b32e842be77e426c6e140fde6710 @rtomayko rtomayko committed Oct 19, 2010
Showing with 22 additions and 5 deletions.
  1. +2 −0 bin/rocco
  2. +7 −1 lib/rocco.rb
  3. +13 −4 lib/rocco/layout.rb
View
@@ -7,6 +7,7 @@
#/ -c, --comment-chars=<chars>
#/ The string to recognize as a comment marker
#/ -o, --output=<dir> Directory where generated HTML files are written
+#/ -t, --template=<path> The file to use as template when rendering HTML
#/ --help Show this help message
require 'optparse'
@@ -37,6 +38,7 @@ ARGV.options { |o|
o.on("-o", "--output=DIR") { |dir| output_dir = dir }
o.on("-l", "--language=LANG") { |lang| options[:language] = lang }
o.on("-c", "--comment-chars=CHARS") { |chars| options[:comment_chars] = Regexp.escape(chars) }
+ o.on("-t", "--template=TEMPLATE") { |template| options[:template_file] = template }
o.on_tail("-h", "--help") { usage($stdout, 0) }
o.parse!
} or abort_with_note
View
@@ -82,10 +82,12 @@ def initialize(filename, sources=[], options={}, &block)
defaults = {
:language => 'ruby',
:comment_chars => '#',
+ :template_file => nil
}
@options = defaults.merge(options)
@sources = sources
@comment_pattern = Regexp.new("^\\s*#{@options[:comment_chars]}\s?")
+ @template_file = @options[:template_file]
@sections = highlight(split(parse(@data)))
end
@@ -102,10 +104,14 @@ def initialize(filename, sources=[], options={}, &block)
# for building an index of other files.
attr_reader :sources
+ # An absolute path to a file that ought be used as a template for the
+ # HTML-rendered documentation.
+ attr_reader :template_file
+
# Generate HTML output for the entire document.
require 'rocco/layout'
def to_html
- Rocco::Layout.new(self).render
+ Rocco::Layout.new(self, @template_file).render
end
#### Internal Parsing and Highlighting
View
@@ -3,8 +3,11 @@
class Rocco::Layout < Mustache
self.template_path = File.dirname(__FILE__)
- def initialize(doc)
+ def initialize(doc, file=nil)
@doc = doc
+ if not file.nil?
+ Rocco::Layout.template_file = file
+ end
end
def title
@@ -15,9 +18,15 @@ def sections
num = 0
@doc.sections.map do |docs,code|
{
- :docs => docs,
- :code => code,
- :num => (num += 1)
+ :docs => docs,
+ :docs? => !docs.empty?,
+ :header? => /^<h.>.+<\/h.>$/.match( docs ),
+
+ :code => code,
+ :code? => !code.empty?,
+
+ :empty? => ( code.empty? && docs.empty? ),
+ :num => (num += 1)
}
end
end

0 comments on commit 236fb27

Please sign in to comment.