#!/usr/pkg/bin/ruby193
#
# = 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.read
		else
			contents = File::read( file )
		end

		bc = BlueCloth::new( contents )
		$stderr.puts "Using BlueCloth version #{BlueCloth::VERSION}"

		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

