/hyde/layout.py

http://github.com/hyde/hyde · Python · 46 lines · 21 code · 8 blank · 17 comment · 4 complexity · fd199b74f184fb4bb1ad8f7e8cab2543 MD5 · raw file

  1. # -*- coding: utf-8 -*-
  2. """
  3. Classes, functions and utilties related to hyde layouts
  4. """
  5. import os
  6. from fswrap import File, Folder
  7. from hyde._compat import str
  8. HYDE_DATA = "HYDE_DATA"
  9. LAYOUTS = "layouts"
  10. class Layout(object):
  11. """
  12. Represents a layout package
  13. """
  14. @staticmethod
  15. def find_layout(layout_name='basic'):
  16. """
  17. Find the layout with a given name.
  18. Search order:
  19. 1. env(HYDE_DATA)
  20. 2. <hyde script path>/layouts/
  21. """
  22. layout_folder = None
  23. if HYDE_DATA in os.environ:
  24. layout_folder = Layout._get_layout_folder(
  25. os.environ[HYDE_DATA], layout_name)
  26. if not layout_folder:
  27. layout_folder = Layout._get_layout_folder(
  28. File(__file__).parent, layout_name)
  29. return layout_folder
  30. @staticmethod
  31. def _get_layout_folder(root, layout_name='basic'):
  32. """
  33. Finds the layout folder from the given root folder.
  34. If it does not exist, return None
  35. """
  36. layouts_folder = Folder(str(root)).child_folder(LAYOUTS)
  37. layout_folder = layouts_folder.child_folder(layout_name)
  38. return layout_folder if layout_folder.exists else None