ctags_generator.py 795 B

123456789101112131415161718192021222324252627
  1. import os
  2. from pelican import signals
  3. CTAGS_TEMPLATE = '''{% for tag, articles in tags_articles %}
  4. {% for article in articles %}
  5. {{tag}}\t{{article}}\t0;"\ttag
  6. {% endfor %}
  7. {% endfor %}
  8. '''
  9. def generate_ctags(article_generator, writer):
  10. tags_file_path = os.path.join(article_generator.path, 'tags')
  11. article_generator.settings.setdefault('WRITE_SELECTED', []).append(tags_file_path)
  12. writer.output_path = article_generator.path
  13. try:
  14. writer.write_file('tags', article_generator.env.from_string(CTAGS_TEMPLATE), article_generator.context,
  15. tags_articles=sorted(article_generator.tags.items()))
  16. finally:
  17. writer.output_path = article_generator.output_path
  18. def register():
  19. signals.article_writer_finalized.connect(generate_ctags)