#! /usr/bin/env python

import sys
import getopt

def css_block(selector, rule, comment):
	return "%s\n{\n\t%s /* %s */ \n}\n" % (selector, rule, comment)
	
def usage():
	print "%s: [OPTION]..." % (sys.argv[0], )
	print "Try to convert pixels to em\n"
	print "Options can be:"
	print "\t -h, --help\t\tthis help"
	print "\t -c, --css\t\tturns on fancy css ouput (default: off)"
	print "\t -s, --start\t\tstart range for conversion (default 14)"
	print "\t -e, --end\t\tend range for conversion (default 16)"
	print "\t -p, --px_size\t\tbrowser default font size (default 16)"
	print "\t -d, --em_size\t\tbase font size for body, in em (default 1)"
	print

def main():
	try:
		opts, args = getopt.getopt(sys.argv[1:],
		        "hcs:e:p:d:", 
			["help", "css", "start", "end", "px_size", "em_size"])
	except getopt.GetoptError:
		usage()
		sys.exit(2)
	
	px_size = 16	# default font-size, in pixels. == 1em
	em_size = 1	# base font-size, i.e. in the body rule, in ems 
	convert_start_size = 14	# give results starting with this size in px...
	convert_end_size  = 16	# and ending with this one.
	generate_useless_css_rules_mode = False	# generate css rules
	
	for o, a in opts:
		if o in ("-h", "--help"):
			usage()
			sys.exit()
		if o in ("-c", "--css"):
			generate_useless_css_rules_mode = True
		if o in ("-s", "--start"):
			convert_start_size = int(a)
		if o in ("-e", "--end"):
			convert_end_size = int(a)
		if o in ("-p", "--px_size"):
			px_size = float(a)
		if o in ("-d", "--em_size"):
			em_size = float(a)
			
	if not generate_useless_css_rules_mode:
		print "if %.3fem == %.2fpx," % (1, px_size),
		if em_size != 1:
			print "and base font size is %.3fem" % (em_size, ),
		print "then:"
	else:
		selector = "body"
		comment = "(default size assumed: %.2fpx)" % (px_size)
		rule = "font-size: %.3fem;" % (em_size, )
		print css_block(selector, rule, comment)
		
	for px in range(convert_start_size, convert_end_size + 1):
		em = (float(px) / float(px_size)) / float(em_size)
		if generate_useless_css_rules_mode:
			selector = "element_%d" % (px, )
			rule = "font-size: %.3fem;" % (em, )
			comment = "(%dpx)" % (px, )
			print css_block(selector, rule, comment)
		else:
			print "\t%.3fem == %dpx" % (em, px)
			
if __name__ == "__main__":
	main()
    
