1. #! /usr/bin/env python
  2.  
  3. import sys
  4. import getopt
  5.  
  6. def css_block(selector, rule, comment):
  7. return "%s { \t%s /* %s */ } " % (selector, rule, comment)
  8. def usage():
  9. print "%s: [OPTION]..." % (sys.argv[0], )
  10. print "Try to convert pixels to em "
  11. print "Options can be:"
  12. print "\t -h, --help\t\tthis help"
  13. print "\t -c, --css\t\tturns on fancy css ouput (default: off)"
  14. print "\t -s, --start\t\tstart range for conversion (default 14)"
  15. print "\t -e, --end\t\tend range for conversion (default 16)"
  16. print "\t -p, --px_size\t\tbrowser default font size (default 16)"
  17. print "\t -d, --em_size\t\tbase font size for body, in em (default 1)"
  18. print
  19.  
  20. def main():
  21. try:
  22. opts, args = getopt.getopt(sys.argv[1:],
  23. "hcs:e:p:d:",
  24. ["help", "css", "start=", "end=", "px_size=", "em_size="])
  25. except getopt.GetoptError:
  26. usage()
  27. sys.exit(2)
  28. px_size = 16 # default font-size, in pixels. == 1em
  29. em_size = 1 # base font-size, i.e. in the body rule, in ems
  30. convert_start_size = 14 # give results starting with this size in px...
  31. convert_end_size = 16 # and ending with this one.
  32. generate_useless_css_rules_mode = False # generate css rules
  33. for o, a in opts:
  34. if o in ("-h", "--help"):
  35. usage()
  36. sys.exit()
  37. if o in ("-c", "--css"):
  38. generate_useless_css_rules_mode = True
  39. if o in ("-s", "--start"):
  40. convert_start_size = int(a)
  41. if o in ("-e", "--end"):
  42. convert_end_size = int(a)
  43. if o in ("-p", "--px_size"):
  44. px_size = float(a)
  45. if o in ("-d", "--em_size"):
  46. em_size = float(a)
  47. if not generate_useless_css_rules_mode:
  48. print "if %.3fem == %.2fpx," % (1, px_size),
  49. if em_size != 1:
  50. print "and base font size is %.3fem" % (em_size, ),
  51. print "then:"
  52. else:
  53. selector = "body"
  54. comment = "(default size assumed: %.2fpx)" % (px_size)
  55. rule = "font-size: %.3fem;" % (em_size, )
  56. print css_block(selector, rule, comment)
  57. for px in range(convert_start_size, convert_end_size + 1):
  58. em = (float(px) / float(px_size)) / float(em_size)
  59. if generate_useless_css_rules_mode:
  60. selector = "element_%d" % (px, )
  61. rule = "font-size: %.3fem;" % (em, )
  62. comment = "(%dpx)" % (px, )
  63. print css_block(selector, rule, comment)
  64. else:
  65. print "\t%.3fem == %dpx" % (em, px)
  66. if __name__ == "__main__":
  67. main()