instiki/vendor/bluecloth-1.0.0/bin/bluecloth
2005-01-15 20:26:54 +00:00

83 lines
1.3 KiB
Ruby
Executable file

#!/usr/bin/ruby
#
# = bluecloth
#
# Format one or more text files with the markdown formatter.
#
# = Synopsis
#
# bluecloth [OPTIONS] [FILES]
#
#
#
BEGIN {
require 'bluecloth'
require 'optparse'
}
DocumentWrapper = %{
<html>
<head><title>%s</title></head>
<body>
%s
</body>
</html>
}
def main
fragment = false
destination = '.'
ARGV.options do |oparser|
oparser.banner = "Usage: #$0 [OPTIONS] FILES"
# Debug mode
oparser.on( "--debug", "-d", TrueClass, "Turn debugging output on" ) {
$DEBUG = true
}
# 'Fragment' mode
oparser.on( "--fragment", "-f", TrueClass,
"Output HTML fragments instead of whole documents" ) {
fragment = true
}
# Output destination
#oparser.on( "--output=DESTINATION", "-o DESTINATION", String,
# "Write output to DESTINATION instead of the current directory" ) {|arg|
# destination = arg
#}
oparser.parse!
end
# Filter mode if no arguments
ARGV.push( "-" ) if ARGV.empty?
ARGV.each {|file|
if file == '-'
contents = $stdin.readlines(nil)
else
contents = File::readlines( file, nil )
end
bc = BlueCloth::new( contents.join )
if fragment
$stdout.puts bc.to_html
else
$stdout.puts DocumentWrapper % [ file, bc.to_html ]
end
}
rescue => err
$stderr.puts "Aborting: Fatal error: %s" % err.message
exit 255
end
main