From b7fb04f63d7dfb294fea9f901300e065f0228f3a Mon Sep 17 00:00:00 2001
From: mazenovi <vmazenod@gmail.com>
Date: Wed, 17 May 2017 17:11:50 +0200
Subject: [PATCH] add extract_toc plugins to inernal links

---
 blog_limos.egg-info/PKG-INFO                  |  10 ++
 blog_limos.egg-info/SOURCES.txt               |   5 +
 blog_limos.egg-info/dependency_links.txt      |   1 +
 blog_limos.egg-info/requires.txt              |   3 +
 blog_limos.egg-info/top_level.txt             |   1 +
 .../documentation.md}                         |   4 +-
 content/pages/cours.md                        |   7 +-
 content/pages/moi.md                          |   9 +-
 content/pages/projets.md                      |   8 +-
 content/pages/recherche.md                    |   7 +-
 pelicanconf.py                                |   3 +-
 plugins/extract_toc/README.md                 | 137 ++++++++++++++++++
 plugins/extract_toc/__init__.py               |   1 +
 plugins/extract_toc/extract_toc.py            |  65 +++++++++
 plugins/pandoc_reader                         |   1 +
 15 files changed, 236 insertions(+), 26 deletions(-)
 create mode 100644 blog_limos.egg-info/PKG-INFO
 create mode 100644 blog_limos.egg-info/SOURCES.txt
 create mode 100644 blog_limos.egg-info/dependency_links.txt
 create mode 100644 blog_limos.egg-info/requires.txt
 create mode 100644 blog_limos.egg-info/top_level.txt
 rename content/{ispconfig/git-kit-survie.md => cri/documentation.md} (98%)
 create mode 100644 plugins/extract_toc/README.md
 create mode 100644 plugins/extract_toc/__init__.py
 create mode 100644 plugins/extract_toc/extract_toc.py
 create mode 160000 plugins/pandoc_reader

diff --git a/blog_limos.egg-info/PKG-INFO b/blog_limos.egg-info/PKG-INFO
new file mode 100644
index 0000000..ae8c751
--- /dev/null
+++ b/blog_limos.egg-info/PKG-INFO
@@ -0,0 +1,10 @@
+Metadata-Version: 1.0
+Name: blog-limos
+Version: 1.0
+Summary: UNKNOWN
+Home-page: UNKNOWN
+Author: UNKNOWN
+Author-email: UNKNOWN
+License: UNKNOWN
+Description: UNKNOWN
+Platform: UNKNOWN
diff --git a/blog_limos.egg-info/SOURCES.txt b/blog_limos.egg-info/SOURCES.txt
new file mode 100644
index 0000000..85f59b0
--- /dev/null
+++ b/blog_limos.egg-info/SOURCES.txt
@@ -0,0 +1,5 @@
+blog_limos.egg-info/PKG-INFO
+blog_limos.egg-info/SOURCES.txt
+blog_limos.egg-info/dependency_links.txt
+blog_limos.egg-info/requires.txt
+blog_limos.egg-info/top_level.txt
\ No newline at end of file
diff --git a/blog_limos.egg-info/dependency_links.txt b/blog_limos.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/blog_limos.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/blog_limos.egg-info/requires.txt b/blog_limos.egg-info/requires.txt
new file mode 100644
index 0000000..6adec76
--- /dev/null
+++ b/blog_limos.egg-info/requires.txt
@@ -0,0 +1,3 @@
+pelican
+markdown
+beautifulsoup4
diff --git a/blog_limos.egg-info/top_level.txt b/blog_limos.egg-info/top_level.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/blog_limos.egg-info/top_level.txt
@@ -0,0 +1 @@
+
diff --git a/content/ispconfig/git-kit-survie.md b/content/cri/documentation.md
similarity index 98%
rename from content/ispconfig/git-kit-survie.md
rename to content/cri/documentation.md
index 8574084..fc77a18 100644
--- a/content/ispconfig/git-kit-survie.md
+++ b/content/cri/documentation.md
@@ -1,5 +1,5 @@
-Title: Les documentations ISIMA/LIMOS (cri ou utilisateur)
-Date: 2017-05-03 10:20
+Title: Les documentations cri et utilisateur pour ISIMA/LIMOS
+Date: 2017-05-16 10:20
 Status: Published
 Tags: doc, admin, www
 
diff --git a/content/pages/cours.md b/content/pages/cours.md
index 6bfc9b2..a00ec6b 100644
--- a/content/pages/cours.md
+++ b/content/pages/cours.md
@@ -1,7 +1,4 @@
 Title: <i class="fa fa-graduation-cap" aria-hidden="true"></i> Cours
-Date: 2010-12-30 10:25
-Category: pipo
-Tags: pipo, mollo
+Date: 2017-05-16 10:25
 
