Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

jsnamespace.py 1.2 KiB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. class jsNamespace:
  2. package_prefix = '_'
  3. @staticmethod
  4. def modname_to_filename(modname,jsdir, ext='.js'):
  5. import os
  6. path = modname.replace('.',os.sep)
  7. path = os.path.join(jsdir,path)
  8. if jsNamespace.is_package(modname,jsdir):
  9. packagename = jsNamespace.getmodfilename(modname)
  10. path = os.path.join(path,packagename)
  11. elif jsNamespace.is_jsfile(modname,jsdir,ext):
  12. path = path + ext
  13. else:
  14. path = 'notf' # TODO raise exception that it doesnt exist
  15. return path
  16. @staticmethod
  17. def is_package(modname,jsdir):
  18. import os
  19. path = modname.replace('.',os.sep)
  20. path = os.path.join(jsdir,path)
  21. return os.path.isdir(path)
  22. @staticmethod
  23. def is_jsfile(modname,jsdir,ext='.js'):
  24. import os
  25. path = modname.replace('.',os.sep)
  26. path = os.path.join(jsdir,path)
  27. return os.path.isfile(path + ext)
  28. @staticmethod
  29. def getmodname(modpath,ext='.js'):
  30. """
  31. returns filename for the stiched file
  32. """
  33. import os
  34. b = modpath.split(os.sep)
  35. modname = jsNamespace.package_prefix + b[-1] + ext
  36. return modname
  37. @staticmethod
  38. def getmodfilename(modname,ext='.js'):
  39. ret = modname.split('.')
  40. ret = ret[-1]
  41. ret = jsNamespace.getmodname(ret)
  42. return ret