pjjs.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/usr/bin/env python
  2. #
  3. # TODO explain
  4. #
  5. # -- Copyright 2007 IGN France / Geoportail project --
  6. #
  7. import sys
  8. import os
  9. import re
  10. SUFFIX_JAVASCRIPT = ".js"
  11. def _pjcat2js_remove(rezDirectory,catName,targetDirectory):
  12. pjCatFilename = os.path.join(rezDirectory, catName)
  13. pjCat = open(pjCatFilename,'r')
  14. comment_re = re.compile("^#")
  15. srsdef_re = re.compile("^<([^>]*)>.* <>$")
  16. l = pjCat.readline()
  17. while len(l) != 0:
  18. if comment_re.search(l) is None:
  19. srsdef_mo = srsdef_re.match(l)
  20. srsdef_fn = os.path.join(targetDirectory, catName+srsdef_mo.group(1)+".js")
  21. if os.path.exists(srsdef_fn):
  22. os.remove(srsdef_fn)
  23. l = pjCat.readline()
  24. pjCat.close()
  25. def _pjcat2js_make(rezDirectory,catName,targetDirectory):
  26. pjCatFilename = os.path.join(rezDirectory, catName)
  27. pjCat = open(pjCatFilename,'r')
  28. comment_re = re.compile("^#")
  29. srsdef_re = re.compile("^<([^>]*)> *(.*) <>$")
  30. l = pjCat.readline()
  31. while len(l) != 0:
  32. if comment_re.search(l) is None:
  33. srsdef_mo = srsdef_re.match(l)
  34. srsdef_fn = os.path.join(targetDirectory, catName+srsdef_mo.group(1)+".js")
  35. srsdef = 'Proj4js.defs["'+catName+':'+srsdef_mo.group(1)+'"]="'+srsdef_mo.group(2)+'";'
  36. file(srsdef_fn,'w').write(srsdef)
  37. l = pjCat.readline()
  38. pjCat.close()
  39. def pjcat2js_clean(rezDirectory,targetDirectory):
  40. if not os.path.isdir(rezDirectory):
  41. return
  42. if not os.path.isdir(targetDirectory):
  43. return
  44. if os.path.abspath(rezDirectory) == '/':
  45. return
  46. if os.path.abspath(targetDirectory) == '/':
  47. return
  48. rezDirectory_name_len = len(rezDirectory)
  49. for root, dirs, filenames in os.walk(rezDirectory):
  50. if 'CVS' in dirs:
  51. dirs.remove('CVS')
  52. if '.svn' in dirs:
  53. dirs.remove('.svn')
  54. for filename in filenames:
  55. if not filename.endswith(SUFFIX_JAVASCRIPT) and not filename.startswith("."):
  56. filepath = os.path.join(root, filename)[rezDirectory_name_len+1:]
  57. filepath = filepath.replace("\\", "/")
  58. _pjcat2js_remove(rezDirectory,filepath,targetDirectory)
  59. def pjcat2js_run(rezDirectory,targetDirectory):
  60. if not os.path.isdir(rezDirectory):
  61. return
  62. if not os.path.isdir(targetDirectory):
  63. return
  64. if os.path.abspath(rezDirectory) == '/':
  65. return
  66. if os.path.abspath(targetDirectory) == '/':
  67. return
  68. rezDirectory_name_len = len(rezDirectory)
  69. for root, dirs, filenames in os.walk(rezDirectory):
  70. if 'CVS' in dirs:
  71. dirs.remove('CVS')
  72. if '.svn' in dirs:
  73. dirs.remove('.svn')
  74. for filename in filenames:
  75. if not filename.endswith(SUFFIX_JAVASCRIPT) and not filename.startswith("."):
  76. filepath = os.path.join(root, filename)[rezDirectory_name_len+1:]
  77. filepath = filepath.replace("\\", "/")
  78. _pjcat2js_make(rezDirectory,filepath,targetDirectory)