Przeglądaj źródła

Adding a plugin for members listing

Better phrasing as pointed out on pull request

Adding support for markdown content

Using OrderedDict instead of dict to keep content order
Danilo Shiga 10 lat temu
rodzic
commit
e5f771b4ce
3 zmienionych plików z 61 dodań i 0 usunięć
  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)