#!/usr/bin/ruby -w

require 'getoptlong'

def	help
	puts "Usage: #{$0} [options]"
	puts "\t-h --help\t\tthis help."
	puts "\t-f --file\t\toutput file."
	puts "\t-n --num\t\tcharset: 0123456789"
	puts "\t-a --alpha\t\tcharset: abcdefghijklmnopqrstuvwxyz"
	puts "\t-A --alphamaj\t\tcharset: ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	puts "\t-l --alphanum\t\tcharset: alpha + num"
	puts "\t-l --alphanummaj\tcharset: alpha + alphamaj + num"
	puts "\t-s --all\t\tcharset: alpha + alphamaj + num + !@#$+=.*"
	puts "\t-c --custom"
	puts "\nExample:\n"
	puts "#{$0} -f stats -s"
	puts "#{$0} -f stats -c \"0123abc+=\""
	exit
end

ch_alpha 	= 'abcdefghijklmnopqrstuvwxyz'
ch_num 		= '0123456789'
ch_sp		= '!@#$+=.*'

opts = GetoptLong.new(
	[ '--help', '-h', GetoptLong::NO_ARGUMENT ],
	[ '--file', '-f', GetoptLong::OPTIONAL_ARGUMENT],
	[ '--all', '-s', GetoptLong::NO_ARGUMENT],
	[ '--num', '-n', GetoptLong::NO_ARGUMENT],
	[ '--alpha', '-a', GetoptLong::NO_ARGUMENT ],
	[ '--alphamaj', '-A', GetoptLong::NO_ARGUMENT ],
	[ '--alphanum', '-l', GetoptLong::NO_ARGUMENT ],
	[ '--alphanummaj', '-L', GetoptLong::NO_ARGUMENT ],
	[ '--custom', '-c', GetoptLong::OPTIONAL_ARGUMENT ]
)

charset = nil
filename = "stats_out"

opts.each do |opt, arg|
	case opt
	when '--help'
		help
	when '--file'
		filename = arg
	when '--num'
		charset = ch_num
	when '--alpha'
		charset = ch_alpha
	when '--alphamaj'
		charset = ch_alpha.capitalize
	when '--alphanum'
		charset = ch_alpha + ch_num
	when '--alphanummaj'
		charset = ch_alpha.capitalize + ch_num
	when '--all'
		charset = ch_alpha + ch_alpha.capitalize + ch_num + ch_sp
	when '--custom'
		charset = arg
	end
end


if charset == nil
	help
end


fstat = File.open(filename, "w")
charset.each_byte do |c|
	fstat.write("1=proba1[#{c.to_s}]\n")
	charset.each_byte do |tmp|
		fstat.write("1=proba2[#{c.to_s}*256+#{tmp.to_s}]\n")
	end
end
fstat.close
