module Ronn::Server
def self.new(files, options={})
def self.new(files, options={}) files = Dir[files] if files.respond_to?(:to_str) raise ArgumentError, "no files" if files.empty? Sinatra.new do set :show_exceptions, true set :public, File.expand_path(__FILE__, '../templates') set :static, false set :views, File.expand_path(__FILE__, '../templates') get '/' do files.map do |f| base = File.basename(f, '.ronn') "<li><a href='./#{base}.html'>#{escape_html(base)}</a></li>" end end def styles params[:styles] ||= params[:style] case when params[:styles].respond_to?(:to_ary) params[:styles] when params[:styles] params[:styles].split(/[, ]+/) else [] end end files.each do |file| basename = File.basename(file, '.ronn') get "/#{basename}.html" do options = options.merge(:styles => styles) %w[date manual organization].each do |attribute| next if !params[attribute] options[attribute] = params[attribute] end Ronn::Document.new(file, options).to_html end get "/#{basename}.roff" do content_type 'text/plain+roff' Ronn::Document.new(file, options.dup).to_roff end end end end