Просмотр исходного кода

Merge pull request #596 from daneoshiga/members

Add Members plugin to list member info in metadata
Justin Mayer лет назад: 9
Родитель
Сommit
5f3c470a77
3 измененных файлов с 61 добавлено и 0 удалено
  1. 22 0
      members/Readme.rst
  2. 1 0
      members/__init__.py
  3. 38 0
      members/members.py

+ 22 - 0
members/Readme.rst

@@ -0,0 +1,22 @@
+Members
+-------
+
+This plugin looks for a ``members`` metadata header containing key/value pairs
+and makes them available for use in templates
+
+The first line of the members metadata defines each key, and the following
+lines contain corresponding values for each member.
+
+The key line must be in the same line as the metadata name 'members', and each
+member data must have an identation before it.
+
+In ReSTructuredText::
+
+    :members: nome, email, twitter, github, site_nome, site_href
+        Danilo Shiga, daniloshiga@gmail.com, @daneoshiga, daneoshiga, Danilo Shiga, http://daniloshiga.com
+
+
+In Markdown::
+
+    members: nome, email, twitter, github, site_nome, site_href
+        Danilo Shiga, daniloshiga@gmail.com, @daneoshiga, daneoshiga, Danilo Shiga, http://daniloshiga.com

+ 1 - 0
members/__init__.py

@@ -0,0 +1 @@
+from members import *  # noqa

+ 38 - 0
members/members.py

@@ -0,0 +1,38 @@
+"""
+Members info plugin for Pelican
+===============================
+
+This plugin looks for a ``members`` metadata header containing key/value pairs
+and makes them available for use in templates
+
+The first line of the members metadata defines each key, and the following
+lines contain corresponding values for each member.
+
+:members: nome, email, twitter, github, site_nome, site_href
+    Danilo Shiga, daniloshiga@gmail.com, @daneoshiga, daneoshiga, Danilo Shiga, http://daniloshiga.com
+"""
+
+from collections import OrderedDict
+
+from pelican import signals
+
+
+def add_members(generator, metadata):
+
+    if 'members' in metadata.keys():
+        # Dealing with differences on metadata for md and rst content
+        if type(metadata['members']) == list:
+            members = metadata['members']
+        else:
+            members = metadata['members'].splitlines()
+
+        metadata['members'] = OrderedDict()
+        keys = map(unicode.strip, members[0].split(','))
+        for member in members[1:]:
+            values = map(unicode.strip, member.split(','))
+            member_dict = dict(zip(keys, values))
+            metadata['members'][member_dict['nome']] = member_dict
+
+
+def register():
+    signals.page_generator_context.connect(add_members)