/hyde/ext/plugins/syntext.py

http://github.com/hyde/hyde · Python · 57 lines · 21 code · 8 blank · 28 comment · 1 complexity · 8bebdd7e8da9b5c68683efefcee92585 MD5 · raw file

  1. # -*- coding: utf-8 -*-
  2. """
  3. Syntext plugin
  4. """
  5. from hyde.plugin import TextyPlugin
  6. class SyntextPlugin(TextyPlugin):
  7. """
  8. The plugin class for syntax text replacement.
  9. """
  10. def __init__(self, site):
  11. super(SyntextPlugin, self).__init__(site)
  12. @property
  13. def tag_name(self):
  14. """
  15. The syntax tag.
  16. """
  17. return 'syntax'
  18. @property
  19. def default_open_pattern(self):
  20. """
  21. The default pattern for block open text.
  22. """
  23. return '^\s*~~~+\s*([A-Za-z0-9_\-\.:\']+)\s*~*\s*$'
  24. @property
  25. def default_close_pattern(self):
  26. """
  27. The default pattern for block close text.
  28. """
  29. return '^\s*~~~+\s*$'
  30. def get_params(self, match, start=True):
  31. """
  32. ~~~css~~~ will return css
  33. ~~~css/style.css will return css,style.css
  34. """
  35. params = super(SyntextPlugin, self).get_params(match, start)
  36. if ':' in params:
  37. (lex, _, filename) = params.rpartition(':')
  38. params = 'lex=\'%(lex)s\',filename=\'%(filename)s\'' % locals()
  39. return params
  40. def text_to_tag(self, match, start=True):
  41. """
  42. Replace open pattern (default:~~~~~css~~~~~~)
  43. with
  44. {% syntax css %} or equivalent and
  45. Replace close pattern (default: ~~~~~~)
  46. with
  47. {% endsyntax %} or equivalent
  48. """
  49. return super(SyntextPlugin, self).text_to_tag(match, start)