-## Following is a review of my favorite mechanical keyboard.
- page
+## Cette page est actuellement en cours de construction
diff --git a/content/pages/moi.md b/content/pages/moi.md
index 4e1c42a..f50523f 100644
--- a/content/pages/moi.md
+++ b/content/pages/moi.md
@@ -1,9 +1,4 @@
 Title: <i class="fa fa-briefcase" aria-hidden="true"></i> &Agrave; propos
-Date: 2010-12-28 10:27
-Category: pipo
-Tags: pipo, mollo
+Date: 2010-05-17 10:27
 
-## Following is a review of my favorite mechanical keyboard.
-
-
- page
+## Cette page est actuellement en cours de construction
diff --git a/content/pages/projets.md b/content/pages/projets.md
index 1c545c3..6cdeac4 100644
--- a/content/pages/projets.md
+++ b/content/pages/projets.md
@@ -1,8 +1,4 @@
 Title: <i class="fa fa-cogs" aria-hidden="true"></i> Projets
-Date: 2010-12-12 10:25
+Date: 2010-05-17 10:27
 
-
-
-## Following is a review of my favorite mechanical keyboard.
-
- page
+## Cette page est actuellement en cours de construction
diff --git a/content/pages/recherche.md b/content/pages/recherche.md
index 1cde025..2d40896 100644
--- a/content/pages/recherche.md
+++ b/content/pages/recherche.md
@@ -1,7 +1,4 @@
 Title: <i class="fa fa-flask" aria-hidden="true"></i> Recherche
-Date: 2010-12-29 10:26
-Category: pipo
-Tags: pipo, mollo
+Date: 2010-05-17 10:27
 
-## Following is a review of my favorite mechanical keyboard.
- page
+## Cette page est actuellement en cours de construction
diff --git a/pelicanconf.py b/pelicanconf.py
index cfdc68a..1540b5f 100644
--- a/pelicanconf.py
+++ b/pelicanconf.py
@@ -94,7 +94,8 @@ DISPLAY_CATEGORIES_ON_MENU = False
 THEME = os.path.dirname(os.path.abspath(__file__)) + "/themes/limos"
 JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
 PLUGIN_PATHS = [os.path.dirname(os.path.abspath(__file__)) + '/plugins']
-PLUGINS = ['i18n_subsites', 'tag_cloud', 'tipue_search']
+PLUGINS = ['i18n_subsites', 'tag_cloud', 'tipue_search', 'extract_toc'] #, 'pandoc_reader']
+MARKDOWN = {'extensions': ['toc']}
 I18N_TEMPLATES_LANG = 'en'
 # https://bootswatch.com/
 SHOW_ARTICLE_AUTHOR = False
