2007-01-18 22:24:27 +00:00
|
|
|
require 'erb'
|
|
|
|
|
|
|
|
class String
|
|
|
|
def lines
|
|
|
|
split $/
|
|
|
|
end
|
|
|
|
|
|
|
|
def strip_whitespace_at_line_ends
|
|
|
|
lines.map {|line| line.gsub(/\s+$/, '')} * $/
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
module Protodoc
|
|
|
|
module Environment
|
|
|
|
def include(*filenames)
|
|
|
|
filenames.map {|filename| Preprocessor.new(filename).to_s}.join("\n")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class Preprocessor
|
|
|
|
include Environment
|
|
|
|
|
|
|
|
def initialize(filename)
|
2008-12-11 10:43:15 +00:00
|
|
|
filename = File.join(filename.split('/'))
|
2007-01-18 22:24:27 +00:00
|
|
|
@filename = File.expand_path(filename)
|
|
|
|
@template = ERB.new(IO.read(@filename), nil, '%')
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_s
|
|
|
|
@template.result(binding).strip_whitespace_at_line_ends
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if __FILE__ == $0
|
|
|
|
print Protodoc::Preprocessor.new(ARGV.first)
|
|
|
|
end
|