diff --git a/plugins/extract_toc/README.md b/plugins/extract_toc/README.md
new file mode 100644
index 0000000..40d2bee
--- /dev/null
+++ b/plugins/extract_toc/README.md
@@ -0,0 +1,137 @@
+Extract Table of Content
+========================
+
+A Pelican plugin to extract table of contents (ToC) from `article.content` and
+place it in its own `article.toc` variable for use in templates.
+
+Copyright (c) Talha Mansoor
+
+Author          | Talha Mansoor
+----------------|-----
+Author Email    | talha131@gmail.com
+Author Homepage | http://onCrashReboot.com
+Github Account  | https://github.com/talha131
+
+
+Acknowledgement
+---------------
+
+Thanks to [Avaris](https://github.com/avaris) for going out of the way to help
+me fix Unicode issues and doing a thorough code review.
+
+Thanks to [gw0](http://gw.tnode.com/) for adding Pandoc reader support.
+
+
+Why do you need it?
+===================
+
+Pelican can generate ToC of reST and Markdown files, using markup's respective
+directive and extension. Such ToC is generated and placed at the beginning of
+`article.content` like a string. Consequently it can not be placed anywhere
+else on the page (eg. `<nav>` HTML5 tag, in header, or at the end of your
+article's contents).
+
+To solve this problem, this plugin extracts ToC from `article.content` and
+places it in its own `article.toc` variable for use in templates.
+
+
+Requirements
+============
+
+`extract_toc` requires BeautifulSoup.
+
+```bash
+pip install beautifulsoup4
+```
+
+
+How to Use
+==========
+
+This plugin works by extracting the first occurrence of enclosed in:
+
+- `<div class="toc">` for the default Markdown reader
+- `<div class="contents topic">` for the default reStructuredText reader
+- `<nav class="TOC">` for the Pandoc reader
+
+If ToC appears in your article at more than one places, `extract_toc` will
+remove only the first occurrence. You shouldn't probably need to have multiple
+ToC in your article. In case you need to display it multiple times, you can
+print it via your template.
+
+
+Template example
+----------------
+
+Add something like this to your Pelican templates if missing:
+
+```python
+{% if article.toc %}
+    <nav class="toc">
+    {{ article.toc }}
+    </nav>
+{% endif %}
+```
+
+
+reStructuredText reader
+-----------------------
+
+To add a table of contents to your reStructuredText document (`.rst`) you need to add a `.. contents::` directive to its beginning. See the [docutils documentation](http://docutils.sourceforge.net/docs/ref/rst/directives.html#table-of-contents) for more details.
+
+```rst
+My super title
+##############
+
+:date: 2010-10-03
+:tags: thats, awesome
+
+.. contents::
+..
+   1  Head 1
+     1.1  Head 2
+   2  Head 3
+   3  head 4
+
+Heading 1
+---------
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.
+```
+
+
+Markdown reader
+---------------
+
+To enable table of contents generation for the Markdown reader you need to set `MD_EXTENSIONS = (['toc'])` in your Pelican configuration file.
+
+To add a table of contents to your Markdown document (`.md`) you need to place the `[TOC]` marker to its beginning. See the [Python Markdown documentation](http://pythonhosted.org/Markdown/extensions/toc.html) for more details.
+
+```markdown
+title: My super title
+date: 4-4-2013
+tags: thats, awesome
+
+[TOC]
+
+# Heading 1 #
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.
+```
+
+
+Pandoc reader
+-------------
+
+To enable table of contents generation for the Pandoc reader you need to set `PANDOC_ARGS = (['--toc', '--template=pandoc-template-toc'])` in your Pelican configuration file.
+
+Contents of the Pandoc template file `pandoc-template-toc.html5`:
+
+```html
+$if(toc)$
+<nav id="TOC">
+$toc$
+</nav>
+$endif$
+$body$
+```
diff --git a/plugins/extract_toc/__init__.py b/plugins/extract_toc/__init__.py
new file mode 100644
index 0000000..52c5778
--- /dev/null
+++ b/plugins/extract_toc/__init__.py
@@ -0,0 +1 @@
+from .extract_toc import *
diff --git a/plugins/extract_toc/extract_toc.py b/plugins/extract_toc/extract_toc.py
new file mode 100644
index 0000000..415e618
--- /dev/null
+++ b/plugins/extract_toc/extract_toc.py
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+"""
+Extract Table of Content
+========================
+
+A Pelican plugin to extract table of contents (ToC) from `article.content` and
+place it in its own `article.toc` variable for use in templates.
+"""
+
+from os import path
+from bs4 import BeautifulSoup
+from pelican import signals, readers, contents
+import logging
+import os
+
+logger = logging.getLogger(__name__)
+
+
+def extract_toc(content):
+    if isinstance(content, contents.Static):
+        return
+
+    soup = BeautifulSoup(content._content, 'html.parser')
+    filename = content.source_path
+    extension = path.splitext(filename)[1][1:]
+    toc = None
+
+    # default Markdown reader
+    if not toc and readers.MarkdownReader.enabled and extension in readers.MarkdownReader.file_extensions:
+        toc = soup.find('div', class_='toc')
+        if toc:
+            toc.extract()
+
+    # default reStructuredText reader
+    if not toc and readers.RstReader.enabled and extension in readers.RstReader.file_extensions:
+        toc = soup.find('div', class_='contents topic')
+        if toc:
+            toc.extract()
+            tag = BeautifulSoup(str(toc), 'html.parser')
+            tag.div['class'] = 'toc'
+            tag.div['id'] = ''
+            p = tag.find('p', class_='topic-title first')
+            if p:
+                p.extract()
+            toc = tag
+
+    # Pandoc reader (markdown and other formats)
+    if 'pandoc_reader' in content.settings['PLUGINS']:
+        try:
+            from pandoc_reader import PandocReader
+        except ImportError:
+            PandocReader = False
+        if not toc and PandocReader and PandocReader.enabled and extension in PandocReader.file_extensions:
+            toc = soup.find('nav', id='TOC')
+
+    if toc:
+        toc.extract()
+        content._content = soup.decode()
+        content.toc = toc.decode()
+        if content.toc.startswith('<html>'):
+            content.toc = content.toc[12:-14]
+
+
+def register():
+    signals.content_object_init.connect(extract_toc)
diff --git a/plugins/pandoc_reader b/plugins/pandoc_reader
new file mode 160000
index 0000000..9ef0197
--- /dev/null
+++ b/plugins/pandoc_reader
@@ -0,0 +1 @@
+Subproject commit 9ef0197eed5d141bf0f3b9a8468cd37ad3e5fbd7
-- 
GitLab