Bladeren bron

Configuration update

* Add Flex theme
* Update Makefile for SSH connection
* Add i18n and representative_image plugins
* Add a page for feeds by category
* Some general fixes
theenglishway (time) 8 jaren geleden
bovenliggende
commit
aa2b8b6808
100 gewijzigde bestanden met toevoegingen van 8020 en 14 verwijderingen
  1. 2 0
      Makefile
  2. BIN
      content/images/favicon.ico
  3. 11 0
      content/pages/category-feeds.md
  4. 165 0
      pelican-plugins/i18n_subsites/README.rst
  5. 1 0
      pelican-plugins/i18n_subsites/__init__.py
  6. 450 0
      pelican-plugins/i18n_subsites/i18n_subsites.py
  7. 128 0
      pelican-plugins/i18n_subsites/implementing_language_buttons.rst
  8. 200 0
      pelican-plugins/i18n_subsites/localizing_using_jinja2.rst
  9. 0 0
      pelican-plugins/i18n_subsites/test_data/content/images/img.png
  10. 7 0
      pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-cz.rst
  11. 7 0
      pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-de.rst
  12. 7 0
      pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-en.rst
  13. 5 0
      pelican-plugins/i18n_subsites/test_data/content/pages/untranslated-page.rst
  14. 8 0
      pelican-plugins/i18n_subsites/test_data/content/translated_article-cz.rst
  15. 8 0
      pelican-plugins/i18n_subsites/test_data/content/translated_article-de.rst
  16. 8 0
      pelican-plugins/i18n_subsites/test_data/content/translated_article-en.rst
  17. 9 0
      pelican-plugins/i18n_subsites/test_data/content/untranslated_article-en.rst
  18. 2 0
      pelican-plugins/i18n_subsites/test_data/localized_theme/babel.cfg
  19. 23 0
      pelican-plugins/i18n_subsites/test_data/localized_theme/messages.pot
  20. 0 0
      pelican-plugins/i18n_subsites/test_data/localized_theme/static/style.css
  21. 7 0
      pelican-plugins/i18n_subsites/test_data/localized_theme/templates/base.html
  22. BIN
      pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.mo
  23. 23 0
      pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.po
  24. 53 0
      pelican-plugins/i18n_subsites/test_data/pelicanconf.py
  25. 139 0
      pelican-plugins/i18n_subsites/test_i18n_subsites.py
  26. 45 0
      pelican-plugins/representative_image/Readme.md
  27. 1 0
      pelican-plugins/representative_image/__init__.py
  28. 50 0
      pelican-plugins/representative_image/representative_image.py
  29. 68 0
      pelican-plugins/representative_image/test_representative_image.py
  30. 43 13
      pelicanconf.py
  31. 3 1
      publishconf.py
  32. 2 0
      requirements.txt
  33. 56 0
      themes/Flex/CHANGELOG.md
  34. 22 0
      themes/Flex/LICENSE
  35. 87 0
      themes/Flex/README.md
  36. 1 0
      themes/Flex/docs/CNAME
  37. 9 0
      themes/Flex/docs/README.md
  38. 172 0
      themes/Flex/docs/blog/archives.html
  39. 313 0
      themes/Flex/docs/blog/author/alexandre-vicenzi.html
  40. 159 0
      themes/Flex/docs/blog/authors.html
  41. 159 0
      themes/Flex/docs/blog/categories.html
  42. 313 0
      themes/Flex/docs/blog/category/news.html
  43. 188 0
      themes/Flex/docs/blog/feeds/all.atom.xml
  44. 188 0
      themes/Flex/docs/blog/feeds/news.atom.xml
  45. 221 0
      themes/Flex/docs/blog/flex-pelican-theme-update-1-1-1.html
  46. 226 0
      themes/Flex/docs/blog/flex-pelican-theme-update-1-1.html
  47. 225 0
      themes/Flex/docs/blog/flex-pelican-theme-update-1-2-0.html
  48. 238 0
      themes/Flex/docs/blog/flex-pelican-theme-update-2-0.html
  49. 236 0
      themes/Flex/docs/blog/flex-pelican-theme-update-2-1.html
  50. 218 0
      themes/Flex/docs/blog/flex-pelican-theme-update-2-2.html
  51. 302 0
      themes/Flex/docs/blog/flex-pelican-theme.html
  52. BIN
      themes/Flex/docs/blog/images/flex-screenshot.png
  53. 312 0
      themes/Flex/docs/blog/index.html
  54. 155 0
      themes/Flex/docs/blog/pages/about.html
  55. 155 0
      themes/Flex/docs/blog/pages/contact.html
  56. 313 0
      themes/Flex/docs/blog/tag/pelican.html
  57. 313 0
      themes/Flex/docs/blog/tag/python.html
  58. 313 0
      themes/Flex/docs/blog/tag/theme.html
  59. 160 0
      themes/Flex/docs/blog/tags.html
  60. 4 0
      themes/Flex/docs/blog/theme/font-awesome/css/font-awesome.min.css
  61. BIN
      themes/Flex/docs/blog/theme/font-awesome/fonts/FontAwesome.otf
  62. BIN
      themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.eot
  63. 685 0
      themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.svg
  64. BIN
      themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.ttf
  65. BIN
      themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.woff
  66. BIN
      themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.woff2
  67. BIN
      themes/Flex/docs/blog/theme/img/cc/by-nc-nd.png
  68. BIN
      themes/Flex/docs/blog/theme/img/cc/by-nc-sa.png
  69. BIN
      themes/Flex/docs/blog/theme/img/cc/by-nc.png
  70. BIN
      themes/Flex/docs/blog/theme/img/cc/by-nd.png
  71. BIN
      themes/Flex/docs/blog/theme/img/cc/by-sa.png
  72. BIN
      themes/Flex/docs/blog/theme/img/cc/by.png
  73. BIN
      themes/Flex/docs/blog/theme/img/profile.png
  74. 1 0
      themes/Flex/docs/blog/theme/img/profile_license.txt
  75. 60 0
      themes/Flex/docs/blog/theme/pygments/abap.css
  76. 1 0
      themes/Flex/docs/blog/theme/pygments/abap.min.css
  77. 44 0
      themes/Flex/docs/blog/theme/pygments/algol.css
  78. 1 0
      themes/Flex/docs/blog/theme/pygments/algol.min.css
  79. 44 0
      themes/Flex/docs/blog/theme/pygments/algol_nu.css
  80. 1 0
      themes/Flex/docs/blog/theme/pygments/algol_nu.min.css
  81. 61 0
      themes/Flex/docs/blog/theme/pygments/arduino.css
  82. 1 0
      themes/Flex/docs/blog/theme/pygments/arduino.min.css
  83. 66 0
      themes/Flex/docs/blog/theme/pygments/autumn.css
  84. 1 0
      themes/Flex/docs/blog/theme/pygments/autumn.min.css
  85. 52 0
      themes/Flex/docs/blog/theme/pygments/borland.css
  86. 1 0
      themes/Flex/docs/blog/theme/pygments/borland.min.css
  87. 39 0
      themes/Flex/docs/blog/theme/pygments/bw.css
  88. 1 0
      themes/Flex/docs/blog/theme/pygments/bw.min.css
  89. 69 0
      themes/Flex/docs/blog/theme/pygments/colorful.css
  90. 1 0
      themes/Flex/docs/blog/theme/pygments/colorful.min.css
  91. 69 0
      themes/Flex/docs/blog/theme/pygments/default.css
  92. 1 0
      themes/Flex/docs/blog/theme/pygments/default.min.css
  93. 69 0
      themes/Flex/docs/blog/theme/pygments/emacs.css
  94. 1 0
      themes/Flex/docs/blog/theme/pygments/emacs.min.css
  95. 69 0
      themes/Flex/docs/blog/theme/pygments/friendly.css
  96. 1 0
      themes/Flex/docs/blog/theme/pygments/friendly.min.css
  97. 78 0
      themes/Flex/docs/blog/theme/pygments/fruity.css
  98. 1 0
      themes/Flex/docs/blog/theme/pygments/fruity.min.css
  99. 69 0
      themes/Flex/docs/blog/theme/pygments/github.css
  100. 0 0
      themes/Flex/docs/blog/theme/pygments/github.min.css

+ 2 - 0
Makefile

@@ -13,6 +13,8 @@ FTP_USER=anonymous
 FTP_TARGET_DIR=/
 
 SSH_TARGET_DIR=~/projects/static-site
+SSH_PORT ?= 22
+SSH_USER ?= `whoami`
 
 S3_BUCKET=my_s3_bucket
 

BIN
content/images/favicon.ico


+ 11 - 0
content/pages/category-feeds.md

@@ -0,0 +1,11 @@
+title: Feeds par catégorie
+status: published
+
+---
+
+Si vous n'êtes pas intéressés par tout ce que je publie, vous pouvez vous
+abonner à des feeds par catégorie :
+
+* [Le développement pour les nuls][dev-feed]
+
+[dev-feed]: /feeds/le-developpement-web-pour-les-nuls.atom.xml

+ 165 - 0
pelican-plugins/i18n_subsites/README.rst

@@ -0,0 +1,165 @@
+=======================
+ I18N Sub-sites Plugin
+=======================
+
+This plugin extends the translations functionality by creating
+internationalized sub-sites for the default site.
+
+This plugin is designed for Pelican 3.4 and later.
+
+What it does
+============
+
+1. When the content of the main site is being generated, the settings
+   are saved and the generation stops when content is ready to be
+   written. While reading source files and generating content objects,
+   the output queue is modified in certain ways:
+
+  - translations that will appear as native in a different (sub-)site
+    will be removed
+  - untranslated articles will be transformed to drafts if
+    ``I18N_UNTRANSLATED_ARTICLES`` is ``'hide'`` (default), removed if
+    ``'remove'`` or kept as they are if ``'keep'``.
+  - untranslated pages will be transformed into hidden pages if
+    ``I18N_UNTRANSLATED_PAGES`` is ``'hide'`` (default), removed if
+    ``'remove'`` or kept as they are if ``'keep'``.''
+  - additional content manipulation similar to articles and pages can
+    be specified for custom generators in the ``I18N_GENERATOR_INFO``
+    setting.
+
+2. For each language specified in the ``I18N_SUBSITES`` dictionary the
+   settings overrides are applied to the settings from the main site
+   and a new sub-site is generated in the same way as with the main
+   site until content is ready to be written.
+3. When all (sub-)sites are waiting for content writing, all removed
+   contents, translations and static files are interlinked across the
+   (sub-)sites.
+4. Finally, all the output is written.
+
+Setting it up
+=============
+
+For each extra used language code, a language-specific settings overrides
+dictionary must be given (but can be empty) in the ``I18N_SUBSITES`` dictionary
+
+.. code-block:: python
+
+    PLUGINS = ['i18n_subsites', ...]
+
+    # mapping: language_code -> settings_overrides_dict
+    I18N_SUBSITES = {
+        'cz': {
+	    'SITENAME': 'Hezkej blog',
+	    }
+	}
+
+You must also have the following in your pelican configuration
+
+.. code-block:: python
+    JINJA_ENVIRONMENT = {
+        'extensions': ['jinja2.ext.i18n'],
+    }
+
+
+
+Default and special overrides
+-----------------------------
+The settings overrides may contain arbitrary settings, however, there
+are some that are handled in a special way:
+
+``SITEURL``
+  Any overrides to this setting should ensure that there is some level
+  of hierarchy between all (sub-)sites, because Pelican makes all URLs
+  relative to ``SITEURL`` and the plugin can only cross-link between
+  the sites using this hierarchy. For instance, with the main site
+  ``http://example.com`` a sub-site ``http://example.com/de`` will
+  work, but ``http://de.example.com`` will not. If not overridden, the
+  language code (the language identifier used in the ``lang``
+  metadata) is appended to the main ``SITEURL`` for each sub-site.
+``OUTPUT_PATH``, ``CACHE_PATH``
+  If not overridden, the language code is appended as with ``SITEURL``.
+  Separate cache paths are required as parser results depend on the locale.
+``STATIC_PATHS``, ``THEME_STATIC_PATHS``
+  If not overridden, they are set to ``[]`` and all links to static
+  files are cross-linked to the main site.
+``THEME``, ``THEME_STATIC_DIR``
+  If overridden, the logic with ``THEME_STATIC_PATHS`` does not apply.
+``DEFAULT_LANG``
+  This should not be overridden as the plugin changes it to the
+  language code of each sub-site to change what is perceived as translations.
+
+Localizing templates
+--------------------
+
+Most importantly, this plugin can use localized templates for each
+sub-site. There are two approaches to having the templates localized:
+
+- You can set a different ``THEME`` override for each language in
+  ``I18N_SUBSITES``, e.g. by making a copy of a theme ``my_theme`` to
+  ``my_theme_lang`` and then editing the templates in the new
+  localized theme. This approach means you don't have to deal with
+  gettext ``*.po`` files, but it is harder to maintain over time.
+- You use only one theme and localize the templates using the
+  `jinja2.ext.i18n Jinja2 extension
+  <http://jinja.pocoo.org/docs/templates/#i18n>`_. For a kickstart
+  read this `guide <./localizing_using_jinja2.rst>`_.
+
+Additional context variables
+............................
+
+It may be convenient to add language buttons to your theme in addition
+to the translation links of articles and pages. These buttons could,
+for example, point to the ``SITEURL`` of each (sub-)site. For this
+reason the plugin adds these variables to the template context:
+
+``main_lang``
+  The language of the main site — the original ``DEFAULT_LANG``
+``main_siteurl``
+  The ``SITEURL`` of the main site — the original ``SITEURL``
+``lang_siteurls``
+  An ordered dictionary, mapping all used languages to their
+  ``SITEURL``. The ``main_lang`` is the first key with ``main_siteurl``
+  as the value. This dictionary is useful for implementing global
+  language buttons that show the language of the currently viewed
+  (sub-)site too.
+``extra_siteurls``
+  An ordered dictionary, subset of ``lang_siteurls``, the current
+  ``DEFAULT_LANG`` of the rendered (sub-)site is not included, so for
+  each (sub-)site ``set(extra_siteurls) == set(lang_siteurls) -
+  set([DEFAULT_LANG])``. This dictionary is useful for implementing
+  global language buttons that do not show the current language.
+``relpath_to_site``
+  A function that returns a relative path from the first (sub-)site to
+  the second (sub-)site where the (sub-)sites are identified by the
+  language codes given as two arguments.
+
+If you don't like the default ordering of the ordered dictionaries,
+use a Jinja2 filter to alter the ordering.
+
+All the siteurls above are always absolute even in the case of
+``RELATIVE_URLS == True`` (it would be to complicated to replicate the
+Pelican internals for local siteurls), so you may rather use something
+like ``{{ SITEURL }}/{{ relpath_to_site(DEFAULT_LANG, main_lang }}``
+to link to the main site.
+
+This short `howto <./implementing_language_buttons.rst>`_ shows two
+example implementations of language buttons.
+
+Usage notes
+===========
+- It is **mandatory** to specify ``lang`` metadata for each article
+  and page as ``DEFAULT_LANG`` is later changed for each sub-site, so
+  content without ``lang`` metadata would be rendered in every
+  (sub-)site.
+- As with the original translations functionality, ``slug`` metadata
+  is used to group translations. It is therefore often convenient to
+  compensate for this by overriding the content URL (which defaults to
+  slug) using the ``url`` and ``save_as`` metadata. You could also
+  give articles e.g. ``name`` metadata and use it in ``ARTICLE_URL =
+  '{name}.html'``.
+
+Development
+===========
+
+- A demo and a test site is in the ``gh-pages`` branch and can be seen
+  at http://smartass101.github.io/pelican-plugins/

+ 1 - 0
pelican-plugins/i18n_subsites/__init__.py

@@ -0,0 +1 @@
+from .i18n_subsites import *

+ 450 - 0
pelican-plugins/i18n_subsites/i18n_subsites.py

@@ -0,0 +1,450 @@
+"""i18n_subsites plugin creates i18n-ized subsites of the default site
+
+This plugin is designed for Pelican 3.4 and later
+"""
+
+
+import os
+import six
+import logging
+import posixpath
+
+from copy import copy
+from itertools import chain
+from operator import attrgetter
+from collections import OrderedDict
+from contextlib import contextmanager
+from six.moves.urllib.parse import urlparse
+
+import gettext
+import locale
+
+from pelican import signals
+from pelican.generators import ArticlesGenerator, PagesGenerator
+from pelican.settings import configure_settings
+from pelican.contents import Draft
+
+
+# Global vars
+_MAIN_SETTINGS = None     # settings dict of the main Pelican instance
+_MAIN_LANG = None         # lang of the main Pelican instance
+_MAIN_SITEURL = None      # siteurl of the main Pelican instance
+_MAIN_STATIC_FILES = None # list of Static instances the main Pelican instance
+_SUBSITE_QUEUE = {}   # map: lang -> settings overrides
+_SITE_DB = OrderedDict()           # OrderedDict: lang -> siteurl
+_SITES_RELPATH_DB = {}       # map: (lang, base_lang) -> relpath
+# map: generator -> list of removed contents that need interlinking
+_GENERATOR_DB = {}
+_NATIVE_CONTENT_URL_DB = {} # map: source_path -> content in its native lang
+_LOGGER = logging.getLogger(__name__)
+
+
+@contextmanager
+def temporary_locale(temp_locale=None):
+    '''Enable code to run in a context with a temporary locale
+
+    Resets the locale back when exiting context.
+    Can set a temporary locale if provided
+    '''
+    orig_locale = locale.setlocale(locale.LC_ALL)
+    if temp_locale is not None:
+        locale.setlocale(locale.LC_ALL, temp_locale)
+    yield
+    locale.setlocale(locale.LC_ALL, orig_locale)
+
+
+def initialize_dbs(settings):
+    '''Initialize internal DBs using the Pelican settings dict
+
+    This clears the DBs for e.g. autoreload mode to work
+    '''
+    global _MAIN_SETTINGS, _MAIN_SITEURL, _MAIN_LANG, _SUBSITE_QUEUE
+    _MAIN_SETTINGS = settings
+    _MAIN_LANG = settings['DEFAULT_LANG']
+    _MAIN_SITEURL = settings['SITEURL']
+    _SUBSITE_QUEUE = settings.get('I18N_SUBSITES', {}).copy()
+    prepare_site_db_and_overrides()
+    # clear databases in case of autoreload mode
+    _SITES_RELPATH_DB.clear()
+    _NATIVE_CONTENT_URL_DB.clear()
+    _GENERATOR_DB.clear()
+
+
+def prepare_site_db_and_overrides():
+    '''Prepare overrides and create _SITE_DB
+
+    _SITE_DB.keys() need to be ready for filter_translations
+    '''
+    _SITE_DB.clear()
+    _SITE_DB[_MAIN_LANG] = _MAIN_SITEURL
+    # make sure it works for both root-relative and absolute
+    main_siteurl = '/' if _MAIN_SITEURL == '' else _MAIN_SITEURL
+    for lang, overrides in _SUBSITE_QUEUE.items():
+        if 'SITEURL' not in overrides:
+            overrides['SITEURL'] = posixpath.join(main_siteurl, lang)
+        _SITE_DB[lang] = overrides['SITEURL']
+        # default subsite hierarchy
+        if 'OUTPUT_PATH' not in overrides:
+            overrides['OUTPUT_PATH'] = os.path.join(
+                _MAIN_SETTINGS['OUTPUT_PATH'], lang)
+        if 'CACHE_PATH' not in overrides:
+            overrides['CACHE_PATH'] = os.path.join(
+                _MAIN_SETTINGS['CACHE_PATH'], lang)
+        if 'STATIC_PATHS' not in overrides:
+            overrides['STATIC_PATHS'] = []
+        if ('THEME' not in overrides and 'THEME_STATIC_DIR' not in overrides and
+                'THEME_STATIC_PATHS' not in overrides):
+            relpath = relpath_to_site(lang, _MAIN_LANG)
+            overrides['THEME_STATIC_DIR'] = posixpath.join(
+                relpath, _MAIN_SETTINGS['THEME_STATIC_DIR'])
+            overrides['THEME_STATIC_PATHS'] = []
+        # to change what is perceived as translations
+        overrides['DEFAULT_LANG'] = lang
+
+
+def subscribe_filter_to_signals(settings):
+    '''Subscribe content filter to requested signals'''
+    for sig in settings.get('I18N_FILTER_SIGNALS', []):
+        sig.connect(filter_contents_translations)
+
+
+def initialize_plugin(pelican_obj):
+    '''Initialize plugin variables and Pelican settings'''
+    if _MAIN_SETTINGS is None:
+        initialize_dbs(pelican_obj.settings)
+        subscribe_filter_to_signals(pelican_obj.settings)
+
+
+def get_site_path(url):
+    '''Get the path component of an url, excludes siteurl
+
+    also normalizes '' to '/' for relpath to work,
+    otherwise it could be interpreted as a relative filesystem path
+    '''
+    path = urlparse(url).path
+    if path == '':
+        path = '/'
+    return path
+
+
+def relpath_to_site(lang, target_lang):
+    '''Get relative path from siteurl of lang to siteurl of base_lang
+
+    the output is cached in _SITES_RELPATH_DB
+    '''
+    path = _SITES_RELPATH_DB.get((lang, target_lang), None)
+    if path is None:
+        siteurl = _SITE_DB.get(lang, _MAIN_SITEURL)
+        target_siteurl = _SITE_DB.get(target_lang, _MAIN_SITEURL)
+        path = posixpath.relpath(get_site_path(target_siteurl),
+                                 get_site_path(siteurl))
+        _SITES_RELPATH_DB[(lang, target_lang)] = path
+    return path
+
+
+def save_generator(generator):
+    '''Save the generator for later use
+
+    initialize the removed content list
+    '''
+    _GENERATOR_DB[generator] = []
+
+
+def article2draft(article):
+    '''Transform an Article to Draft'''
+    draft = Draft(article._content, article.metadata, article.settings,
+                  article.source_path, article._context)
+    draft.status = 'draft'
+    return draft
+
+
+def page2hidden_page(page):
+    '''Transform a Page to a hidden Page'''
+    page.status = 'hidden'
+    return page
+
+
+class GeneratorInspector(object):
+    '''Inspector of generator instances'''
+
+    generators_info = {
+        ArticlesGenerator: {
+            'translations_lists': ['translations', 'drafts_translations'],
+            'contents_lists': [('articles', 'drafts')],
+            'hiding_func': article2draft,
+            'policy': 'I18N_UNTRANSLATED_ARTICLES',
+        },
+        PagesGenerator: {
+            'translations_lists': ['translations', 'hidden_translations'],
+            'contents_lists': [('pages', 'hidden_pages')],
+            'hiding_func': page2hidden_page,
+            'policy': 'I18N_UNTRANSLATED_PAGES',
+        },
+    }
+
+    def __init__(self, generator):
+        '''Identify the best known class of the generator instance
+
+        The class '''
+        self.generator = generator
+        self.generators_info.update(generator.settings.get(
+            'I18N_GENERATORS_INFO', {}))
+        for cls in generator.__class__.__mro__:
+            if cls in self.generators_info:
+                self.info = self.generators_info[cls]
+                break
+        else:
+            self.info = {}
+
+    def translations_lists(self):
+        '''Iterator over lists of content translations'''
+        return (getattr(self.generator, name) for name in
+                self.info.get('translations_lists', []))
+
+    def contents_list_pairs(self):
+        '''Iterator over pairs of normal and hidden contents'''
+        return (tuple(getattr(self.generator, name) for name in names)
+                for names in self.info.get('contents_lists', []))
+
+    def hiding_function(self):
+        '''Function for transforming content to a hidden version'''
+        hiding_func = self.info.get('hiding_func', lambda x: x)
+        return hiding_func
+
+    def untranslated_policy(self, default):
+        '''Get the policy for untranslated content'''
+        return self.generator.settings.get(self.info.get('policy', None),
+                                           default)
+
+    def all_contents(self):
+        '''Iterator over all contents'''
+        translations_iterator = chain(*self.translations_lists())
+        return chain(translations_iterator,
+                     *(pair[i] for pair in self.contents_list_pairs()
+                       for i in (0, 1)))
+
+
+def filter_contents_translations(generator):
+    '''Filter the content and translations lists of a generator
+
+    Filters out
+        1) translations which will be generated in a different site
+        2) content that is not in the language of the currently
+        generated site but in that of a different site, content in a
+        language which has no site is generated always. The filtering
+        method bay be modified by the respective untranslated policy
+    '''
+    inspector = GeneratorInspector(generator)
+    current_lang = generator.settings['DEFAULT_LANG']
+    langs_with_sites = _SITE_DB.keys()
+    removed_contents = _GENERATOR_DB[generator]
+
+    for translations in inspector.translations_lists():
+        for translation in translations[:]:    # copy to be able to remove
+            if translation.lang in langs_with_sites:
+                translations.remove(translation)
+                removed_contents.append(translation)
+
+    hiding_func = inspector.hiding_function()
+    untrans_policy = inspector.untranslated_policy(default='hide')
+    for (contents, other_contents) in inspector.contents_list_pairs():
+        for content in other_contents: # save any hidden native content first
+            if content.lang == current_lang: # in native lang
+                # save the native URL attr formatted in the current locale
+                _NATIVE_CONTENT_URL_DB[content.source_path] = content.url
+        for content in contents[:]:        # copy for removing in loop
+            if content.lang == current_lang: # in native lang
+                # save the native URL attr formatted in the current locale
+                _NATIVE_CONTENT_URL_DB[content.source_path] = content.url
+            elif content.lang in langs_with_sites and untrans_policy != 'keep':
+                contents.remove(content)
+                if untrans_policy == 'hide':
+                    other_contents.append(hiding_func(content))
+                elif untrans_policy == 'remove':
+                    removed_contents.append(content)
+
+
+def install_templates_translations(generator):
+    '''Install gettext translations in the jinja2.Environment
+
+    Only if the 'jinja2.ext.i18n' jinja2 extension is enabled
+    the translations for the current DEFAULT_LANG are installed.
+    '''
+    if 'JINJA_ENVIRONMENT' in generator.settings: # pelican 3.7+
+        jinja_extensions = generator.settings['JINJA_ENVIRONMENT'].get(
+            'extensions', [])
+    else:
+        jinja_extensions = generator.settings['JINJA_EXTENSIONS']
+
+    if 'jinja2.ext.i18n' in jinja_extensions:
+        domain = generator.settings.get('I18N_GETTEXT_DOMAIN', 'messages')
+        localedir = generator.settings.get('I18N_GETTEXT_LOCALEDIR')
+        if localedir is None:
+            localedir = os.path.join(generator.theme, 'translations')
+        current_lang = generator.settings['DEFAULT_LANG']
+        if current_lang == generator.settings.get('I18N_TEMPLATES_LANG',
+                                                  _MAIN_LANG):
+            translations = gettext.NullTranslations()
+        else:
+            langs = [current_lang]
+            try:
+                translations = gettext.translation(domain, localedir, langs)
+            except (IOError, OSError):
+                _LOGGER.error((
+                    "Cannot find translations for language '{}' in '{}' with "
+                    "domain '{}'. Installing NullTranslations.").format(
+                        langs[0], localedir, domain))
+                translations = gettext.NullTranslations()
+        newstyle = generator.settings.get('I18N_GETTEXT_NEWSTYLE', True)
+        generator.env.install_gettext_translations(translations, newstyle)
+
+
+def add_variables_to_context(generator):
+    '''Adds useful iterable variables to template context'''
+    context = generator.context             # minimize attr lookup
+    context['relpath_to_site'] = relpath_to_site
+    context['main_siteurl'] = _MAIN_SITEURL
+    context['main_lang'] = _MAIN_LANG
+    context['lang_siteurls'] = _SITE_DB
+    current_lang = generator.settings['DEFAULT_LANG']
+    extra_siteurls = _SITE_DB.copy()
+    extra_siteurls.pop(current_lang)
+    context['extra_siteurls'] = extra_siteurls
+
+
+def interlink_translations(content):
+    '''Link content to translations in their main language
+
+    so the URL (including localized month names) of the different subsites
+    will be honored
+    '''
+    lang = content.lang
+    # sort translations by lang
+    content.translations.sort(key=attrgetter('lang'))
+    for translation in content.translations:
+        relpath = relpath_to_site(lang, translation.lang)
+        url = _NATIVE_CONTENT_URL_DB[translation.source_path]
+        translation.override_url = posixpath.join(relpath, url)
+
+
+def interlink_translated_content(generator):
+    '''Make translations link to the native locations
+
+    for generators that may contain translated content
+    '''
+    inspector = GeneratorInspector(generator)
+    for content in inspector.all_contents():
+        interlink_translations(content)
+
+
+def interlink_removed_content(generator):
+    '''For all contents removed from generation queue update interlinks
+
+    link to the native location
+    '''
+    current_lang = generator.settings['DEFAULT_LANG']
+    for content in _GENERATOR_DB[generator]:
+        url = _NATIVE_CONTENT_URL_DB[content.source_path]
+        relpath = relpath_to_site(current_lang, content.lang)
+        content.override_url = posixpath.join(relpath, url)
+
+
+def interlink_static_files(generator):
+    '''Add links to static files in the main site if necessary'''
+    if generator.settings['STATIC_PATHS'] != []:
+        return                               # customized STATIC_PATHS
+    filenames = generator.context['filenames'] # minimize attr lookup
+    relpath = relpath_to_site(generator.settings['DEFAULT_LANG'], _MAIN_LANG)
+    for staticfile in _MAIN_STATIC_FILES:
+        if staticfile.get_relative_source_path() not in filenames:
+            staticfile = copy(staticfile) # prevent override in main site
+            staticfile.override_url = posixpath.join(relpath, staticfile.url)
+            generator.add_source_path(staticfile)
+
+
+def save_main_static_files(static_generator):
+    '''Save the static files generated for the main site'''
+    global _MAIN_STATIC_FILES
+    # test just for current lang as settings change in autoreload mode
+    if static_generator.settings['DEFAULT_LANG'] == _MAIN_LANG:
+        _MAIN_STATIC_FILES = static_generator.staticfiles
+
+
+def update_generators():
+    '''Update the context of all generators
+
+    Ads useful variables and translations into the template context
+    and interlink translations
+    '''
+    for generator in _GENERATOR_DB.keys():
+        install_templates_translations(generator)
+        add_variables_to_context(generator)
+        interlink_static_files(generator)
+        interlink_removed_content(generator)
+        interlink_translated_content(generator)
+
+
+def get_pelican_cls(settings):
+    '''Get the Pelican class requested in settings'''
+    cls = settings['PELICAN_CLASS']
+    if isinstance(cls, six.string_types):
+        module, cls_name = cls.rsplit('.', 1)
+        module = __import__(module)
+        cls = getattr(module, cls_name)
+    return cls
+
+
+def create_next_subsite(pelican_obj):
+    '''Create the next subsite using the lang-specific config
+
+    If there are no more subsites in the generation queue, update all
+    the generators (interlink translations and removed content, add
+    variables and translations to template context). Otherwise get the
+    language and overrides for next the subsite in the queue and apply
+    overrides.  Then generate the subsite using a PELICAN_CLASS
+    instance and its run method. Finally, restore the previous locale.
+    '''
+    global _MAIN_SETTINGS
+    if len(_SUBSITE_QUEUE) == 0:
+        _LOGGER.debug(
+            'i18n: Updating cross-site links and context of all generators.')
+        update_generators()
+        _MAIN_SETTINGS = None             # to initialize next time
+    else:
+        with temporary_locale():
+            settings = _MAIN_SETTINGS.copy()
+            lang, overrides = _SUBSITE_QUEUE.popitem()
+            settings.update(overrides)
+            settings = configure_settings(settings)      # to set LOCALE, etc.
+            cls = get_pelican_cls(settings)
+
+            new_pelican_obj = cls(settings)
+            _LOGGER.debug(("Generating i18n subsite for language '{}' "
+                           "using class {}").format(lang, cls))
+            new_pelican_obj.run()
+
+
+# map: signal name -> function name
+_SIGNAL_HANDLERS_DB = {
+    'get_generators': initialize_plugin,
+    'article_generator_pretaxonomy': filter_contents_translations,
+    'page_generator_finalized': filter_contents_translations,
+    'get_writer': create_next_subsite,
+    'static_generator_finalized': save_main_static_files,
+    'generator_init': save_generator,
+}
+
+
+def register():
+    '''Register the plugin only if required signals are available'''
+    for sig_name in _SIGNAL_HANDLERS_DB.keys():
+        if not hasattr(signals, sig_name):
+            _LOGGER.error((
+                'The i18n_subsites plugin requires the {} '
+                'signal available for sure in Pelican 3.4.0 and later, '
+                'plugin will not be used.').format(sig_name))
+            return
+
+    for sig_name, handler in _SIGNAL_HANDLERS_DB.items():
+        sig = getattr(signals, sig_name)
+        sig.connect(handler)

+ 128 - 0
pelican-plugins/i18n_subsites/implementing_language_buttons.rst

@@ -0,0 +1,128 @@
+-----------------------------
+Implementing language buttons
+-----------------------------
+
+Each article with translations has translations links, but that's the
+only way to switch between language subsites.
+
+For this reason it is convenient to add language buttons to the top
+menu bar to make it simple to switch between the language subsites on
+all pages.
+
+Example designs
+---------------
+
+Language buttons showing other available languages
+..................................................
+
+The ``extra_siteurls`` dictionary is a mapping of all other (not the
+``DEFAULT_LANG`` of the current (sub-)site) languages to the
+``SITEURL`` of the respective (sub-)sites
+
+.. code-block:: jinja
+
+   <!-- SNIP -->
+   <nav><ul>
+   {% if extra_siteurls %}
+   {% for lang, url in extra_siteurls.items() %}
+   <li><a href="{{ url }}/">{{ lang }}</a></li>
+   {% endfor %}
+   <!-- separator -->
+   <li style="background-color: white; padding: 5px;">&nbsp</li>
+   {% endif %}
+   {% for title, link in MENUITEMS %}
+   <!-- SNIP -->
+
+Notice the slash ``/`` after ``{{ url }}``, this makes sure it works
+with local development when ``SITEURL == ''``.
+
+Language buttons showing all available languages, current is active
+...................................................................
+
+The ``lang_subsites`` dictionary is a mapping of all languages to the
+``SITEURL`` of the respective (sub-)sites. This template sets the
+language of the current (sub-)site as active.
+
+.. code-block:: jinja
+
+   <!-- SNIP -->
+   <nav><ul>
+   {% if lang_siteurls %}
+   {% for lang, url in lang_siteurls.items() %}
+   <li{% if lang == DEFAULT_LANG %} class="active"{% endif %}><a href="{{ url }}/">{{ lang }}</a></li>
+   {% endfor %}
+   <!-- separator -->
+   <li style="background-color: white; padding: 5px;">&nbsp</li>
+   {% endif %}
+   {% for title, link in MENUITEMS %}
+   <!-- SNIP -->
+
+
+Tips and tricks
+---------------
+
+Showing more than language codes
+................................
+
+If you want the language buttons to show e.g. the names of the
+languages or flags [#flags]_, not just the language codes, you can use
+a jinja filter to translate the language codes
+
+
+.. code-block:: python
+
+   languages_lookup = {
+		'en': 'English',
+		'cz': 'Čeština',
+		}
+
+   def lookup_lang_name(lang_code):
+       return languages_lookup[lang_code]
+
+   JINJA_FILTERS = {
+		...
+		'lookup_lang_name': lookup_lang_name,
+		}
+
+And then the link content becomes
+
+.. code-block:: jinja
+
+   <!-- SNIP -->
+   {% for lang, siteurl in lang_siteurls.items() %}
+   <li{% if lang == DEFAULT_LANG %} class="active"{% endif %}><a href="{{ siteurl }}/">{{ lang | lookup_lang_name }}</a></li>
+   {% endfor %}
+   <!-- SNIP -->
+
+
+Changing the order of language buttons
+......................................
+
+Because ``lang_siteurls`` and ``extra_siteurls`` are instances of
+``OrderedDict`` with ``main_lang`` being always the first key, you can
+change the order through a jinja filter.
+
+.. code-block:: python
+
+   def my_ordered_items(ordered_dict):
+       items = list(ordered_dict.items())
+       # swap first and last using tuple unpacking
+       items[0], items[-1] = items[-1], items[0]
+       return items
+
+   JINJA_FILTERS = {
+		...
+		'my_ordered_items': my_ordered_items,
+		}
+
+And then the ``for`` loop line in the template becomes
+
+.. code-block:: jinja
+
+   <!-- SNIP -->
+   {% for lang, siteurl in lang_siteurls | my_ordered_items %}
+   <!-- SNIP -->
+
+
+.. [#flags] Although it may look nice, `w3 discourages it
+            <http://www.w3.org/TR/i18n-html-tech-lang/#ri20040808.173208643>`_.

+ 200 - 0
pelican-plugins/i18n_subsites/localizing_using_jinja2.rst

@@ -0,0 +1,200 @@
+-----------------------------
+Localizing themes with Jinja2
+-----------------------------
+
+1. Localize templates
+---------------------
+
+To enable the |ext| extension in your templates, you must add it to
+``JINJA_EXTENSIONS`` in your Pelican configuration
+
+.. code-block:: python
+
+  JINJA_EXTENSIONS = ['jinja2.ext.i18n', ...]
+
+Then follow the `Jinja2 templating documentation for the I18N plugin
+<http://jinja.pocoo.org/docs/templates/#i18n>`_ to make your templates
+localizable. This usually means surrounding strings with the ``{%
+trans %}`` directive or using ``gettext()`` in expressions
+
+.. code-block:: jinja
+
+    {% trans %}translatable content{% endtrans %}
+    {{ gettext('a translatable string') }}
+
+For pluralization support, etc. consult the documentation.
+
+To enable `newstyle gettext calls
+<http://jinja.pocoo.org/docs/extensions/#newstyle-gettext>`_ the
+``I18N_GETTEXT_NEWSTYLE`` config variable must be set to ``True``
+(default).
+
+.. |ext| replace:: ``jinja2.ext.i18n``
+
+2. Specify translations location
+--------------------------------
+
+The |ext| extension uses the `Python gettext library
+<http://docs.python.org/library/gettext.html>`_ for translating
+strings.
+
+In your Pelican config you can give the path in which to look for
+translations in the ``I18N_GETTEXT_LOCALEDIR`` variable. If not given,
+it is assumed to be the ``translations`` subfolder in the top folder
+of the theme specified by ``THEME``.
+
+The domain of the translations (the name of each translation file is
+``domain.mo``) is controlled by the ``I18N_GETTEXT_DOMAIN`` config
+variable (defaults to ``messages``).
+
+Example
+.......
+
+With the following in your Pelican settings file
+
+.. code-block:: python
+
+  I18N_GETTEXT_LOCALEDIR = 'some/path/'
+  I18N_GETTEXT_DOMAIN = 'my_domain'
+
+the translation for language 'cz' will be expected to be in
+``some/path/cz/LC_MESSAGES/my_domain.mo``
+
+
+3. Extract translatable strings and translate them
+--------------------------------------------------
+
+There are many ways to extract translatable strings and create
+``gettext`` compatible translations. You can create the ``*.po`` and
+``*.mo`` message catalog files yourself, or you can use some helper
+tool as described in `the Python gettext library tutorial
+<http://docs.python.org/library/gettext.html#internationalizing-your-programs-and-modules>`_.
+
+You of course don't need to provide a translation for the language in
+which the templates are written which is assumed to be the original
+``DEFAULT_LANG``. This can be overridden in the
+``I18N_TEMPLATES_LANG`` variable.
+
+Recommended tool: babel
+.......................
+
+`Babel <http://babel.pocoo.org/>`_ makes it easy to extract
+translatable strings from the localized Jinja2 templates and assists
+with creating translations as documented in this `Jinja2-Babel
+tutorial
+<http://pythonhosted.org/Flask-Babel/#translating-applications>`_
+[#flask]_ on which the following is based.
+
+1. Add babel mapping
+~~~~~~~~~~~~~~~~~~~~
+
+Let's assume that you are localizing a theme in ``themes/my_theme/``
+and that you use the default settings, i.e. the default domain
+``messages`` and will put the translations in the ``translations``
+subdirectory of the theme directory as
+``themes/my_theme/translations/``.
+
+It is up to you where to store babel mappings and translation files
+templates (``*.pot``), but a convenient place is to put them in
+``themes/my_theme/`` and work in that directory. From now on let's
+assume that it will be our current working directory (CWD).
+
+To tell babel to extract translatable strings from the templates
+create a mapping file ``babel.cfg`` with the following line
+
+.. code-block:: cfg
+
+    [jinja2: templates/**.html]
+
+
+2. Extract translatable strings from templates
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Run the following command to create a ``messages.pot`` message catalog
+template file from extracted translatable strings
+
+.. code-block:: bash
+
+    pybabel extract --mapping babel.cfg --output messages.pot ./
+
+
+3. Initialize message catalogs
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you want to translate the template to language ``lang``, run the
+following command to create a message catalog
+``translations/lang/LC_MESSAGES/messages.po`` using the template
+``messages.pot``
+
+.. code-block:: bash
+
+    pybabel init --input-file messages.pot --output-dir translations/ --locale lang --domain messages
+
+babel expects ``lang`` to be a valid locale identifier, so if e.g. you
+are translating for language ``cz`` but the corresponding locale is
+``cs``, you have to use the locale identifier. Nevertheless, the
+gettext infrastructure should later correctly find the locale for a
+given language.
+
+4. Fill the message catalogs
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The message catalog files format is quite intuitive, it is fully
+documented in the `GNU gettext manual
+<http://www.gnu.org/software/gettext/manual/gettext.html#PO-Files>`_. Essentially,
+you fill in the ``msgstr`` strings
+
+
+.. code-block:: po
+
+    msgid "just a simple string"
+    msgstr "jenom jednoduchý řetězec"
+
+    msgid ""
+    "some multiline string"
+    "looks like this"
+    msgstr ""
+    "nějaký více řádkový řetězec"
+    "vypadá takto"
+
+You might also want to remove ``#,fuzzy`` flags once the translation
+is complete and reviewed to show that it can be compiled.
+
+5. Compile the message catalogs
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The message catalogs must be compiled into binary format using this
+command
+
+.. code-block:: bash
+
+    pybabel compile --directory translations/ --domain messages
+
+This command might complain about "fuzzy" translations, which means
+you should review the translations and once done, remove the fuzzy
+flag line.
+
+(6.) Update the catalogs when templates change
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you add any translatable patterns into your templates, you have to
+update your message catalogs too.  First you extract a new message
+catalog template as described in the 2. step. Then you run the
+following command [#pybabel_error]_
+
+.. code-block:: bash
+
+   pybabel update --input-file messages.pot --output-dir translations/ --domain messages
+
+This will merge the new patterns with the old ones. Once you review
+and fill them, you have to recompile them as described in the 5. step.
+
+.. [#flask] Although the tutorial is focused on Flask-based web
+            applications, the linked translation tutorial is not
+            Flask-specific.
+.. [#pybabel_error] If you get an error ``TypeError: must be str, not
+                    bytes`` with Python 3.3, it is likely you are
+                    suffering from this `bug
+                    <https://github.com/mitsuhiko/flask-babel/issues/43>`_.
+                    Until the fix is released, you can use babel with
+                    Python 2.7.

+ 0 - 0
pelican-plugins/i18n_subsites/test_data/content/images/img.png


+ 7 - 0
pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-cz.rst

@@ -0,0 +1,7 @@
+404 stránka
+===========
+:slug: 404
+:lang: cz
+:status: hidden
+
+Jednoduchá 404 stránka.

+ 7 - 0
pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-de.rst

@@ -0,0 +1,7 @@
+Eine 404 Seite
+==============
+:slug: 404
+:lang: de
+:status: hidden
+
+Eine einfache 404 Seite.

+ 7 - 0
pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-en.rst

@@ -0,0 +1,7 @@
+A 404 page
+==========
+:slug: 404
+:lang: en
+:status: hidden
+
+A simple 404 page.

+ 5 - 0
pelican-plugins/i18n_subsites/test_data/content/pages/untranslated-page.rst

@@ -0,0 +1,5 @@
+Untranslated page
+=================
+:lang: en
+
+This page has no translation.

+ 8 - 0
pelican-plugins/i18n_subsites/test_data/content/translated_article-cz.rst

@@ -0,0 +1,8 @@
+Přeložený článek
+================
+:slug: translated-article
+:lang: cz
+:date: 2014-09-15
+
+Jednoduchý článek s překlady.
+Zde je odkaz na `nějaký obrázek <{filename}/images/img.png>`_.

+ 8 - 0
pelican-plugins/i18n_subsites/test_data/content/translated_article-de.rst

@@ -0,0 +1,8 @@
+Ein übersetzter Artikel
+=======================
+:slug: translated-article
+:lang: de
+:date: 2014-09-14
+
+Ein einfacher Artikel mit einer Übersetzung.
+Hier ist ein Link zur `einigem Bild <{filename}/images/img.png>`_.

+ 8 - 0
pelican-plugins/i18n_subsites/test_data/content/translated_article-en.rst

@@ -0,0 +1,8 @@
+A translated article
+====================
+:slug: translated-article
+:lang: en
+:date: 2014-09-13
+
+A simple article with a translation.
+Here is a link to `some image <{filename}/images/img.png>`_.

+ 9 - 0
pelican-plugins/i18n_subsites/test_data/content/untranslated_article-en.rst

@@ -0,0 +1,9 @@
+An untranslated article
+=======================
+:date: 2014-07-14
+:lang: en
+
+An article without a translation.
+Here is a link to an `untranslated page`_
+
+.. _`untranslated page`: {filename}/pages/untranslated-page.rst

+ 2 - 0
pelican-plugins/i18n_subsites/test_data/localized_theme/babel.cfg

@@ -0,0 +1,2 @@
+[jinja2: templates/**.html]
+

+ 23 - 0
pelican-plugins/i18n_subsites/test_data/localized_theme/messages.pot

@@ -0,0 +1,23 @@
+# Translations template for PROJECT.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-07-13 12:25+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+
+#: templates/base.html:3
+msgid "Welcome to our"
+msgstr ""
+

+ 0 - 0
pelican-plugins/i18n_subsites/test_data/localized_theme/static/style.css


+ 7 - 0
pelican-plugins/i18n_subsites/test_data/localized_theme/templates/base.html

@@ -0,0 +1,7 @@
+{% extends "!simple/base.html" %}
+
+{% block title %}{% trans %}Welcome to our{% endtrans %} {{ SITENAME }}{% endblock %}
+{% block head %}
+{{ super() }}
+<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/style.css" />
+{% endblock %}

BIN
pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.mo


+ 23 - 0
pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.po

@@ -0,0 +1,23 @@
+# German translations for PROJECT.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-07-13 12:25+0200\n"
+"PO-Revision-Date: 2014-07-13 12:26+0200\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: de <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+
+#: templates/base.html:3
+msgid "Welcome to our"
+msgstr "Willkommen Sie zur unserer"
+

+ 53 - 0
pelican-plugins/i18n_subsites/test_data/pelicanconf.py

@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*- #
+from __future__ import unicode_literals
+
+AUTHOR = 'The Tester'
+SITENAME = 'Testing site'
+SITEURL = 'http://example.com/test'
+
+# to make the test suite portable
+TIMEZONE = 'UTC'
+
+DEFAULT_LANG = 'en'
+LOCALE = 'en_US.UTF-8'
+
+# Generate only one feed
+FEED_ALL_ATOM = 'feeds_all.atom.xml'
+CATEGORY_FEED_ATOM = None
+TRANSLATION_FEED_ATOM = None
+AUTHOR_FEED_ATOM = None
+AUTHOR_FEED_RSS = None
+
+# Disable unnecessary pages
+CATEGORY_SAVE_AS = ''
+TAG_SAVE_AS = ''
+AUTHOR_SAVE_AS = ''
+ARCHIVES_SAVE_AS = ''
+AUTHORS_SAVE_AS = ''
+CATEGORIES_SAVE_AS = ''
+TAGS_SAVE_AS = ''
+
+PLUGIN_PATHS = ['../../']
+PLUGINS = ['i18n_subsites']
+
+THEME = 'localized_theme'
+JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
+
+from blinker import signal
+tmpsig = signal('tmpsig')
+I18N_FILTER_SIGNALS = [tmpsig]
+
+I18N_SUBSITES = {
+    'de': {
+        'SITENAME': 'Testseite',
+        'AUTHOR': 'Der Tester',
+        'LOCALE': 'de_DE.UTF-8',
+        },
+    'cz': {
+        'SITENAME': 'Testovací stránka',
+        'AUTHOR': 'Test Testovič',
+        'I18N_UNTRANSLATED_PAGES': 'remove',
+        'I18N_UNTRANSLATED_ARTICLES': 'keep',
+        },
+    }

+ 139 - 0
pelican-plugins/i18n_subsites/test_i18n_subsites.py

@@ -0,0 +1,139 @@
+'''Unit tests for the i18n_subsites plugin'''
+
+import os
+import locale
+import unittest
+import subprocess
+from tempfile import mkdtemp
+from shutil import rmtree
+
+from . import i18n_subsites as i18ns
+from pelican import Pelican
+from pelican.tests.support import get_settings
+from pelican.settings import read_settings
+
+
+class TestTemporaryLocale(unittest.TestCase):
+    '''Test the temporary locale context manager'''
+
+    def test_locale_restored(self):
+        '''Test that the locale is restored after exiting context'''
+        orig_locale = locale.setlocale(locale.LC_ALL)
+        with i18ns.temporary_locale():
+            locale.setlocale(locale.LC_ALL, 'C')
+            self.assertEqual(locale.setlocale(locale.LC_ALL), 'C')
+        self.assertEqual(locale.setlocale(locale.LC_ALL), orig_locale)
+
+    def test_temp_locale_set(self):
+        '''Test that the temporary locale is set'''
+        with i18ns.temporary_locale('C'):
+            self.assertEqual(locale.setlocale(locale.LC_ALL), 'C')
+
+
+class TestSettingsManipulation(unittest.TestCase):
+    '''Test operations on settings dict'''
+
+    def setUp(self):
+        '''Prepare default settings'''
+        self.settings = get_settings()
+
+    def test_get_pelican_cls_class(self):
+        '''Test that we get class given as an object'''
+        self.settings['PELICAN_CLASS'] = object
+        cls = i18ns.get_pelican_cls(self.settings)
+        self.assertIs(cls, object)
+        
+    def test_get_pelican_cls_str(self):
+        '''Test that we get correct class given by string'''
+        cls = i18ns.get_pelican_cls(self.settings)
+        self.assertIs(cls, Pelican)
+        
+
+class TestSitesRelpath(unittest.TestCase):
+    '''Test relative path between sites generation'''
+
+    def setUp(self):
+        '''Generate some sample siteurls'''
+        self.siteurl = 'http://example.com'
+        i18ns._SITE_DB['en'] = self.siteurl
+        i18ns._SITE_DB['de'] = self.siteurl + '/de'
+
+    def tearDown(self):
+        '''Remove sites from db'''
+        i18ns._SITE_DB.clear()
+
+    def test_get_site_path(self):
+        '''Test getting the path within a site'''
+        self.assertEqual(i18ns.get_site_path(self.siteurl), '/')
+        self.assertEqual(i18ns.get_site_path(self.siteurl + '/de'), '/de')
+
+    def test_relpath_to_site(self):
+        '''Test getting relative paths between sites'''
+        self.assertEqual(i18ns.relpath_to_site('en', 'de'), 'de')
+        self.assertEqual(i18ns.relpath_to_site('de', 'en'), '..')
+
+        
+class TestRegistration(unittest.TestCase):
+    '''Test plugin registration'''
+
+    def test_return_on_missing_signal(self):
+        '''Test return on missing required signal'''
+        i18ns._SIGNAL_HANDLERS_DB['tmp_sig'] = None
+        i18ns.register()
+        self.assertNotIn(id(i18ns.save_generator),
+                         i18ns.signals.generator_init.receivers)
+
+    def test_registration(self):
+        '''Test registration of all signal handlers'''
+        i18ns.register()
+        for sig_name, handler in i18ns._SIGNAL_HANDLERS_DB.items():
+            sig = getattr(i18ns.signals, sig_name)
+            self.assertIn(id(handler), sig.receivers)
+            # clean up
+            sig.disconnect(handler)
+        
+
+class TestFullRun(unittest.TestCase):
+    '''Test running Pelican with the Plugin'''
+
+    def setUp(self):
+        '''Create temporary output and cache folders'''
+        self.temp_path = mkdtemp(prefix='pelicantests.')
+        self.temp_cache = mkdtemp(prefix='pelican_cache.')
+
+    def tearDown(self):
+        '''Remove output and cache folders'''
+        rmtree(self.temp_path)
+        rmtree(self.temp_cache)
+
+    def test_sites_generation(self):
+        '''Test generation of sites with the plugin
+
+        Compare with recorded output via ``git diff``.
+        To generate output for comparison run the command
+        ``pelican -o test_data/output -s test_data/pelicanconf.py \
+        test_data/content``
+        Remember to remove the output/ folder before that.
+        '''
+        base_path = os.path.dirname(os.path.abspath(__file__))
+        base_path = os.path.join(base_path, 'test_data')
+        content_path = os.path.join(base_path, 'content')
+        output_path = os.path.join(base_path, 'output')
+        settings_path = os.path.join(base_path, 'pelicanconf.py')
+        settings = read_settings(path=settings_path, override={
+            'PATH': content_path,
+            'OUTPUT_PATH': self.temp_path,
+            'CACHE_PATH': self.temp_cache,
+            'PLUGINS': [i18ns],
+            }
+        )
+        pelican = Pelican(settings)
+        pelican.run()
+
+        # compare output
+        out, err = subprocess.Popen(
+            ['git', 'diff', '--no-ext-diff', '--exit-code', '-w', output_path,
+             self.temp_path], env={'PAGER': ''},
+            stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
+        self.assertFalse(out, 'non-empty `diff` stdout:\n{}'.format(out))
+        self.assertFalse(err, 'non-empty `diff` stderr:\n{}'.format(out))

+ 45 - 0
pelican-plugins/representative_image/Readme.md

@@ -0,0 +1,45 @@
+# Summary
+
+This plugin extracts a representative image (i.e, featured image) from the article's summary or content if not specifed in the metadata. 
+
+The plugin also removes any images from the summary after extraction to avoid duplication. 
+
+It allows the flexibility on where and how to display the featured image of an article together with its summary in a template page. For example, the article metadata can be displayed in thumbnail format, in which there is a short summary and an image. The layout of the summary and the image can be varied for aesthetical purpose. It doesn't have to depend on article's content format. 
+
+Installation
+------------
+
+This plugin requires BeautifulSoup. 
+
+	pip install beautifulsoup4
+
+To enable, add the following to your settings.py:
+
+    PLUGIN_PATH = 'path/to/pelican-plugins'
+    PLUGINS = ["representative_image"]
+
+`PLUGIN_PATH` can be a path relative to your settings file or an absolute path.
+
+Usage
+-----
+
+To override the default behaviour of selecting the first image in the article's summary or content, set the image property the article's metadata to the url of the image to display, e.g:
+
+```markdown
+Title: My super title
+Date: 2010-12-03 10:20
+Category: Python
+Tags: pelican, publishing
+Slug: my-super-post
+Author: Alexis Metaireau
+Summary: Short version for index and feeds
+Image: /images/my-super-image.png
+
+Article content...
+```
+
+To include a representative image in a page add the following to the template:
+
+    {% if  article.featured_image %}
+        <img src="{{ article.featured_image }}">
+    {% endif %}

+ 1 - 0
pelican-plugins/representative_image/__init__.py

@@ -0,0 +1 @@
+from .representative_image import *

+ 50 - 0
pelican-plugins/representative_image/representative_image.py

@@ -0,0 +1,50 @@
+import six
+from pelican import signals
+from pelican.contents import Article, Page
+from pelican.generators import ArticlesGenerator
+from bs4 import BeautifulSoup
+
+
+def images_extraction(instance):
+    representativeImage = None
+    if type(instance) in (Article, Page):
+        if 'image' in instance.metadata:
+            representativeImage = instance.metadata['image']
+
+        # Process Summary:
+        # If summary contains images, extract one to be the representativeImage and remove images from summary
+        soup = BeautifulSoup(instance.summary, 'html.parser')
+        images = soup.find_all('img')
+        for i in images:
+            if not representativeImage:
+                representativeImage = i['src']
+            i.extract()
+        if len(images) > 0:
+            # set _summary field which is based on metadata. summary field is only based on article's content and not settable
+            instance._summary = six.text_type(soup)
+
+        # If there are no image in summary, look for it in the content body
+        if not representativeImage:
+            soup = BeautifulSoup(instance._content, 'html.parser')
+            imageTag = soup.find('img')
+            if imageTag:
+                representativeImage = imageTag['src']
+
+        # Set the attribute to content instance
+        instance.featured_image = representativeImage
+
+
+def run_plugin(generators):
+    for generator in generators:
+        if isinstance(generator, ArticlesGenerator):
+            for article in generator.articles:
+                images_extraction(article)
+
+
+def register():
+    try:
+        signals.all_generators_finalized.connect(run_plugin)
+    except AttributeError:
+        # NOTE: This results in #314 so shouldn't really be relied on
+        # https://github.com/getpelican/pelican-plugins/issues/314
+        signals.content_object_init.connect(images_extraction)

+ 68 - 0
pelican-plugins/representative_image/test_representative_image.py

@@ -0,0 +1,68 @@
+#!/bin/sh
+import unittest
+
+from jinja2.utils import generate_lorem_ipsum
+
+# Generate content with image 
+TEST_CONTENT_IMAGE_URL = 'https://testimage.com/test.jpg' 
+TEST_CONTENT = str(generate_lorem_ipsum(n=3, html=True)) + '<img src="' + TEST_CONTENT_IMAGE_URL + '"/>'+ str(generate_lorem_ipsum(n=2,html=True))
+TEST_SUMMARY_IMAGE_URL = 'https://testimage.com/summary.jpg'
+TEST_SUMMARY_WITHOUTIMAGE = str(generate_lorem_ipsum(n=1, html=True))
+TEST_SUMMARY_WITHIMAGE = TEST_SUMMARY_WITHOUTIMAGE + '<img src="' + TEST_SUMMARY_IMAGE_URL + '"/>'
+TEST_CUSTOM_IMAGE_URL = 'https://testimage.com/custom.jpg' 
+
+
+from pelican.contents import Article
+import representative_image
+
+class TestRepresentativeImage(unittest.TestCase):
+
+    def setUp(self):
+        super(TestRepresentativeImage, self).setUp()
+        representative_image.register()
+
+    def test_extract_image_from_content(self): 
+        args = {
+            'content': TEST_CONTENT,
+            'metadata': {
+                'summary': TEST_SUMMARY_WITHOUTIMAGE,
+            },
+        }
+
+        article = Article(**args)
+        self.assertEqual(article.featured_image, TEST_CONTENT_IMAGE_URL)
+
+    def test_extract_image_from_summary(self):
+        args = {
+            'content': TEST_CONTENT,
+            'metadata': {
+                'summary': TEST_SUMMARY_WITHIMAGE,
+            },
+        }
+
+        article = Article(**args)
+        self.assertEqual(article.featured_image, TEST_SUMMARY_IMAGE_URL)
+        self.assertEqual(article.summary, TEST_SUMMARY_WITHOUTIMAGE)
+
+    def test_extract_image_from_summary_with_custom_image(self):
+        args = {
+            'content': TEST_CONTENT,
+            'metadata': {
+                'summary': TEST_SUMMARY_WITHIMAGE,
+                'image': TEST_CUSTOM_IMAGE_URL,
+            },
+        }
+
+        article = Article(**args)
+        self.assertEqual(article.featured_image, TEST_CUSTOM_IMAGE_URL)
+        self.assertEqual(article.summary, TEST_SUMMARY_WITHOUTIMAGE)
+
+if __name__ == '__main__':
+    unittest.main()
+        
+
+
+
+
+
+

+ 43 - 13
pelicanconf.py

@@ -4,13 +4,35 @@ from __future__ import unicode_literals
 
 AUTHOR = u'theenglishway'
 SITENAME = u'theenglishway'
-SITEURL = 'theenglishway.eu'
+SITEURL = u'http://localhost:8000'
+
+SITETITLE = 'The English way'
+SITESUBTITLE = "Thought I'd've something more to say"
+SITELOGO = '/images/theenglishway_profile.jpg'
+FAVICON = '/images/favicon.ico'
+
+BROWSER_COLOR = '#333'
+
+ROBOTS = 'index, follow'
 
 PATH = 'content'
 
 TIMEZONE = 'Europe/Paris'
 
-DEFAULT_LANG = u'fr'
+PLUGIN_PATHS = [u'pelican-plugins']
+PLUGINS = ['i18n_subsites', 'representative_image']
+
+JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
+
+I18N_TEMPLATES_LANG = 'en'
+DEFAULT_LANG = 'fr'
+OG_LOCALE = 'fr_FR'
+LOCALE = 'fr_FR'
+
+I18N_SUBSITES = {
+    'fr': {},
+    'en': {}
+}
 
 # Feed generation is usually not desired when developing
 FEED_ALL_ATOM = None
@@ -19,24 +41,32 @@ TRANSLATION_FEED_ATOM = None
 AUTHOR_FEED_ATOM = None
 AUTHOR_FEED_RSS = None
 
+USE_FOLDER_AS_CATEGORY = False
+MAIN_MENU = True
+HOME_HIDE_TAGS = True
+
+MENUITEMS = (('Archives', '/archives.html'),
+             ('Categories', '/categories.html'),
+             ('Tags', '/tags.html'),)
+
 # Blogroll
 LINKS = ()
 
 # Social widget
-SOCIAL = (('My GitHub', 'https://github.com/theenglishway'),
-          ('My Twitter', 'https://twitter.com/the_english_way'))
+SOCIAL = (('github', 'https://github.com/theenglishway'),
+          ('twitter', 'https://twitter.com/the_english_way'),
+          ('rss', '//theenglishway.eu/feeds/all.atom.xml'))
+
+CC_LICENSE = {
+    'name': 'Creative Commons Attribution-NonCommercial-ShareAlike',
+    'version': '4.0',
+    'slug': 'by-nc-sa'
+}
 
 DEFAULT_PAGINATION = False
-#THEME = 'themes/pelican-alchemy/alchemy'
-THEME = 'notmyidea'
-SITEIMAGE = 'images/theenglishway_profile.jpg'
-SITESUBTITLE = "Thought I'd've something more to say"
+THEME = 'themes/Flex'
 DEFAULT_DATE = 'fs'
-TWITTER_USERNAME = 'the_english_way'
-
-FEED_RSS = 'feeds/all.rss.xml'
-
-ISSO_SERVER = "http://comments.theenglishway.eu"
+STATIC_PATHS = ['images']
 
 # Uncomment following line if you want document-relative URLs when developing
 #RELATIVE_URLS = True

+ 3 - 1
publishconf.py

@@ -10,7 +10,7 @@ import sys
 sys.path.append(os.curdir)
 from pelicanconf import *
 
-SITEURL = ''
+SITEURL = 'http://blog.theenglishway.eu'
 RELATIVE_URLS = False
 
 FEED_ALL_ATOM = 'feeds/all.atom.xml'
@@ -18,6 +18,8 @@ CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml'
 
 DELETE_OUTPUT_DIRECTORY = True
 
+ISSO_SERVER = "http://comments.theenglishway.eu"
+
 # Following items are often useful when publishing
 
 #DISQUS_SITENAME = ""

+ 2 - 0
requirements.txt

@@ -1,2 +1,4 @@
 pelican
 markdown
+Flask-Babel
+beautifulsoup4

+ 56 - 0
themes/Flex/CHANGELOG.md

@@ -0,0 +1,56 @@
+## 2.2.0
+
+- Update Pygments - New themes available!
+- Fix code highlight [#125](https://github.com/alexandrevicenzi/Flex/pull/125)
+- New social icons
+- Remove duoshuo integration [#139](https://github.com/alexandrevicenzi/Flex/pull/139)
+- Other small bug fixes
+
+This version includes de, en, es, es_ES, et, fa_IR, fr, hu_HU, it, nl_NL, pl_PL, pt_BR, ru, tr_TR, zh_CN translations.
+
+## 2.1.0
+
+- Italian translation [#60](https://github.com/alexandrevicenzi/Flex/issues/60)
+- Hungarian transltion [#59](https://github.com/alexandrevicenzi/Flex/issues/59)
+- Russian transltion [#58](https://github.com/alexandrevicenzi/Flex/issues/58)
+- [Google AdSense support](https://github.com/alexandrevicenzi/Flex/issues/47)
+
+## 2.0.0
+
+- [Minute read like Medium](https://github.com/alexandrevicenzi/Flex/issues/48) (via plugin)
+- [Theme translations](https://github.com/alexandrevicenzi/Flex/wiki/Translation-support)
+- Updated font-awesome
+- Changed `Cover` metadata to use relative path
+
+This version includes de, fr and pt_BR translations.
+
+Special thanks to @marcelhuth.
+
+## 1.2.0
+
+- [Update font-awesome](https://github.com/alexandrevicenzi/Flex/issues/31)
+- [Added browser color configuration](https://github.com/alexandrevicenzi/Flex/pull/34)
+- [Related posts](https://github.com/alexandrevicenzi/Flex/pull/27)
+- [More Pygments Styles](https://github.com/alexandrevicenzi/Flex/issues/38)
+- [Add StatusCake RUM support](https://github.com/alexandrevicenzi/Flex/issues/16)
+
+## 1.1.1
+
+- [Bug in CSS with placement of "Newer Posts" button](https://github.com/alexandrevicenzi/Flex/issues/21)
+- [Posts preview on main page](https://github.com/alexandrevicenzi/Flex/issues/14)
+- [Strip HTML tags from title](https://github.com/alexandrevicenzi/Flex/pull/25)
+- [Added style for reddit social link](https://github.com/alexandrevicenzi/Flex/pull/23)
+
+## 1.1.0
+
+- [Allow custom CSS stylesheets to override the default one](https://github.com/alexandrevicenzi/Flex/pull/9)
+- [Add Windows-specific font variants](https://github.com/alexandrevicenzi/Flex/pull/8)
+- [Move the "tagged" bullet inside the conditional](https://github.com/alexandrevicenzi/Flex/pull/7)
+- [Add stack-overflow to supported social icons](https://github.com/alexandrevicenzi/Flex/pull/6)
+- [Use THEME_STATIC_DIR for asset URL's](https://github.com/alexandrevicenzi/Flex/pull/5)
+- [show summary for articles in index.html](https://github.com/alexandrevicenzi/Flex/pull/4)
+- [Fixed email icon bug](https://github.com/alexandrevicenzi/Flex/pull/3)
+
+## 1.0.0
+
+First release.

+ 22 - 0
themes/Flex/LICENSE

@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Alexandre Vicenzi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+

+ 87 - 0
themes/Flex/README.md

@@ -0,0 +1,87 @@
+# Flex [![Build Status](https://travis-ci.org/alexandrevicenzi/Flex.svg?branch=master)](https://travis-ci.org/alexandrevicenzi/Flex) [![Dependency Status](https://david-dm.org/alexandrevicenzi/Flex.svg)](https://david-dm.org/alexandrevicenzi/Flex) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/alexandre-vicenzi/flex?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
+
+The minimalist [Pelican](http://blog.getpelican.com/) theme.
+
+## Notes
+
+- **DO NOT** send any questions to my personal email, they are **IGNORED**. If you have questions open an issue.
+- This theme is not under development anymore, it's stable and has a lot of features. This means that new requests (not bug fixes) will be discussed and have lower priorities.
+- If you want a version of this theme to Jekyll or Hugo open an issue and let's discuss it.
+
+## Features
+
+- Mobile First
+- Responsive
+- Semantic
+- SEO Best Practices
+- Open Graph
+- Rich Snippets (JSON-LD)
+- Related Posts (via [plugin](https://github.com/getpelican/pelican-plugins/tree/master/related_posts) or AddThis)
+- Minute read (via [plugin](https://github.com/getpelican/pelican-plugins/tree/master/post_stats)) (new in 2.0)
+- [Multiple Code Highlight Styles](https://github.com/alexandrevicenzi/Flex/wiki/Code-Highlight)
+- [Translation Support](https://github.com/alexandrevicenzi/Flex/wiki/Translations) (new in 2.0)
+
+## Integrations
+
+- [AddThis](http://www.addthis.com/) Share Buttons and Related Posts
+- [Disqus](https://disqus.com/)
+- [Gauges Analytics](http://get.gaug.es/)
+- [Google AdSense](https://www.google.com.br/adsense/start/) (new in 2.1.0)
+- [Google Analytics](https://www.google.com/analytics/web/)
+- [Google Tag Manager](https://www.google.com/tagmanager/)
+- [Piwik Analytics](http://piwik.org/)
+- [StatusCake](https://www.statuscake.com/)
+
+## Plugins Support
+
+- [Github Corners](https://github.com/tholman/github-corners) (new in 2.2.0)
+- [I18N Sub-sites](https://github.com/getpelican/pelican-plugins/tree/master/i18n_subsites) (new in 2.0)
+- [Minute read](https://github.com/getpelican/pelican-plugins/tree/master/post_stats) (new in 2.0)
+- [Related Posts](https://github.com/getpelican/pelican-plugins/tree/master/related_posts)
+- [Representative image](https://github.com/getpelican/pelican-plugins/tree/master/representative_image) (new in 2.2.0)
+- [Neighbors](https://github.com/getpelican/pelican-plugins/tree/master/neighbors) (new in 2.2.0)
+
+## Install
+
+The best way to install is over [pelican-themes](https://github.com/getpelican/pelican-themes).
+
+The alternative way is to clone this repository. The `master` branch is stable and is safe to checkout, but I would recommend you to checkout a tag branch.
+
+## Donate
+
+Are you using this theme? Support bug fixes and new features.
+
+[Click here](https://www.alexandrevicenzi.com/donate) to donate.
+
+## Documentation
+
+The documentation covers most of the settings available and how to use this theme.
+If something is missing or broken you can open a PR or fix the documentation by yourself.
+
+[Flex Wiki](https://github.com/alexandrevicenzi/Flex/wiki)
+
+## Live example
+
+You can see how this theme looks like at [http://flex.alxd.me/blog/](http://flex.alxd.me/blog/).
+
+The code is available in this project under `docs` folder.
+
+## Contributing
+
+**ALWAYS** open an issue before sending a PR.
+Discuss the problem/feature that you want to code.
+After discussing, send a PR with your changes.
+
+As always, if you want something that only makes sense to you, fork Flex and create a new theme.
+
+## Translations
+
+Translate this theme to new languages at [Transifex](https://www.transifex.com/alexandrevicenzi/flex-pelican/).
+
+![Translations](https://github.com/alexandrevicenzi/Flex/blob/master/translations/translation_chart.png)
+
+Read more about [Translation Support](https://github.com/alexandrevicenzi/Flex/wiki/Translations) in the Wiki.
+
+## License
+
+MIT

+ 1 - 0
themes/Flex/docs/CNAME

@@ -0,0 +1 @@
+flex.alxd.me

+ 9 - 0
themes/Flex/docs/README.md

@@ -0,0 +1,9 @@
+# Flex Blog Example
+
+## Build
+
+`pelican -s pelicanconf.py`
+
+## Publish
+
+`pelican -s publishconf.py`

+ 172 - 0
themes/Flex/docs/blog/archives.html

@@ -0,0 +1,172 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash;     Archives
+</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+    <h1>    Archives
+</h1>
+  </header>
+  <div>
+    <dl>
+      <dt>June 24, 2018</dt>
+      <dd><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html">Flex 2.2.0</a></dd>
+      <dt>November 16, 2016</dt>
+      <dd><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html">Flex 2.1.0</a></dd>
+      <dt>September 13, 2016</dt>
+      <dd><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html">Flex 2.0</a></dd>
+      <dt>June 10, 2016</dt>
+      <dd><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html">Flex 1.2.0</a></dd>
+      <dt>February 27, 2016</dt>
+      <dd><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html">Flex 1.1.1</a></dd>
+      <dt>October 07, 2015</dt>
+      <dd><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html">Flex 1.1.0</a></dd>
+      <dt>July 22, 2015</dt>
+      <dd><a href="http://flex.alxd.me/blog/flex-pelican-theme.html">Flex: Responsive Pelican theme</a></dd>
+    </dl>
+  </div>
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 313 - 0
themes/Flex/docs/blog/author/alexandre-vicenzi.html

@@ -0,0 +1,313 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash;     Posts by Alexandre Vicenzi
+:</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+
+
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">Flex 2.2.0</a></h2>
+    <p>
+          Posted on June 24, 2018 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.2.0 comes with bug fixes and improvements.</p>
+<p>There are new Pygments templates and also a few code highlight fixes. There's also new social icons.</p>
+<p>Version 2.2.0 also comes with new translations. You can see available translations <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>Hope you enjoy this version.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">Flex 2.1.0</a></h2>
+    <p>
+          Posted on November 16, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.1.0 comes with features that I was delaying for so long.</p>
+<p>Flex 2.1.0 adds support for Google AdSense.</p>
+<p>If you choose wisely, ads are a way to win some money, but if not, you may loose your users due to excessive use of ads …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">Flex 2.0</a></h2>
+    <p>
+          Posted on September 13, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.0 comes with new features.
+In fact there are two new features.</p>
+<p>The biggest change is localization support.
+Yes, Flex now can be translated into your language.
+You can read about <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>The biggest challege was to create a way to translate without breaking old versions.
+If …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">Flex 1.2.0</a></h2>
+    <p>
+          Posted on June 10, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received some new features. Version 1.2.0 include new features and some updates.</p>
+<p>For developers there are new color styles for your code. For general purpose there is RUM support, related posts and browser color configuration.</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/31">Update font-awesome</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/34">Added browser color configuration</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/27">Related posts</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/38">More Pygments Styles …</a></li></ul>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">Flex 1.1.1</a></h2>
+    <p>
+          Posted on February 27, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>Today, <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received a small update.</p>
+<p>Some bugs are now fixed. I think the most important fixes are:</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/21">Bug in CSS with placement of "Newer Posts" button</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/14">Posts preview on main page</a></li>
+</ul>
+<p>Hope you enjoy this theme.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">Flex 1.1.0</a></h2>
+    <p>
+          Posted on October 07, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I've made the <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> a time ago. For my surprise, many people are using it. I feel thankful for this.</p>
+<p>So, after some new blogs with this theme, I got issues and PRs on GitHub from these new users. This weekend I had some free time and I release …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">Flex: Responsive Pelican theme</a></h2>
+    <p>
+          Posted on July 22, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I just start a new fresh blog using <a href="http://getpelican.com">Pelican</a>. Sometimes choosing a theme for a new site is something difficult that takes time.</p>
+<p>In the Pelican <a href="http://www.pelicanthemes.com/">theme gallery</a>, I couldn't find anything that I really liked to feet all my needs. So in the first time of the history, I …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">    Continue reading
+</a>
+  </div>
+</article>
+
+  <div class="pagination">
+  </div>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <ins class="adsbygoogle ads-responsive"
+       data-ad-client="ca-pub-6625957038449899"
+       data-ad-slot="1124188687"></ins>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({});
+  </script>
+
+
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 159 - 0
themes/Flex/docs/blog/authors.html

@@ -0,0 +1,159 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash;     Authors
+</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+    <h1>    Authors
+</h1>
+  </header>
+  <div>
+    <ul class="list">
+      <li><a href="http://flex.alxd.me/blog/author/alexandre-vicenzi.html">Alexandre Vicenzi</a> (7)</li>
+    </ul>
+  </div>
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 159 - 0
themes/Flex/docs/blog/categories.html

@@ -0,0 +1,159 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash;     Categories
+</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+    <h1>    Categories
+</h1>
+  </header>
+  <div>
+    <ul class="list">
+      <li><a href="http://flex.alxd.me/blog/category/news.html">News</a> (7)</li>
+    </ul>
+  </div>
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 313 - 0
themes/Flex/docs/blog/category/news.html

@@ -0,0 +1,313 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash;     Category News
+</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+
+
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">Flex 2.2.0</a></h2>
+    <p>
+          Posted on June 24, 2018 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.2.0 comes with bug fixes and improvements.</p>
+<p>There are new Pygments templates and also a few code highlight fixes. There's also new social icons.</p>
+<p>Version 2.2.0 also comes with new translations. You can see available translations <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>Hope you enjoy this version.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">Flex 2.1.0</a></h2>
+    <p>
+          Posted on November 16, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.1.0 comes with features that I was delaying for so long.</p>
+<p>Flex 2.1.0 adds support for Google AdSense.</p>
+<p>If you choose wisely, ads are a way to win some money, but if not, you may loose your users due to excessive use of ads …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">Flex 2.0</a></h2>
+    <p>
+          Posted on September 13, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.0 comes with new features.
+In fact there are two new features.</p>
+<p>The biggest change is localization support.
+Yes, Flex now can be translated into your language.
+You can read about <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>The biggest challege was to create a way to translate without breaking old versions.
+If …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">Flex 1.2.0</a></h2>
+    <p>
+          Posted on June 10, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received some new features. Version 1.2.0 include new features and some updates.</p>
+<p>For developers there are new color styles for your code. For general purpose there is RUM support, related posts and browser color configuration.</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/31">Update font-awesome</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/34">Added browser color configuration</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/27">Related posts</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/38">More Pygments Styles …</a></li></ul>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">Flex 1.1.1</a></h2>
+    <p>
+          Posted on February 27, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>Today, <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received a small update.</p>
+<p>Some bugs are now fixed. I think the most important fixes are:</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/21">Bug in CSS with placement of "Newer Posts" button</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/14">Posts preview on main page</a></li>
+</ul>
+<p>Hope you enjoy this theme.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">Flex 1.1.0</a></h2>
+    <p>
+          Posted on October 07, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I've made the <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> a time ago. For my surprise, many people are using it. I feel thankful for this.</p>
+<p>So, after some new blogs with this theme, I got issues and PRs on GitHub from these new users. This weekend I had some free time and I release …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">Flex: Responsive Pelican theme</a></h2>
+    <p>
+          Posted on July 22, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I just start a new fresh blog using <a href="http://getpelican.com">Pelican</a>. Sometimes choosing a theme for a new site is something difficult that takes time.</p>
+<p>In the Pelican <a href="http://www.pelicanthemes.com/">theme gallery</a>, I couldn't find anything that I really liked to feet all my needs. So in the first time of the history, I …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">    Continue reading
+</a>
+  </div>
+</article>
+
+  <div class="pagination">
+  </div>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <ins class="adsbygoogle ads-responsive"
+       data-ad-client="ca-pub-6625957038449899"
+       data-ad-slot="1124188687"></ins>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({});
+  </script>
+
+
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

File diff suppressed because it is too large
+ 188 - 0
themes/Flex/docs/blog/feeds/all.atom.xml


File diff suppressed because it is too large
+ 188 - 0
themes/Flex/docs/blog/feeds/news.atom.xml


+ 221 - 0
themes/Flex/docs/blog/flex-pelican-theme-update-1-1-1.html

@@ -0,0 +1,221 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+<meta name="author" content="Alexandre Vicenzi" />
+<meta name="description" content="Today, Flex theme received a small update. Some bugs are now fixed. I think the most important fixes are: Bug in CSS with placement of &#34;Newer Posts&#34; button Posts preview on main page Hope you enjoy this theme." />
+<meta name="keywords" content="pelican, python, theme">
+
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:title" content="Flex 1.1.1"/>
+<meta property="og:description" content="Today, Flex theme received a small update. Some bugs are now fixed. I think the most important fixes are: Bug in CSS with placement of &#34;Newer Posts&#34; button Posts preview on main page Hope you enjoy this theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html"/>
+<meta property="og:type" content="article"/>
+<meta property="article:published_time" content="2016-02-27 08:00:00-05:00"/>
+<meta property="article:modified_time" content="2016-02-27 08:00:00-05:00"/>
+<meta property="article:author" content="http://flex.alxd.me/blog/author/alexandre-vicenzi.html">
+<meta property="article:section" content="News"/>
+<meta property="article:tag" content="pelican"/>
+<meta property="article:tag" content="python"/>
+<meta property="article:tag" content="theme"/>
+<meta property="og:image" content="http://flex.alxd.me/blog/images/flex-screenshot.png">
+
+  <title>Flex &ndash; Flex 1.1.1</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+      
+    <h1 id="flex-pelican-theme-update-1-1-1">Flex 1.1.1</h1>
+    <p>
+          Posted on February 27, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+    </p>
+  </header>
+
+
+  <div>
+    <p>Today, <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received a small update.</p>
+<p>Some bugs are now fixed. I think the most important fixes are:</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/21">Bug in CSS with placement of "Newer Posts" button</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/14">Posts preview on main page</a></li>
+</ul>
+<p>Hope you enjoy this theme.</p>
+  </div>
+  <div class="tag-cloud">
+    <p>
+      <a href="http://flex.alxd.me/blog/tag/pelican.html">pelican</a>
+      <a href="http://flex.alxd.me/blog/tag/python.html">python</a>
+      <a href="http://flex.alxd.me/blog/tag/theme.html">theme</a>
+    </p>
+  </div>
+
+  <div class="center social-share">
+    <p>    Like this article? Share it with your friends!
+</p>
+    <div class="addthis_native_toolbox"></div>
+    <div class="addthis_sharing_toolbox"></div>
+    <div class="addthis_inline_share_toolbox"></div>
+  </div>
+
+
+    <div class="addthis_relatedposts_inline"></div>
+
+    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+    <ins class="adsbygoogle ads-responsive"
+         data-ad-client="ca-pub-6625957038449899"
+         data-ad-slot="4843941849"></ins>
+    <script>
+      (adsbygoogle = window.adsbygoogle || []).push({});
+    </script>
+
+<!-- Disqus -->
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    var disqus_shortname = 'flex-pelican';
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>
+        Please enable JavaScript to view comments.
+
+</noscript>
+<!-- End Disqus -->
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 226 - 0
themes/Flex/docs/blog/flex-pelican-theme-update-1-1.html

@@ -0,0 +1,226 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+<meta name="author" content="Alexandre Vicenzi" />
+<meta name="description" content="I&#39;ve made the Flex theme a time ago. For my surprise, many people are using it. I feel thankful for this. So, after some new blogs with this theme, I got issues and PRs on GitHub from these new users. This weekend I had some free time and I release …" />
+<meta name="keywords" content="pelican, python, theme">
+
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:title" content="Flex 1.1.0"/>
+<meta property="og:description" content="I&#39;ve made the Flex theme a time ago. For my surprise, many people are using it. I feel thankful for this. So, after some new blogs with this theme, I got issues and PRs on GitHub from these new users. This weekend I had some free time and I release …"/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html"/>
+<meta property="og:type" content="article"/>
+<meta property="article:published_time" content="2015-10-07 08:00:00-04:00"/>
+<meta property="article:modified_time" content="2015-10-07 08:00:00-04:00"/>
+<meta property="article:author" content="http://flex.alxd.me/blog/author/alexandre-vicenzi.html">
+<meta property="article:section" content="News"/>
+<meta property="article:tag" content="pelican"/>
+<meta property="article:tag" content="python"/>
+<meta property="article:tag" content="theme"/>
+<meta property="og:image" content="http://flex.alxd.me/blog/images/flex-screenshot.png">
+
+  <title>Flex &ndash; Flex 1.1.0</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+      
+    <h1 id="flex-pelican-theme-update-1-1">Flex 1.1.0</h1>
+    <p>
+          Posted on October 07, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+    </p>
+  </header>
+
+
+  <div>
+    <p>I've made the <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> a time ago. For my surprise, many people are using it. I feel thankful for this.</p>
+<p>So, after some new blogs with this theme, I got issues and PRs on GitHub from these new users. This weekend I had some free time and I release the <a href="https://github.com/alexandrevicenzi/Flex/releases/tag/v1.1">second version</a> of Flex (aka v1.1).</p>
+<p>This new version doesn't include nothing so special, just some bug fix and a new setting to allow custom CSS stylesheets.</p>
+<p>The new custom setting can be used like this:</p>
+<div class="highlight"><pre><span></span><span class="n">EXTRA_PATH_METADATA</span> <span class="o">=</span> <span class="p">{</span>
+    <span class="s1">&#39;extra/custom.css&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;path&#39;</span><span class="p">:</span> <span class="s1">&#39;static/custom.css&#39;</span><span class="p">},</span>
+<span class="p">}</span>
+<span class="n">CUSTOM_CSS</span> <span class="o">=</span> <span class="s1">&#39;static/custom.css&#39;</span>
+</pre></div>
+
+
+<p>I would like to thank all who helped in this new version.</p>
+  </div>
+  <div class="tag-cloud">
+    <p>
+      <a href="http://flex.alxd.me/blog/tag/pelican.html">pelican</a>
+      <a href="http://flex.alxd.me/blog/tag/python.html">python</a>
+      <a href="http://flex.alxd.me/blog/tag/theme.html">theme</a>
+    </p>
+  </div>
+
+  <div class="center social-share">
+    <p>    Like this article? Share it with your friends!
+</p>
+    <div class="addthis_native_toolbox"></div>
+    <div class="addthis_sharing_toolbox"></div>
+    <div class="addthis_inline_share_toolbox"></div>
+  </div>
+
+
+    <div class="addthis_relatedposts_inline"></div>
+
+    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+    <ins class="adsbygoogle ads-responsive"
+         data-ad-client="ca-pub-6625957038449899"
+         data-ad-slot="4843941849"></ins>
+    <script>
+      (adsbygoogle = window.adsbygoogle || []).push({});
+    </script>
+
+<!-- Disqus -->
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    var disqus_shortname = 'flex-pelican';
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>
+        Please enable JavaScript to view comments.
+
+</noscript>
+<!-- End Disqus -->
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 225 - 0
themes/Flex/docs/blog/flex-pelican-theme-update-1-2-0.html

@@ -0,0 +1,225 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+<meta name="author" content="Alexandre Vicenzi" />
+<meta name="description" content="Flex theme received some new features. Version 1.2.0 include new features and some updates. For developers there are new color styles for your code. For general purpose there is RUM support, related posts and browser color configuration. Update font-awesome Added browser color configuration Related posts More Pygments Styles …" />
+<meta name="keywords" content="pelican, python, theme">
+
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:title" content="Flex 1.2.0"/>
+<meta property="og:description" content="Flex theme received some new features. Version 1.2.0 include new features and some updates. For developers there are new color styles for your code. For general purpose there is RUM support, related posts and browser color configuration. Update font-awesome Added browser color configuration Related posts More Pygments Styles …"/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html"/>
+<meta property="og:type" content="article"/>
+<meta property="article:published_time" content="2016-06-10 08:00:00-04:00"/>
+<meta property="article:modified_time" content="2016-06-10 08:00:00-04:00"/>
+<meta property="article:author" content="http://flex.alxd.me/blog/author/alexandre-vicenzi.html">
+<meta property="article:section" content="News"/>
+<meta property="article:tag" content="pelican"/>
+<meta property="article:tag" content="python"/>
+<meta property="article:tag" content="theme"/>
+<meta property="og:image" content="http://flex.alxd.me/blog/images/flex-screenshot.png">
+
+  <title>Flex &ndash; Flex 1.2.0</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+      
+    <h1 id="flex-pelican-theme-update-1-2-0">Flex 1.2.0</h1>
+    <p>
+          Posted on June 10, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+    </p>
+  </header>
+
+
+  <div>
+    <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received some new features. Version 1.2.0 include new features and some updates.</p>
+<p>For developers there are new color styles for your code. For general purpose there is RUM support, related posts and browser color configuration.</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/31">Update font-awesome</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/34">Added browser color configuration</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/27">Related posts</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/38">More Pygments Styles</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/16">Add StatusCake RUM support</a></li>
+</ul>
+<p>If you need help or want to report a bug, please open an <a href="https://github.com/alexandrevicenzi/Flex/issues">issue</a>.</p>
+<p>Hope you enjoy this theme.</p>
+  </div>
+  <div class="tag-cloud">
+    <p>
+      <a href="http://flex.alxd.me/blog/tag/pelican.html">pelican</a>
+      <a href="http://flex.alxd.me/blog/tag/python.html">python</a>
+      <a href="http://flex.alxd.me/blog/tag/theme.html">theme</a>
+    </p>
+  </div>
+
+  <div class="center social-share">
+    <p>    Like this article? Share it with your friends!
+</p>
+    <div class="addthis_native_toolbox"></div>
+    <div class="addthis_sharing_toolbox"></div>
+    <div class="addthis_inline_share_toolbox"></div>
+  </div>
+
+
+    <div class="addthis_relatedposts_inline"></div>
+
+    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+    <ins class="adsbygoogle ads-responsive"
+         data-ad-client="ca-pub-6625957038449899"
+         data-ad-slot="4843941849"></ins>
+    <script>
+      (adsbygoogle = window.adsbygoogle || []).push({});
+    </script>
+
+<!-- Disqus -->
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    var disqus_shortname = 'flex-pelican';
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>
+        Please enable JavaScript to view comments.
+
+</noscript>
+<!-- End Disqus -->
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 238 - 0
themes/Flex/docs/blog/flex-pelican-theme-update-2-0.html

@@ -0,0 +1,238 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+<meta name="author" content="Alexandre Vicenzi" />
+<meta name="description" content="Flex theme 2.0 comes with new features. In fact there are two new features. The biggest change is localization support. Yes, Flex now can be translated into your language. You can read about here. The biggest challege was to create a way to translate without breaking old versions. If …" />
+<meta name="keywords" content="pelican, python, theme">
+
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:title" content="Flex 2.0"/>
+<meta property="og:description" content="Flex theme 2.0 comes with new features. In fact there are two new features. The biggest change is localization support. Yes, Flex now can be translated into your language. You can read about here. The biggest challege was to create a way to translate without breaking old versions. If …"/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html"/>
+<meta property="og:type" content="article"/>
+<meta property="article:published_time" content="2016-09-13 08:00:00-04:00"/>
+<meta property="article:modified_time" content="2016-09-13 08:00:00-04:00"/>
+<meta property="article:author" content="http://flex.alxd.me/blog/author/alexandre-vicenzi.html">
+<meta property="article:section" content="News"/>
+<meta property="article:tag" content="pelican"/>
+<meta property="article:tag" content="python"/>
+<meta property="article:tag" content="theme"/>
+<meta property="og:image" content="http://flex.alxd.me/blog/images/flex-screenshot.png">
+
+  <title>Flex &ndash; Flex 2.0</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+      
+    <h1 id="flex-pelican-theme-update-2-0">Flex 2.0</h1>
+    <p>
+          Posted on September 13, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+    </p>
+  </header>
+
+
+  <div>
+    <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.0 comes with new features.
+In fact there are two new features.</p>
+<p>The biggest change is localization support.
+Yes, Flex now can be translated into your language.
+You can read about <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>The biggest challege was to create a way to translate without breaking old versions.
+If you use English it changes nothing for you.
+But if you want to use translation you need to add new lines to your pelican configuration file.</p>
+<p>Here is a small example to use Flex in another language.</p>
+<div class="highlight"><pre><span></span><span class="c1"># Enable i18n plugin, probably you already have some others here.</span>
+<span class="n">PLUGINS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;i18n_subsites&#39;</span><span class="p">]</span>
+<span class="c1"># Enable Jinja2 i18n extension used to parse translations.</span>
+<span class="n">JINJA_EXTENSIONS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;jinja2.ext.i18n&#39;</span><span class="p">]</span>
+<span class="c1"># Default theme language.</span>
+<span class="n">I18N_TEMPLATES_LANG</span> <span class="o">=</span> <span class="s1">&#39;en&#39;</span>
+<span class="c1"># Your language.</span>
+<span class="n">DEFAULT_LANG</span> <span class="o">=</span> <span class="s1">&#39;de&#39;</span>
+<span class="n">OG_LOCALE</span> <span class="o">=</span> <span class="s1">&#39;de_DE&#39;</span>
+<span class="n">LOCALE</span> <span class="o">=</span> <span class="s1">&#39;de_DE&#39;</span>
+</pre></div>
+
+
+<p>Last but not least, Flex supports the feature "X minute read", similar <a href="https://medium.com/">Medium</a>.</p>
+<p>Hope you enjoy this version.</p>
+  </div>
+  <div class="tag-cloud">
+    <p>
+      <a href="http://flex.alxd.me/blog/tag/pelican.html">pelican</a>
+      <a href="http://flex.alxd.me/blog/tag/python.html">python</a>
+      <a href="http://flex.alxd.me/blog/tag/theme.html">theme</a>
+    </p>
+  </div>
+
+  <div class="center social-share">
+    <p>    Like this article? Share it with your friends!
+</p>
+    <div class="addthis_native_toolbox"></div>
+    <div class="addthis_sharing_toolbox"></div>
+    <div class="addthis_inline_share_toolbox"></div>
+  </div>
+
+
+    <div class="addthis_relatedposts_inline"></div>
+
+    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+    <ins class="adsbygoogle ads-responsive"
+         data-ad-client="ca-pub-6625957038449899"
+         data-ad-slot="4843941849"></ins>
+    <script>
+      (adsbygoogle = window.adsbygoogle || []).push({});
+    </script>
+
+<!-- Disqus -->
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    var disqus_shortname = 'flex-pelican';
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>
+        Please enable JavaScript to view comments.
+
+</noscript>
+<!-- End Disqus -->
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 236 - 0
themes/Flex/docs/blog/flex-pelican-theme-update-2-1.html

@@ -0,0 +1,236 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+<meta name="author" content="Alexandre Vicenzi" />
+<meta name="description" content="Flex theme 2.1.0 comes with features that I was delaying for so long. Flex 2.1.0 adds support for Google AdSense. If you choose wisely, ads are a way to win some money, but if not, you may loose your users due to excessive use of ads …" />
+<meta name="keywords" content="pelican, python, theme">
+
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:title" content="Flex 2.1.0"/>
+<meta property="og:description" content="Flex theme 2.1.0 comes with features that I was delaying for so long. Flex 2.1.0 adds support for Google AdSense. If you choose wisely, ads are a way to win some money, but if not, you may loose your users due to excessive use of ads …"/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html"/>
+<meta property="og:type" content="article"/>
+<meta property="article:published_time" content="2016-11-16 08:00:00-05:00"/>
+<meta property="article:modified_time" content="2016-11-16 08:00:00-05:00"/>
+<meta property="article:author" content="http://flex.alxd.me/blog/author/alexandre-vicenzi.html">
+<meta property="article:section" content="News"/>
+<meta property="article:tag" content="pelican"/>
+<meta property="article:tag" content="python"/>
+<meta property="article:tag" content="theme"/>
+<meta property="og:image" content="http://flex.alxd.me/blog/images/flex-screenshot.png">
+
+  <title>Flex &ndash; Flex 2.1.0</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+      
+    <h1 id="flex-pelican-theme-update-2-1">Flex 2.1.0</h1>
+    <p>
+          Posted on November 16, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+    </p>
+  </header>
+
+
+  <div>
+    <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.1.0 comes with features that I was delaying for so long.</p>
+<p>Flex 2.1.0 adds support for Google AdSense.</p>
+<p>If you choose wisely, ads are a way to win some money, but if not, you may loose your users due to excessive use of ads.</p>
+<p>Flex has six places for ads. Google recommends up to 3 ads per page. There is ads page only, and banner that appears on all pages.
+Below you can see how to enable ads in your pelican configuration file.</p>
+<div class="highlight"><pre><span></span><span class="n">GOOGLE_ADSENSE</span> <span class="o">=</span> <span class="p">{</span>
+    <span class="s1">&#39;ca_id&#39;</span><span class="p">:</span> <span class="s1">&#39;ca-pub-1234567890&#39;</span><span class="p">,</span>    <span class="c1"># Your AdSense ID</span>
+    <span class="s1">&#39;page_level_ads&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span>          <span class="c1"># Allow Page Level Ads (mobile)</span>
+    <span class="s1">&#39;ads&#39;</span><span class="p">:</span> <span class="p">{</span>
+        <span class="s1">&#39;aside&#39;</span><span class="p">:</span> <span class="s1">&#39;1234561&#39;</span><span class="p">,</span>          <span class="c1"># Side bar banner (all pages)</span>
+        <span class="s1">&#39;main_menu&#39;</span><span class="p">:</span> <span class="s1">&#39;1234562&#39;</span><span class="p">,</span>      <span class="c1"># Banner before main menu (all pages)</span>
+        <span class="s1">&#39;index_top&#39;</span><span class="p">:</span> <span class="s1">&#39;1234563&#39;</span><span class="p">,</span>      <span class="c1"># Banner after main menu (index only)</span>
+        <span class="s1">&#39;index_bottom&#39;</span><span class="p">:</span> <span class="s1">&#39;1234564&#39;</span><span class="p">,</span>   <span class="c1"># Banner before footer (index only)</span>
+        <span class="s1">&#39;article_top&#39;</span><span class="p">:</span> <span class="s1">&#39;1234565&#39;</span><span class="p">,</span>    <span class="c1"># Banner after article title (article only)</span>
+        <span class="s1">&#39;article_bottom&#39;</span><span class="p">:</span> <span class="s1">&#39;1234566&#39;</span><span class="p">,</span> <span class="c1"># Banner after article content (article only)</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Version 2.1.0 also comes with new translations. You can see available translations <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>Hope you enjoy this version.</p>
+  </div>
+  <div class="tag-cloud">
+    <p>
+      <a href="http://flex.alxd.me/blog/tag/pelican.html">pelican</a>
+      <a href="http://flex.alxd.me/blog/tag/python.html">python</a>
+      <a href="http://flex.alxd.me/blog/tag/theme.html">theme</a>
+    </p>
+  </div>
+
+  <div class="center social-share">
+    <p>    Like this article? Share it with your friends!
+</p>
+    <div class="addthis_native_toolbox"></div>
+    <div class="addthis_sharing_toolbox"></div>
+    <div class="addthis_inline_share_toolbox"></div>
+  </div>
+
+
+    <div class="addthis_relatedposts_inline"></div>
+
+    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+    <ins class="adsbygoogle ads-responsive"
+         data-ad-client="ca-pub-6625957038449899"
+         data-ad-slot="4843941849"></ins>
+    <script>
+      (adsbygoogle = window.adsbygoogle || []).push({});
+    </script>
+
+<!-- Disqus -->
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    var disqus_shortname = 'flex-pelican';
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>
+        Please enable JavaScript to view comments.
+
+</noscript>
+<!-- End Disqus -->
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 218 - 0
themes/Flex/docs/blog/flex-pelican-theme-update-2-2.html

@@ -0,0 +1,218 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+<meta name="author" content="Alexandre Vicenzi" />
+<meta name="description" content="Flex theme 2.2.0 comes with bug fixes and improvements. There are new Pygments templates and also a few code highlight fixes. There&#39;s also new social icons. Version 2.2.0 also comes with new translations. You can see available translations here. Hope you enjoy this version." />
+<meta name="keywords" content="pelican, python, theme">
+
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:title" content="Flex 2.2.0"/>
+<meta property="og:description" content="Flex theme 2.2.0 comes with bug fixes and improvements. There are new Pygments templates and also a few code highlight fixes. There&#39;s also new social icons. Version 2.2.0 also comes with new translations. You can see available translations here. Hope you enjoy this version."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html"/>
+<meta property="og:type" content="article"/>
+<meta property="article:published_time" content="2018-06-24 08:00:00-04:00"/>
+<meta property="article:modified_time" content="2018-06-24 08:00:00-04:00"/>
+<meta property="article:author" content="http://flex.alxd.me/blog/author/alexandre-vicenzi.html">
+<meta property="article:section" content="News"/>
+<meta property="article:tag" content="pelican"/>
+<meta property="article:tag" content="python"/>
+<meta property="article:tag" content="theme"/>
+<meta property="og:image" content="http://flex.alxd.me/blog/images/flex-screenshot.png">
+
+  <title>Flex &ndash; Flex 2.2.0</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+      
+    <h1 id="flex-pelican-theme-update-2-2">Flex 2.2.0</h1>
+    <p>
+          Posted on June 24, 2018 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+    </p>
+  </header>
+
+
+  <div>
+    <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.2.0 comes with bug fixes and improvements.</p>
+<p>There are new Pygments templates and also a few code highlight fixes. There's also new social icons.</p>
+<p>Version 2.2.0 also comes with new translations. You can see available translations <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>Hope you enjoy this version.</p>
+  </div>
+  <div class="tag-cloud">
+    <p>
+      <a href="http://flex.alxd.me/blog/tag/pelican.html">pelican</a>
+      <a href="http://flex.alxd.me/blog/tag/python.html">python</a>
+      <a href="http://flex.alxd.me/blog/tag/theme.html">theme</a>
+    </p>
+  </div>
+
+  <div class="center social-share">
+    <p>    Like this article? Share it with your friends!
+</p>
+    <div class="addthis_native_toolbox"></div>
+    <div class="addthis_sharing_toolbox"></div>
+    <div class="addthis_inline_share_toolbox"></div>
+  </div>
+
+
+    <div class="addthis_relatedposts_inline"></div>
+
+    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+    <ins class="adsbygoogle ads-responsive"
+         data-ad-client="ca-pub-6625957038449899"
+         data-ad-slot="4843941849"></ins>
+    <script>
+      (adsbygoogle = window.adsbygoogle || []).push({});
+    </script>
+
+<!-- Disqus -->
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    var disqus_shortname = 'flex-pelican';
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>
+        Please enable JavaScript to view comments.
+
+</noscript>
+<!-- End Disqus -->
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 302 - 0
themes/Flex/docs/blog/flex-pelican-theme.html

@@ -0,0 +1,302 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+<meta name="author" content="Alexandre Vicenzi" />
+<meta name="description" content="I just start a new fresh blog using Pelican. Sometimes choosing a theme for a new site is something difficult that takes time. In the Pelican theme gallery, I couldn&#39;t find anything that I really liked to feet all my needs. So in the first time of the history, I …" />
+<meta name="keywords" content="pelican, python, theme">
+
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:title" content="Flex: Responsive Pelican theme"/>
+<meta property="og:description" content="I just start a new fresh blog using Pelican. Sometimes choosing a theme for a new site is something difficult that takes time. In the Pelican theme gallery, I couldn&#39;t find anything that I really liked to feet all my needs. So in the first time of the history, I …"/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog/flex-pelican-theme.html"/>
+<meta property="og:type" content="article"/>
+<meta property="article:published_time" content="2015-07-22 08:00:00-04:00"/>
+<meta property="article:modified_time" content="2015-07-22 08:00:00-04:00"/>
+<meta property="article:author" content="http://flex.alxd.me/blog/author/alexandre-vicenzi.html">
+<meta property="article:section" content="News"/>
+<meta property="article:tag" content="pelican"/>
+<meta property="article:tag" content="python"/>
+<meta property="article:tag" content="theme"/>
+<meta property="og:image" content="http://flex.alxd.me/blog/images/flex-screenshot.png">
+
+  <title>Flex &ndash; Flex: Responsive Pelican theme</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+      
+    <h1 id="flex-pelican-theme">Flex: Responsive Pelican theme</h1>
+    <p>
+          Posted on July 22, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+    </p>
+  </header>
+
+
+  <div>
+    <p>I just start a new fresh blog using <a href="http://getpelican.com">Pelican</a>. Sometimes choosing a theme for a new site is something difficult that takes time.</p>
+<p>In the Pelican <a href="http://www.pelicanthemes.com/">theme gallery</a>, I couldn't find anything that I really liked to feet all my needs. So in the first time of the history, I choose to create my own theme. I never did this before.</p>
+<p>Creating a theme for Pelican is quite easy, unlike Wordpress. You can take a look in the <a href="https://github.com/alexandrevicenzi/Flex">Source Code of Flex</a>.</p>
+<p>But how Flex looks like? Well, you can see <a href="images/flex-screenshot.png">this screenshot</a>, but you already know how it looks like, you're looking at it. :D</p>
+<p>I really care about SEO and integrations with Facebook, Google Plus and other social networks, so this theme offers some features:</p>
+<ul>
+<li>Mobile First</li>
+<li>Responsive</li>
+<li>Semantic</li>
+<li>SEO Best Practices</li>
+<li>Open Graph</li>
+<li>Rich Snippets (JSON-LD)</li>
+</ul>
+<p>Maybe these features are not fully optimized, but I'll improve.</p>
+<p>Flex also offers integrations with multiple services.</p>
+<blockquote>
+<p><strong>Tip:</strong></p>
+<p>You can easyly integrate with:</p>
+<ul>
+<li>AddThis</li>
+<li>Disqus</li>
+<li>Google Analytics</li>
+<li>Google Tag Manager</li>
+<li>StatusCake</li>
+</ul>
+</blockquote>
+<p>Flex is a theme built by a developer for developers, but of course, you can use for any purpose. In this scenario, Flex is able to create good styles for coding, outputs and samples.</p>
+<p>If you need to show some program output you can use <code>samp</code> tag to look like this:</p>
+<p><samp>Done: Processed 4 articles, 0 drafts, 2 pages and 0 hidden pages in 0.22 seconds.</samp></p>
+<p>Or if you want multiple lines:</p>
+<p><samp>
+             total       used       free     shared    buffers     cached
+Mem:          5866       4674       1192        386          0       2404
+-/+ buffers/cache:       2269       3596
+Swap:        20480       1267      19213
+</samp></p>
+<p>If you like to share code snippets, you can take advantage of <a href="http://pygments.org/">Pygments</a> syntax highlighting:</p>
+<div class="highlight"><pre><span></span><span class="c1">// Foo</span>
+<span class="kd">var</span> <span class="nx">bar</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+</pre></div>
+
+
+<div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Foo</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bar</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">bar</span> <span class="o">=</span> <span class="n">bar</span>
+</pre></div>
+
+
+<div class="highlight"><pre><span></span>ls *.jpg <span class="p">|</span> xargs -n1 -i cp <span class="o">{}</span> /external-hard-drive/directory
+</pre></div>
+
+
+<p><strong>Note:</strong> The code block looks like GitHub’s colors.</p>
+<p>You can add tables too:</p>
+<table>
+<thead>
+<tr>
+<th>Item</th>
+<th>Value</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Computer</td>
+<td>$1600</td>
+</tr>
+<tr>
+<td>Phone</td>
+<td>$12</td>
+</tr>
+<tr>
+<td>Pipe</td>
+<td>$1</td>
+</tr>
+</tbody>
+</table>
+<p>and how heading looks like?</p>
+<h1>This is heading 1</h1>
+<h2>This is heading 2</h2>
+<h3>This is heading 3</h3>
+<h4>This is heading 4</h4>
+<h5>This is heading 5</h5>
+<h6>This is heading 6</h6>
+<p>This examples are in Markdown. I'm not sure how it will look using reStructuredText. Keep in mind that Markdown allows you to add HTML tags. If you can create the same HTML syntax produced by Markdown using reStructuredText it will work.</p>
+<p>You can take a look in the <a href="https://raw.githubusercontent.com/alexandrevicenzi/blog/master/content/News/flex-pelican-theme.md">source code of this page</a> to know how to create rich examples.</p>
+<p>Flex is my first attempt creating themes and there's no IE testing yet. You can check the <a href="https://github.com/alexandrevicenzi/flex">sources here</a>.</p>
+<p>As soon as possible I will add this project to Pelican gallery.</p>
+<p>Drop a comment if you like this theme, or <a href="https://github.com/alexandrevicenzi/Flex/issues">open an issue</a> if you need a feature or found a bug.</p>
+  </div>
+  <div class="tag-cloud">
+    <p>
+      <a href="http://flex.alxd.me/blog/tag/pelican.html">pelican</a>
+      <a href="http://flex.alxd.me/blog/tag/python.html">python</a>
+      <a href="http://flex.alxd.me/blog/tag/theme.html">theme</a>
+    </p>
+  </div>
+
+  <div class="center social-share">
+    <p>    Like this article? Share it with your friends!
+</p>
+    <div class="addthis_native_toolbox"></div>
+    <div class="addthis_sharing_toolbox"></div>
+    <div class="addthis_inline_share_toolbox"></div>
+  </div>
+
+
+    <div class="addthis_relatedposts_inline"></div>
+
+    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+    <ins class="adsbygoogle ads-responsive"
+         data-ad-client="ca-pub-6625957038449899"
+         data-ad-slot="4843941849"></ins>
+    <script>
+      (adsbygoogle = window.adsbygoogle || []).push({});
+    </script>
+
+<!-- Disqus -->
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    var disqus_shortname = 'flex-pelican';
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>
+        Please enable JavaScript to view comments.
+
+</noscript>
+<!-- End Disqus -->
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

BIN
themes/Flex/docs/blog/images/flex-screenshot.png


+ 312 - 0
themes/Flex/docs/blog/index.html

@@ -0,0 +1,312 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+
+
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">Flex 2.2.0</a></h2>
+    <p>
+          Posted on June 24, 2018 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.2.0 comes with bug fixes and improvements.</p>
+<p>There are new Pygments templates and also a few code highlight fixes. There's also new social icons.</p>
+<p>Version 2.2.0 also comes with new translations. You can see available translations <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>Hope you enjoy this version.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">Flex 2.1.0</a></h2>
+    <p>
+          Posted on November 16, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.1.0 comes with features that I was delaying for so long.</p>
+<p>Flex 2.1.0 adds support for Google AdSense.</p>
+<p>If you choose wisely, ads are a way to win some money, but if not, you may loose your users due to excessive use of ads …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">Flex 2.0</a></h2>
+    <p>
+          Posted on September 13, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.0 comes with new features.
+In fact there are two new features.</p>
+<p>The biggest change is localization support.
+Yes, Flex now can be translated into your language.
+You can read about <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>The biggest challege was to create a way to translate without breaking old versions.
+If …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">Flex 1.2.0</a></h2>
+    <p>
+          Posted on June 10, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received some new features. Version 1.2.0 include new features and some updates.</p>
+<p>For developers there are new color styles for your code. For general purpose there is RUM support, related posts and browser color configuration.</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/31">Update font-awesome</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/34">Added browser color configuration</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/27">Related posts</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/38">More Pygments Styles …</a></li></ul>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">Flex 1.1.1</a></h2>
+    <p>
+          Posted on February 27, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>Today, <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received a small update.</p>
+<p>Some bugs are now fixed. I think the most important fixes are:</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/21">Bug in CSS with placement of "Newer Posts" button</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/14">Posts preview on main page</a></li>
+</ul>
+<p>Hope you enjoy this theme.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">Flex 1.1.0</a></h2>
+    <p>
+          Posted on October 07, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I've made the <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> a time ago. For my surprise, many people are using it. I feel thankful for this.</p>
+<p>So, after some new blogs with this theme, I got issues and PRs on GitHub from these new users. This weekend I had some free time and I release …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">Flex: Responsive Pelican theme</a></h2>
+    <p>
+          Posted on July 22, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I just start a new fresh blog using <a href="http://getpelican.com">Pelican</a>. Sometimes choosing a theme for a new site is something difficult that takes time.</p>
+<p>In the Pelican <a href="http://www.pelicanthemes.com/">theme gallery</a>, I couldn't find anything that I really liked to feet all my needs. So in the first time of the history, I …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">    Continue reading
+</a>
+  </div>
+</article>
+
+  <div class="pagination">
+  </div>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <ins class="adsbygoogle ads-responsive"
+       data-ad-client="ca-pub-6625957038449899"
+       data-ad-slot="1124188687"></ins>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({});
+  </script>
+
+
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 155 - 0
themes/Flex/docs/blog/pages/about.html

@@ -0,0 +1,155 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash; About</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+    
+    <h1 id="about">About</h1>
+  </header>
+  <div>
+<p>Flex - The minimalist Pelican theme.</p>  </div>
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 155 - 0
themes/Flex/docs/blog/pages/contact.html

@@ -0,0 +1,155 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash; Contact</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+    
+    <h1 id="contact">Contact</h1>
+  </header>
+  <div>
+<p>If you want to contact about typos, grammar and other errors in this blog, you can open an issue <a href="https://github.com/alexandrevicenzi/Flex/issues">here</a>.</p>  </div>
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 313 - 0
themes/Flex/docs/blog/tag/pelican.html

@@ -0,0 +1,313 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash;     Tag pelican
+</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+
+
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">Flex 2.2.0</a></h2>
+    <p>
+          Posted on June 24, 2018 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.2.0 comes with bug fixes and improvements.</p>
+<p>There are new Pygments templates and also a few code highlight fixes. There's also new social icons.</p>
+<p>Version 2.2.0 also comes with new translations. You can see available translations <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>Hope you enjoy this version.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">Flex 2.1.0</a></h2>
+    <p>
+          Posted on November 16, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.1.0 comes with features that I was delaying for so long.</p>
+<p>Flex 2.1.0 adds support for Google AdSense.</p>
+<p>If you choose wisely, ads are a way to win some money, but if not, you may loose your users due to excessive use of ads …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">Flex 2.0</a></h2>
+    <p>
+          Posted on September 13, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.0 comes with new features.
+In fact there are two new features.</p>
+<p>The biggest change is localization support.
+Yes, Flex now can be translated into your language.
+You can read about <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>The biggest challege was to create a way to translate without breaking old versions.
+If …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">Flex 1.2.0</a></h2>
+    <p>
+          Posted on June 10, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received some new features. Version 1.2.0 include new features and some updates.</p>
+<p>For developers there are new color styles for your code. For general purpose there is RUM support, related posts and browser color configuration.</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/31">Update font-awesome</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/34">Added browser color configuration</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/27">Related posts</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/38">More Pygments Styles …</a></li></ul>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">Flex 1.1.1</a></h2>
+    <p>
+          Posted on February 27, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>Today, <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received a small update.</p>
+<p>Some bugs are now fixed. I think the most important fixes are:</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/21">Bug in CSS with placement of "Newer Posts" button</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/14">Posts preview on main page</a></li>
+</ul>
+<p>Hope you enjoy this theme.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">Flex 1.1.0</a></h2>
+    <p>
+          Posted on October 07, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I've made the <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> a time ago. For my surprise, many people are using it. I feel thankful for this.</p>
+<p>So, after some new blogs with this theme, I got issues and PRs on GitHub from these new users. This weekend I had some free time and I release …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">Flex: Responsive Pelican theme</a></h2>
+    <p>
+          Posted on July 22, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I just start a new fresh blog using <a href="http://getpelican.com">Pelican</a>. Sometimes choosing a theme for a new site is something difficult that takes time.</p>
+<p>In the Pelican <a href="http://www.pelicanthemes.com/">theme gallery</a>, I couldn't find anything that I really liked to feet all my needs. So in the first time of the history, I …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">    Continue reading
+</a>
+  </div>
+</article>
+
+  <div class="pagination">
+  </div>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <ins class="adsbygoogle ads-responsive"
+       data-ad-client="ca-pub-6625957038449899"
+       data-ad-slot="1124188687"></ins>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({});
+  </script>
+
+
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 313 - 0
themes/Flex/docs/blog/tag/python.html

@@ -0,0 +1,313 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash;     Tag python
+</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+
+
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">Flex 2.2.0</a></h2>
+    <p>
+          Posted on June 24, 2018 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.2.0 comes with bug fixes and improvements.</p>
+<p>There are new Pygments templates and also a few code highlight fixes. There's also new social icons.</p>
+<p>Version 2.2.0 also comes with new translations. You can see available translations <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>Hope you enjoy this version.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">Flex 2.1.0</a></h2>
+    <p>
+          Posted on November 16, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.1.0 comes with features that I was delaying for so long.</p>
+<p>Flex 2.1.0 adds support for Google AdSense.</p>
+<p>If you choose wisely, ads are a way to win some money, but if not, you may loose your users due to excessive use of ads …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">Flex 2.0</a></h2>
+    <p>
+          Posted on September 13, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.0 comes with new features.
+In fact there are two new features.</p>
+<p>The biggest change is localization support.
+Yes, Flex now can be translated into your language.
+You can read about <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>The biggest challege was to create a way to translate without breaking old versions.
+If …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">Flex 1.2.0</a></h2>
+    <p>
+          Posted on June 10, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received some new features. Version 1.2.0 include new features and some updates.</p>
+<p>For developers there are new color styles for your code. For general purpose there is RUM support, related posts and browser color configuration.</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/31">Update font-awesome</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/34">Added browser color configuration</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/27">Related posts</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/38">More Pygments Styles …</a></li></ul>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">Flex 1.1.1</a></h2>
+    <p>
+          Posted on February 27, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>Today, <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received a small update.</p>
+<p>Some bugs are now fixed. I think the most important fixes are:</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/21">Bug in CSS with placement of "Newer Posts" button</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/14">Posts preview on main page</a></li>
+</ul>
+<p>Hope you enjoy this theme.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">Flex 1.1.0</a></h2>
+    <p>
+          Posted on October 07, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I've made the <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> a time ago. For my surprise, many people are using it. I feel thankful for this.</p>
+<p>So, after some new blogs with this theme, I got issues and PRs on GitHub from these new users. This weekend I had some free time and I release …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">Flex: Responsive Pelican theme</a></h2>
+    <p>
+          Posted on July 22, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I just start a new fresh blog using <a href="http://getpelican.com">Pelican</a>. Sometimes choosing a theme for a new site is something difficult that takes time.</p>
+<p>In the Pelican <a href="http://www.pelicanthemes.com/">theme gallery</a>, I couldn't find anything that I really liked to feet all my needs. So in the first time of the history, I …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">    Continue reading
+</a>
+  </div>
+</article>
+
+  <div class="pagination">
+  </div>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <ins class="adsbygoogle ads-responsive"
+       data-ad-client="ca-pub-6625957038449899"
+       data-ad-slot="1124188687"></ins>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({});
+  </script>
+
+
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 313 - 0
themes/Flex/docs/blog/tag/theme.html

@@ -0,0 +1,313 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash;     Tag theme
+</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+
+
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">Flex 2.2.0</a></h2>
+    <p>
+          Posted on June 24, 2018 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.2.0 comes with bug fixes and improvements.</p>
+<p>There are new Pygments templates and also a few code highlight fixes. There's also new social icons.</p>
+<p>Version 2.2.0 also comes with new translations. You can see available translations <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>Hope you enjoy this version.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-2.html#flex-pelican-theme-update-2-2">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">Flex 2.1.0</a></h2>
+    <p>
+          Posted on November 16, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.1.0 comes with features that I was delaying for so long.</p>
+<p>Flex 2.1.0 adds support for Google AdSense.</p>
+<p>If you choose wisely, ads are a way to win some money, but if not, you may loose your users due to excessive use of ads …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-1.html#flex-pelican-theme-update-2-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">Flex 2.0</a></h2>
+    <p>
+          Posted on September 13, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> 2.0 comes with new features.
+In fact there are two new features.</p>
+<p>The biggest change is localization support.
+Yes, Flex now can be translated into your language.
+You can read about <a href="https://github.com/alexandrevicenzi/Flex/wiki/Translations">here</a>.</p>
+<p>The biggest challege was to create a way to translate without breaking old versions.
+If …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-2-0.html#flex-pelican-theme-update-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">Flex 1.2.0</a></h2>
+    <p>
+          Posted on June 10, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p><a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received some new features. Version 1.2.0 include new features and some updates.</p>
+<p>For developers there are new color styles for your code. For general purpose there is RUM support, related posts and browser color configuration.</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/31">Update font-awesome</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/34">Added browser color configuration</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/pull/27">Related posts</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/38">More Pygments Styles …</a></li></ul>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-2-0.html#flex-pelican-theme-update-1-2-0">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">Flex 1.1.1</a></h2>
+    <p>
+          Posted on February 27, 2016 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>Today, <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> received a small update.</p>
+<p>Some bugs are now fixed. I think the most important fixes are:</p>
+<ul>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/21">Bug in CSS with placement of "Newer Posts" button</a></li>
+<li><a href="https://github.com/alexandrevicenzi/Flex/issues/14">Posts preview on main page</a></li>
+</ul>
+<p>Hope you enjoy this theme.</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1-1.html#flex-pelican-theme-update-1-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">Flex 1.1.0</a></h2>
+    <p>
+          Posted on October 07, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I've made the <a href="https://github.com/alexandrevicenzi/Flex">Flex theme</a> a time ago. For my surprise, many people are using it. I feel thankful for this.</p>
+<p>So, after some new blogs with this theme, I got issues and PRs on GitHub from these new users. This weekend I had some free time and I release …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme-update-1-1.html#flex-pelican-theme-update-1-1">    Continue reading
+</a>
+  </div>
+  <hr />
+</article>
+<article>
+  <header>
+    <h2><a href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">Flex: Responsive Pelican theme</a></h2>
+    <p>
+          Posted on July 22, 2015 in <a href="http://flex.alxd.me/blog/category/news.html">News</a>
+
+
+
+    </p>
+  </header>
+  <div>
+      <p>I just start a new fresh blog using <a href="http://getpelican.com">Pelican</a>. Sometimes choosing a theme for a new site is something difficult that takes time.</p>
+<p>In the Pelican <a href="http://www.pelicanthemes.com/">theme gallery</a>, I couldn't find anything that I really liked to feet all my needs. So in the first time of the history, I …</p>
+      <br>
+      <a class="btn" href="http://flex.alxd.me/blog/flex-pelican-theme.html#flex-pelican-theme">    Continue reading
+</a>
+  </div>
+</article>
+
+  <div class="pagination">
+  </div>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <ins class="adsbygoogle ads-responsive"
+       data-ad-client="ca-pub-6625957038449899"
+       data-ad-slot="1124188687"></ins>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({});
+  </script>
+
+
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

+ 160 - 0
themes/Flex/docs/blog/tags.html

@@ -0,0 +1,160 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="HandheldFriendly" content="True" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="robots" content="index, follow" />
+
+  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/stylesheet/style.min.css">
+
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/pygments/monokai.min.css">
+  <link rel="stylesheet" type="text/css" href="http://flex.alxd.me/blog/theme/font-awesome/css/font-awesome.min.css">
+
+    <link href="http://flex.alxd.me/blog/static/custom.css" rel="stylesheet">
+
+    <link href="http://flex.alxd.me/blog/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Flex Atom">
+
+
+
+<!-- Google Analytics -->
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55543164-6', 'auto');
+  ga('send', 'pageview');
+</script>
+<!-- End Google Analytics -->
+    <!-- Chrome, Firefox OS and Opera -->
+    <meta name="theme-color" content="#333333">
+    <!-- Windows Phone -->
+    <meta name="msapplication-navbutton-color" content="#333333">
+    <!-- iOS Safari -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <!-- Microsoft EDGE -->
+    <meta name="msapplication-TileColor" content="#333333">
+
+    <meta name="author" content="Alexandre Vicenzi" />
+    <meta name="description" content="Flex - The minimalist Pelican theme." />
+<meta property="og:site_name" content="Flex"/>
+<meta property="og:type" content="blog"/>
+<meta property="og:title" content="Flex"/>
+<meta property="og:description" content="Flex - The minimalist Pelican theme."/>
+<meta property="og:locale" content="en_US"/>
+<meta property="og:url" content="http://flex.alxd.me/blog"/>
+
+  <title>Flex &ndash;     Tags
+</title>
+
+  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script>
+    (adsbygoogle = window.adsbygoogle || []).push({
+      google_ad_client: "ca-pub-6625957038449899",
+      enable_page_level_ads: true
+    });
+  </script>
+</head>
+<body>
+  <aside>
+    <div>
+      <a href="http://flex.alxd.me/blog">
+        <img src="http://flex.alxd.me/blog/theme/img/profile.png" alt="Flex" title="Flex">
+      </a>
+      <h1><a href="http://flex.alxd.me/blog">Flex</a></h1>
+
+<p>The minimalist Pelican theme</p>
+      <nav>
+        <ul class="list">
+          <li><a href="http://flex.alxd.me/blog/pages/about.html#about">About</a></li>
+          <li><a href="http://flex.alxd.me/blog/pages/contact.html#contact">Contact</a></li>
+
+        </ul>
+      </nav>
+
+      <ul class="social">
+        <li><a class="sc-github" href="https://github.com/alexandrevicenzi/Flex" target="_blank"><i class="fa fa-github"></i></a></li>
+        <li><a class="sc-rss" href="/blog/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
+      </ul>
+    </div>
+
+      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+      <ins class="adsbygoogle ads-aside"
+           data-ad-client="ca-pub-6625957038449899"
+           data-ad-slot="8752710348"></ins>
+      <script>
+        (adsbygoogle = window.adsbygoogle || []).push({});
+      </script>
+
+  </aside>
+  <main>
+
+    <nav>
+      <a href="http://flex.alxd.me/blog">    Home
+</a>
+
+      <a href="/archives.html">Archives</a>
+      <a href="/categories.html">Categories</a>
+      <a href="/tags.html">Tags</a>
+
+      <a href="http://flex.alxd.me/blog/feeds/all.atom.xml">    Atom
+</a>
+
+    </nav>
+
+<article class="single">
+  <header>
+    <h1>    Tags
+</h1>
+  </header>
+  <div>
+    <ul class="list">          <li><a href="http://flex.alxd.me/blog/tag/pelican.html">pelican</a> (7)</li>
+          <li><a href="http://flex.alxd.me/blog/tag/python.html">python</a> (7)</li>
+          <li><a href="http://flex.alxd.me/blog/tag/theme.html">theme</a> (7)</li>
+    </ul>
+  </div>
+</article>
+
+    <footer>
+<p>
+  &copy;  2018 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
+</p>
+<p>    Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a>
+</p><p>
+  <a rel="license"
+     href="http://creativecommons.org/licenses/by-sa/4.0/"
+     target="_blank">
+    <img alt="Creative Commons License"
+         title="Creative Commons License"
+         style="border-width:0"
+           src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png"
+         width="80"
+         height="15"/>
+  </a>
+</p>    </footer>
+  </main>
+
+
+    <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-55adbb025d4f7e55" async="async"></script>
+
+
+<script type="application/ld+json">
+{
+  "@context" : "http://schema.org",
+  "@type" : "Blog",
+  "name": " Flex ",
+  "url" : "http://flex.alxd.me/blog",
+  "image": "",
+  "description": "Flex - The minimalist Pelican theme."
+}
+</script>
+
+</body>
+</html>

File diff suppressed because it is too large
+ 4 - 0
themes/Flex/docs/blog/theme/font-awesome/css/font-awesome.min.css


BIN
themes/Flex/docs/blog/theme/font-awesome/fonts/FontAwesome.otf


BIN
themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.eot


File diff suppressed because it is too large
+ 685 - 0
themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.svg


BIN
themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.ttf


BIN
themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.woff


BIN
themes/Flex/docs/blog/theme/font-awesome/fonts/fontawesome-webfont.woff2


BIN
themes/Flex/docs/blog/theme/img/cc/by-nc-nd.png


BIN
themes/Flex/docs/blog/theme/img/cc/by-nc-sa.png


BIN
themes/Flex/docs/blog/theme/img/cc/by-nc.png


BIN
themes/Flex/docs/blog/theme/img/cc/by-nd.png


BIN
themes/Flex/docs/blog/theme/img/cc/by-sa.png


BIN
themes/Flex/docs/blog/theme/img/cc/by.png


BIN
themes/Flex/docs/blog/theme/img/profile.png


+ 1 - 0
themes/Flex/docs/blog/theme/img/profile_license.txt

@@ -0,0 +1 @@
+https://www.iconfinder.com/icons/196742/account_boy_male_man_people_profile_user_icon

+ 60 - 0
themes/Flex/docs/blog/theme/pygments/abap.css

@@ -0,0 +1,60 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #ffffff; }
+.highlight .c { color: #888888; font-style: italic } /* Comment */
+.highlight .err { color: #FF0000 } /* Error */
+.highlight .k { color: #0000ff } /* Keyword */
+.highlight .n { color: #000000 } /* Name */
+.highlight .ch { color: #888888; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #888888; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #888888; font-style: italic } /* Comment.Special */
+.highlight .kc { color: #0000ff } /* Keyword.Constant */
+.highlight .kd { color: #0000ff } /* Keyword.Declaration */
+.highlight .kn { color: #0000ff } /* Keyword.Namespace */
+.highlight .kp { color: #0000ff } /* Keyword.Pseudo */
+.highlight .kr { color: #0000ff } /* Keyword.Reserved */
+.highlight .kt { color: #0000ff } /* Keyword.Type */
+.highlight .m { color: #33aaff } /* Literal.Number */
+.highlight .s { color: #55aa22 } /* Literal.String */
+.highlight .na { color: #000000 } /* Name.Attribute */
+.highlight .nb { color: #000000 } /* Name.Builtin */
+.highlight .nc { color: #000000 } /* Name.Class */
+.highlight .no { color: #000000 } /* Name.Constant */
+.highlight .nd { color: #000000 } /* Name.Decorator */
+.highlight .ni { color: #000000 } /* Name.Entity */
+.highlight .ne { color: #000000 } /* Name.Exception */
+.highlight .nf { color: #000000 } /* Name.Function */
+.highlight .nl { color: #000000 } /* Name.Label */
+.highlight .nn { color: #000000 } /* Name.Namespace */
+.highlight .nx { color: #000000 } /* Name.Other */
+.highlight .py { color: #000000 } /* Name.Property */
+.highlight .nt { color: #000000 } /* Name.Tag */
+.highlight .nv { color: #000000 } /* Name.Variable */
+.highlight .ow { color: #0000ff } /* Operator.Word */
+.highlight .mb { color: #33aaff } /* Literal.Number.Bin */
+.highlight .mf { color: #33aaff } /* Literal.Number.Float */
+.highlight .mh { color: #33aaff } /* Literal.Number.Hex */
+.highlight .mi { color: #33aaff } /* Literal.Number.Integer */
+.highlight .mo { color: #33aaff } /* Literal.Number.Oct */
+.highlight .sa { color: #55aa22 } /* Literal.String.Affix */
+.highlight .sb { color: #55aa22 } /* Literal.String.Backtick */
+.highlight .sc { color: #55aa22 } /* Literal.String.Char */
+.highlight .dl { color: #55aa22 } /* Literal.String.Delimiter */
+.highlight .sd { color: #55aa22 } /* Literal.String.Doc */
+.highlight .s2 { color: #55aa22 } /* Literal.String.Double */
+.highlight .se { color: #55aa22 } /* Literal.String.Escape */
+.highlight .sh { color: #55aa22 } /* Literal.String.Heredoc */
+.highlight .si { color: #55aa22 } /* Literal.String.Interpol */
+.highlight .sx { color: #55aa22 } /* Literal.String.Other */
+.highlight .sr { color: #55aa22 } /* Literal.String.Regex */
+.highlight .s1 { color: #55aa22 } /* Literal.String.Single */
+.highlight .ss { color: #55aa22 } /* Literal.String.Symbol */
+.highlight .bp { color: #000000 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #000000 } /* Name.Function.Magic */
+.highlight .vc { color: #000000 } /* Name.Variable.Class */
+.highlight .vg { color: #000000 } /* Name.Variable.Global */
+.highlight .vi { color: #000000 } /* Name.Variable.Instance */
+.highlight .vm { color: #000000 } /* Name.Variable.Magic */
+.highlight .il { color: #33aaff } /* Literal.Number.Integer.Long */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/abap.min.css


+ 44 - 0
themes/Flex/docs/blog/theme/pygments/algol.css

@@ -0,0 +1,44 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #ffffff; }
+.highlight .c { color: #888888; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { font-weight: bold; text-decoration: underline } /* Keyword */
+.highlight .ch { color: #888888; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #888888; font-weight: bold } /* Comment.Preproc */
+.highlight .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #888888; font-weight: bold } /* Comment.Special */
+.highlight .kc { font-weight: bold; text-decoration: underline } /* Keyword.Constant */
+.highlight .kd { font-weight: bold; font-style: italic; text-decoration: underline } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold; text-decoration: underline } /* Keyword.Namespace */
+.highlight .kp { font-weight: bold; text-decoration: underline } /* Keyword.Pseudo */
+.highlight .kr { font-weight: bold; text-decoration: underline } /* Keyword.Reserved */
+.highlight .kt { font-weight: bold; text-decoration: underline } /* Keyword.Type */
+.highlight .s { color: #666666; font-style: italic } /* Literal.String */
+.highlight .nb { font-weight: bold; font-style: italic } /* Name.Builtin */
+.highlight .nc { color: #666666; font-weight: bold; font-style: italic } /* Name.Class */
+.highlight .no { color: #666666; font-weight: bold; font-style: italic } /* Name.Constant */
+.highlight .nf { color: #666666; font-weight: bold; font-style: italic } /* Name.Function */
+.highlight .nn { color: #666666; font-weight: bold; font-style: italic } /* Name.Namespace */
+.highlight .nv { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .sa { color: #666666; font-style: italic } /* Literal.String.Affix */
+.highlight .sb { color: #666666; font-style: italic } /* Literal.String.Backtick */
+.highlight .sc { color: #666666; font-style: italic } /* Literal.String.Char */
+.highlight .dl { color: #666666; font-style: italic } /* Literal.String.Delimiter */
+.highlight .sd { color: #666666; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #666666; font-style: italic } /* Literal.String.Double */
+.highlight .se { color: #666666; font-style: italic } /* Literal.String.Escape */
+.highlight .sh { color: #666666; font-style: italic } /* Literal.String.Heredoc */
+.highlight .si { color: #666666; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #666666; font-style: italic } /* Literal.String.Other */
+.highlight .sr { color: #666666; font-style: italic } /* Literal.String.Regex */
+.highlight .s1 { color: #666666; font-style: italic } /* Literal.String.Single */
+.highlight .ss { color: #666666; font-style: italic } /* Literal.String.Symbol */
+.highlight .bp { font-weight: bold; font-style: italic } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #666666; font-weight: bold; font-style: italic } /* Name.Function.Magic */
+.highlight .vc { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Class */
+.highlight .vg { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Global */
+.highlight .vi { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Instance */
+.highlight .vm { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Magic */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/algol.min.css


+ 44 - 0
themes/Flex/docs/blog/theme/pygments/algol_nu.css

@@ -0,0 +1,44 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #ffffff; }
+.highlight .c { color: #888888; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { font-weight: bold } /* Keyword */
+.highlight .ch { color: #888888; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #888888; font-weight: bold } /* Comment.Preproc */
+.highlight .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #888888; font-weight: bold } /* Comment.Special */
+.highlight .kc { font-weight: bold } /* Keyword.Constant */
+.highlight .kd { font-weight: bold; font-style: italic } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { font-weight: bold } /* Keyword.Type */
+.highlight .s { color: #666666; font-style: italic } /* Literal.String */
+.highlight .nb { font-weight: bold; font-style: italic } /* Name.Builtin */
+.highlight .nc { color: #666666; font-weight: bold; font-style: italic } /* Name.Class */
+.highlight .no { color: #666666; font-weight: bold; font-style: italic } /* Name.Constant */
+.highlight .nf { color: #666666; font-weight: bold; font-style: italic } /* Name.Function */
+.highlight .nn { color: #666666; font-weight: bold; font-style: italic } /* Name.Namespace */
+.highlight .nv { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .sa { color: #666666; font-style: italic } /* Literal.String.Affix */
+.highlight .sb { color: #666666; font-style: italic } /* Literal.String.Backtick */
+.highlight .sc { color: #666666; font-style: italic } /* Literal.String.Char */
+.highlight .dl { color: #666666; font-style: italic } /* Literal.String.Delimiter */
+.highlight .sd { color: #666666; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #666666; font-style: italic } /* Literal.String.Double */
+.highlight .se { color: #666666; font-style: italic } /* Literal.String.Escape */
+.highlight .sh { color: #666666; font-style: italic } /* Literal.String.Heredoc */
+.highlight .si { color: #666666; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #666666; font-style: italic } /* Literal.String.Other */
+.highlight .sr { color: #666666; font-style: italic } /* Literal.String.Regex */
+.highlight .s1 { color: #666666; font-style: italic } /* Literal.String.Single */
+.highlight .ss { color: #666666; font-style: italic } /* Literal.String.Symbol */
+.highlight .bp { font-weight: bold; font-style: italic } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #666666; font-weight: bold; font-style: italic } /* Name.Function.Magic */
+.highlight .vc { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Class */
+.highlight .vg { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Global */
+.highlight .vi { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Instance */
+.highlight .vm { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Magic */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/algol_nu.min.css


+ 61 - 0
themes/Flex/docs/blog/theme/pygments/arduino.css

@@ -0,0 +1,61 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #ffffff; }
+.highlight .c { color: #95a5a6 } /* Comment */
+.highlight .err { color: #a61717 } /* Error */
+.highlight .k { color: #728E00 } /* Keyword */
+.highlight .n { color: #434f54 } /* Name */
+.highlight .o { color: #728E00 } /* Operator */
+.highlight .ch { color: #95a5a6 } /* Comment.Hashbang */
+.highlight .cm { color: #95a5a6 } /* Comment.Multiline */
+.highlight .cp { color: #728E00 } /* Comment.Preproc */
+.highlight .cpf { color: #95a5a6 } /* Comment.PreprocFile */
+.highlight .c1 { color: #95a5a6 } /* Comment.Single */
+.highlight .cs { color: #95a5a6 } /* Comment.Special */
+.highlight .kc { color: #00979D } /* Keyword.Constant */
+.highlight .kd { color: #728E00 } /* Keyword.Declaration */
+.highlight .kn { color: #728E00 } /* Keyword.Namespace */
+.highlight .kp { color: #00979D } /* Keyword.Pseudo */
+.highlight .kr { color: #00979D } /* Keyword.Reserved */
+.highlight .kt { color: #00979D } /* Keyword.Type */
+.highlight .m { color: #8A7B52 } /* Literal.Number */
+.highlight .s { color: #7F8C8D } /* Literal.String */
+.highlight .na { color: #434f54 } /* Name.Attribute */
+.highlight .nb { color: #728E00 } /* Name.Builtin */
+.highlight .nc { color: #434f54 } /* Name.Class */
+.highlight .no { color: #434f54 } /* Name.Constant */
+.highlight .nd { color: #434f54 } /* Name.Decorator */
+.highlight .ni { color: #434f54 } /* Name.Entity */
+.highlight .ne { color: #434f54 } /* Name.Exception */
+.highlight .nf { color: #D35400 } /* Name.Function */
+.highlight .nl { color: #434f54 } /* Name.Label */
+.highlight .nn { color: #434f54 } /* Name.Namespace */
+.highlight .nx { color: #728E00 } /* Name.Other */
+.highlight .py { color: #434f54 } /* Name.Property */
+.highlight .nt { color: #434f54 } /* Name.Tag */
+.highlight .nv { color: #434f54 } /* Name.Variable */
+.highlight .ow { color: #728E00 } /* Operator.Word */
+.highlight .mb { color: #8A7B52 } /* Literal.Number.Bin */
+.highlight .mf { color: #8A7B52 } /* Literal.Number.Float */
+.highlight .mh { color: #8A7B52 } /* Literal.Number.Hex */
+.highlight .mi { color: #8A7B52 } /* Literal.Number.Integer */
+.highlight .mo { color: #8A7B52 } /* Literal.Number.Oct */
+.highlight .sa { color: #7F8C8D } /* Literal.String.Affix */
+.highlight .sb { color: #7F8C8D } /* Literal.String.Backtick */
+.highlight .sc { color: #7F8C8D } /* Literal.String.Char */
+.highlight .dl { color: #7F8C8D } /* Literal.String.Delimiter */
+.highlight .sd { color: #7F8C8D } /* Literal.String.Doc */
+.highlight .s2 { color: #7F8C8D } /* Literal.String.Double */
+.highlight .se { color: #7F8C8D } /* Literal.String.Escape */
+.highlight .sh { color: #7F8C8D } /* Literal.String.Heredoc */
+.highlight .si { color: #7F8C8D } /* Literal.String.Interpol */
+.highlight .sx { color: #7F8C8D } /* Literal.String.Other */
+.highlight .sr { color: #7F8C8D } /* Literal.String.Regex */
+.highlight .s1 { color: #7F8C8D } /* Literal.String.Single */
+.highlight .ss { color: #7F8C8D } /* Literal.String.Symbol */
+.highlight .bp { color: #728E00 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #D35400 } /* Name.Function.Magic */
+.highlight .vc { color: #434f54 } /* Name.Variable.Class */
+.highlight .vg { color: #434f54 } /* Name.Variable.Global */
+.highlight .vi { color: #434f54 } /* Name.Variable.Instance */
+.highlight .vm { color: #434f54 } /* Name.Variable.Magic */
+.highlight .il { color: #8A7B52 } /* Literal.Number.Integer.Long */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/arduino.min.css


+ 66 - 0
themes/Flex/docs/blog/theme/pygments/autumn.css

@@ -0,0 +1,66 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #ffffff; }
+.highlight .c { color: #aaaaaa; font-style: italic } /* Comment */
+.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #0000aa } /* Keyword */
+.highlight .ch { color: #aaaaaa; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #aaaaaa; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #4c8317 } /* Comment.Preproc */
+.highlight .cpf { color: #aaaaaa; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #aaaaaa; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #0000aa; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #aa0000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00aa00 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { color: #0000aa } /* Keyword.Constant */
+.highlight .kd { color: #0000aa } /* Keyword.Declaration */
+.highlight .kn { color: #0000aa } /* Keyword.Namespace */
+.highlight .kp { color: #0000aa } /* Keyword.Pseudo */
+.highlight .kr { color: #0000aa } /* Keyword.Reserved */
+.highlight .kt { color: #00aaaa } /* Keyword.Type */
+.highlight .m { color: #009999 } /* Literal.Number */
+.highlight .s { color: #aa5500 } /* Literal.String */
+.highlight .na { color: #1e90ff } /* Name.Attribute */
+.highlight .nb { color: #00aaaa } /* Name.Builtin */
+.highlight .nc { color: #00aa00; text-decoration: underline } /* Name.Class */
+.highlight .no { color: #aa0000 } /* Name.Constant */
+.highlight .nd { color: #888888 } /* Name.Decorator */
+.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
+.highlight .nf { color: #00aa00 } /* Name.Function */
+.highlight .nn { color: #00aaaa; text-decoration: underline } /* Name.Namespace */
+.highlight .nt { color: #1e90ff; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #aa0000 } /* Name.Variable */
+.highlight .ow { color: #0000aa } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #009999 } /* Literal.Number.Bin */
+.highlight .mf { color: #009999 } /* Literal.Number.Float */
+.highlight .mh { color: #009999 } /* Literal.Number.Hex */
+.highlight .mi { color: #009999 } /* Literal.Number.Integer */
+.highlight .mo { color: #009999 } /* Literal.Number.Oct */
+.highlight .sa { color: #aa5500 } /* Literal.String.Affix */
+.highlight .sb { color: #aa5500 } /* Literal.String.Backtick */
+.highlight .sc { color: #aa5500 } /* Literal.String.Char */
+.highlight .dl { color: #aa5500 } /* Literal.String.Delimiter */
+.highlight .sd { color: #aa5500 } /* Literal.String.Doc */
+.highlight .s2 { color: #aa5500 } /* Literal.String.Double */
+.highlight .se { color: #aa5500 } /* Literal.String.Escape */
+.highlight .sh { color: #aa5500 } /* Literal.String.Heredoc */
+.highlight .si { color: #aa5500 } /* Literal.String.Interpol */
+.highlight .sx { color: #aa5500 } /* Literal.String.Other */
+.highlight .sr { color: #009999 } /* Literal.String.Regex */
+.highlight .s1 { color: #aa5500 } /* Literal.String.Single */
+.highlight .ss { color: #0000aa } /* Literal.String.Symbol */
+.highlight .bp { color: #00aaaa } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #00aa00 } /* Name.Function.Magic */
+.highlight .vc { color: #aa0000 } /* Name.Variable.Class */
+.highlight .vg { color: #aa0000 } /* Name.Variable.Global */
+.highlight .vi { color: #aa0000 } /* Name.Variable.Instance */
+.highlight .vm { color: #aa0000 } /* Name.Variable.Magic */
+.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/autumn.min.css


+ 52 - 0
themes/Flex/docs/blog/theme/pygments/borland.css

@@ -0,0 +1,52 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #ffffff; }
+.highlight .c { color: #008800; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { color: #000080; font-weight: bold } /* Keyword */
+.highlight .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #008080 } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #008800; font-weight: bold } /* Comment.Special */
+.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #999999 } /* Generic.Heading */
+.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { color: #000080; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #000080; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #000080; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #000080; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #000080; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #000080; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #0000FF } /* Literal.Number */
+.highlight .s { color: #0000FF } /* Literal.String */
+.highlight .na { color: #FF0000 } /* Name.Attribute */
+.highlight .nt { color: #000080; font-weight: bold } /* Name.Tag */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #0000FF } /* Literal.Number.Bin */
+.highlight .mf { color: #0000FF } /* Literal.Number.Float */
+.highlight .mh { color: #0000FF } /* Literal.Number.Hex */
+.highlight .mi { color: #0000FF } /* Literal.Number.Integer */
+.highlight .mo { color: #0000FF } /* Literal.Number.Oct */
+.highlight .sa { color: #0000FF } /* Literal.String.Affix */
+.highlight .sb { color: #0000FF } /* Literal.String.Backtick */
+.highlight .sc { color: #800080 } /* Literal.String.Char */
+.highlight .dl { color: #0000FF } /* Literal.String.Delimiter */
+.highlight .sd { color: #0000FF } /* Literal.String.Doc */
+.highlight .s2 { color: #0000FF } /* Literal.String.Double */
+.highlight .se { color: #0000FF } /* Literal.String.Escape */
+.highlight .sh { color: #0000FF } /* Literal.String.Heredoc */
+.highlight .si { color: #0000FF } /* Literal.String.Interpol */
+.highlight .sx { color: #0000FF } /* Literal.String.Other */
+.highlight .sr { color: #0000FF } /* Literal.String.Regex */
+.highlight .s1 { color: #0000FF } /* Literal.String.Single */
+.highlight .ss { color: #0000FF } /* Literal.String.Symbol */
+.highlight .il { color: #0000FF } /* Literal.Number.Integer.Long */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/borland.min.css


+ 39 - 0
themes/Flex/docs/blog/theme/pygments/bw.css

@@ -0,0 +1,39 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #ffffff; }
+.highlight .c { font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { font-weight: bold } /* Keyword */
+.highlight .ch { font-style: italic } /* Comment.Hashbang */
+.highlight .cm { font-style: italic } /* Comment.Multiline */
+.highlight .cpf { font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { font-style: italic } /* Comment.Single */
+.highlight .cs { font-style: italic } /* Comment.Special */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gh { font-weight: bold } /* Generic.Heading */
+.highlight .gp { font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { font-weight: bold } /* Generic.Subheading */
+.highlight .kc { font-weight: bold } /* Keyword.Constant */
+.highlight .kd { font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold } /* Keyword.Namespace */
+.highlight .kr { font-weight: bold } /* Keyword.Reserved */
+.highlight .s { font-style: italic } /* Literal.String */
+.highlight .nc { font-weight: bold } /* Name.Class */
+.highlight .ni { font-weight: bold } /* Name.Entity */
+.highlight .ne { font-weight: bold } /* Name.Exception */
+.highlight .nn { font-weight: bold } /* Name.Namespace */
+.highlight .nt { font-weight: bold } /* Name.Tag */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .sa { font-style: italic } /* Literal.String.Affix */
+.highlight .sb { font-style: italic } /* Literal.String.Backtick */
+.highlight .sc { font-style: italic } /* Literal.String.Char */
+.highlight .dl { font-style: italic } /* Literal.String.Delimiter */
+.highlight .sd { font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { font-style: italic } /* Literal.String.Double */
+.highlight .se { font-weight: bold; font-style: italic } /* Literal.String.Escape */
+.highlight .sh { font-style: italic } /* Literal.String.Heredoc */
+.highlight .si { font-weight: bold; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { font-style: italic } /* Literal.String.Other */
+.highlight .sr { font-style: italic } /* Literal.String.Regex */
+.highlight .s1 { font-style: italic } /* Literal.String.Single */
+.highlight .ss { font-style: italic } /* Literal.String.Symbol */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/bw.min.css


+ 69 - 0
themes/Flex/docs/blog/theme/pygments/colorful.css

@@ -0,0 +1,69 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #ffffff; }
+.highlight .c { color: #888888 } /* Comment */
+.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #008800; font-weight: bold } /* Keyword */
+.highlight .o { color: #333333 } /* Operator */
+.highlight .ch { color: #888888 } /* Comment.Hashbang */
+.highlight .cm { color: #888888 } /* Comment.Multiline */
+.highlight .cp { color: #557799 } /* Comment.Preproc */
+.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888 } /* Comment.Single */
+.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
+.highlight .s { background-color: #fff0f0 } /* Literal.String */
+.highlight .na { color: #0000CC } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
+.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #007700 } /* Name.Tag */
+.highlight .nv { color: #996633 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
+.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
+.highlight .sc { color: #0044DD } /* Literal.String.Char */
+.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
+.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
+.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
+.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
+.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
+.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
+.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
+.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
+.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
+.highlight .vc { color: #336699 } /* Name.Variable.Class */
+.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
+.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
+.highlight .vm { color: #996633 } /* Name.Variable.Magic */
+.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/colorful.min.css


+ 69 - 0
themes/Flex/docs/blog/theme/pygments/default.css

@@ -0,0 +1,69 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #f8f8f8; }
+.highlight .c { color: #408080; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #008000; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #B00040 } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BA2121 } /* Literal.String */
+.highlight .na { color: #7D9029 } /* Name.Attribute */
+.highlight .nb { color: #008000 } /* Name.Builtin */
+.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0000FF } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #19177C } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #666666 } /* Literal.Number.Bin */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
+.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
+.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #0000FF } /* Name.Function.Magic */
+.highlight .vc { color: #19177C } /* Name.Variable.Class */
+.highlight .vg { color: #19177C } /* Name.Variable.Global */
+.highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.highlight .vm { color: #19177C } /* Name.Variable.Magic */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/default.min.css


+ 69 - 0
themes/Flex/docs/blog/theme/pygments/emacs.css

@@ -0,0 +1,69 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #f8f8f8; }
+.highlight .c { color: #008800; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #AA22FF; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #008800 } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #008800; font-weight: bold } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #AA22FF } /* Keyword.Pseudo */
+.highlight .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BB4444 } /* Literal.String */
+.highlight .na { color: #BB4444 } /* Name.Attribute */
+.highlight .nb { color: #AA22FF } /* Name.Builtin */
+.highlight .nc { color: #0000FF } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #00A000 } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #B8860B } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #666666 } /* Literal.Number.Bin */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sa { color: #BB4444 } /* Literal.String.Affix */
+.highlight .sb { color: #BB4444 } /* Literal.String.Backtick */
+.highlight .sc { color: #BB4444 } /* Literal.String.Char */
+.highlight .dl { color: #BB4444 } /* Literal.String.Delimiter */
+.highlight .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BB4444 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BB4444 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BB4444 } /* Literal.String.Single */
+.highlight .ss { color: #B8860B } /* Literal.String.Symbol */
+.highlight .bp { color: #AA22FF } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #00A000 } /* Name.Function.Magic */
+.highlight .vc { color: #B8860B } /* Name.Variable.Class */
+.highlight .vg { color: #B8860B } /* Name.Variable.Global */
+.highlight .vi { color: #B8860B } /* Name.Variable.Instance */
+.highlight .vm { color: #B8860B } /* Name.Variable.Magic */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/emacs.min.css


+ 69 - 0
themes/Flex/docs/blog/theme/pygments/friendly.css

@@ -0,0 +1,69 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #f0f0f0; }
+.highlight .c { color: #60a0b0; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #60a0b0; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .cpf { color: #60a0b0; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #40a070 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #40a070 } /* Literal.Number.Bin */
+.highlight .mf { color: #40a070 } /* Literal.Number.Float */
+.highlight .mh { color: #40a070 } /* Literal.Number.Hex */
+.highlight .mi { color: #40a070 } /* Literal.Number.Integer */
+.highlight .mo { color: #40a070 } /* Literal.Number.Oct */
+.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06287e } /* Name.Function.Magic */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
+.highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/friendly.min.css


+ 78 - 0
themes/Flex/docs/blog/theme/pygments/fruity.css

@@ -0,0 +1,78 @@
+.highlight .hll { background-color: #333333 }
+.highlight  { background: #111111; color: #ffffff }
+.highlight .c { color: #008800; font-style: italic; background-color: #0f140f } /* Comment */
+.highlight .err { color: #ffffff } /* Error */
+.highlight .esc { color: #ffffff } /* Escape */
+.highlight .g { color: #ffffff } /* Generic */
+.highlight .k { color: #fb660a; font-weight: bold } /* Keyword */
+.highlight .l { color: #ffffff } /* Literal */
+.highlight .n { color: #ffffff } /* Name */
+.highlight .o { color: #ffffff } /* Operator */
+.highlight .x { color: #ffffff } /* Other */
+.highlight .p { color: #ffffff } /* Punctuation */
+.highlight .ch { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Multiline */
+.highlight .cp { color: #ff0007; font-weight: bold; font-style: italic; background-color: #0f140f } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Single */
+.highlight .cs { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Special */
+.highlight .gd { color: #ffffff } /* Generic.Deleted */
+.highlight .ge { color: #ffffff } /* Generic.Emph */
+.highlight .gr { color: #ffffff } /* Generic.Error */
+.highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #ffffff } /* Generic.Inserted */
+.highlight .go { color: #444444; background-color: #222222 } /* Generic.Output */
+.highlight .gp { color: #ffffff } /* Generic.Prompt */
+.highlight .gs { color: #ffffff } /* Generic.Strong */
+.highlight .gu { color: #ffffff; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #ffffff } /* Generic.Traceback */
+.highlight .kc { color: #fb660a; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #fb660a; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #fb660a; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #fb660a } /* Keyword.Pseudo */
+.highlight .kr { color: #fb660a; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #cdcaa9; font-weight: bold } /* Keyword.Type */
+.highlight .ld { color: #ffffff } /* Literal.Date */
+.highlight .m { color: #0086f7; font-weight: bold } /* Literal.Number */
+.highlight .s { color: #0086d2 } /* Literal.String */
+.highlight .na { color: #ff0086; font-weight: bold } /* Name.Attribute */
+.highlight .nb { color: #ffffff } /* Name.Builtin */
+.highlight .nc { color: #ffffff } /* Name.Class */
+.highlight .no { color: #0086d2 } /* Name.Constant */
+.highlight .nd { color: #ffffff } /* Name.Decorator */
+.highlight .ni { color: #ffffff } /* Name.Entity */
+.highlight .ne { color: #ffffff } /* Name.Exception */
+.highlight .nf { color: #ff0086; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #ffffff } /* Name.Label */
+.highlight .nn { color: #ffffff } /* Name.Namespace */
+.highlight .nx { color: #ffffff } /* Name.Other */
+.highlight .py { color: #ffffff } /* Name.Property */
+.highlight .nt { color: #fb660a; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #fb660a } /* Name.Variable */
+.highlight .ow { color: #ffffff } /* Operator.Word */
+.highlight .w { color: #888888 } /* Text.Whitespace */
+.highlight .mb { color: #0086f7; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #0086f7; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #0086f7; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #0086f7; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #0086f7; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { color: #0086d2 } /* Literal.String.Affix */
+.highlight .sb { color: #0086d2 } /* Literal.String.Backtick */
+.highlight .sc { color: #0086d2 } /* Literal.String.Char */
+.highlight .dl { color: #0086d2 } /* Literal.String.Delimiter */
+.highlight .sd { color: #0086d2 } /* Literal.String.Doc */
+.highlight .s2 { color: #0086d2 } /* Literal.String.Double */
+.highlight .se { color: #0086d2 } /* Literal.String.Escape */
+.highlight .sh { color: #0086d2 } /* Literal.String.Heredoc */
+.highlight .si { color: #0086d2 } /* Literal.String.Interpol */
+.highlight .sx { color: #0086d2 } /* Literal.String.Other */
+.highlight .sr { color: #0086d2 } /* Literal.String.Regex */
+.highlight .s1 { color: #0086d2 } /* Literal.String.Single */
+.highlight .ss { color: #0086d2 } /* Literal.String.Symbol */
+.highlight .bp { color: #ffffff } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #ff0086; font-weight: bold } /* Name.Function.Magic */
+.highlight .vc { color: #fb660a } /* Name.Variable.Class */
+.highlight .vg { color: #fb660a } /* Name.Variable.Global */
+.highlight .vi { color: #fb660a } /* Name.Variable.Instance */
+.highlight .vm { color: #fb660a } /* Name.Variable.Magic */
+.highlight .il { color: #0086f7; font-weight: bold } /* Literal.Number.Integer.Long */

File diff suppressed because it is too large
+ 1 - 0
themes/Flex/docs/blog/theme/pygments/fruity.min.css


+ 69 - 0
themes/Flex/docs/blog/theme/pygments/github.css

@@ -0,0 +1,69 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #ffffff; }
+.highlight .c { color: #999988; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { color: #000000; font-weight: bold } /* Keyword */
+.highlight .o { color: #000000; font-weight: bold } /* Operator */
+.highlight .ch { color: #999988; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #999988; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #999999 } /* Generic.Heading */
+.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { color: #000000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #009999 } /* Literal.Number */
+.highlight .s { color: #dd1144 } /* Literal.String */
+.highlight .na { color: #008080 } /* Name.Attribute */
+.highlight .nb { color: #0086B3 } /* Name.Builtin */
+.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
+.highlight .no { color: #008080 } /* Name.Constant */
+.highlight .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #800080 } /* Name.Entity */
+.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #990000; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #555555 } /* Name.Namespace */
+.highlight .nt { color: #000080 } /* Name.Tag */
+.highlight .nv { color: #008080 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #009999 } /* Literal.Number.Bin */
+.highlight .mf { color: #009999 } /* Literal.Number.Float */
+.highlight .mh { color: #009999 } /* Literal.Number.Hex */
+.highlight .mi { color: #009999 } /* Literal.Number.Integer */
+.highlight .mo { color: #009999 } /* Literal.Number.Oct */
+.highlight .sa { color: #dd1144 } /* Literal.String.Affix */
+.highlight .sb { color: #dd1144 } /* Literal.String.Backtick */
+.highlight .sc { color: #dd1144 } /* Literal.String.Char */
+.highlight .dl { color: #dd1144 } /* Literal.String.Delimiter */
+.highlight .sd { color: #dd1144 } /* Literal.String.Doc */
+.highlight .s2 { color: #dd1144 } /* Literal.String.Double */
+.highlight .se { color: #dd1144 } /* Literal.String.Escape */
+.highlight .sh { color: #dd1144 } /* Literal.String.Heredoc */
+.highlight .si { color: #dd1144 } /* Literal.String.Interpol */
+.highlight .sx { color: #dd1144 } /* Literal.String.Other */
+.highlight .sr { color: #009926 } /* Literal.String.Regex */
+.highlight .s1 { color: #dd1144 } /* Literal.String.Single */
+.highlight .ss { color: #990073 } /* Literal.String.Symbol */
+.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #990000; font-weight: bold } /* Name.Function.Magic */
+.highlight .vc { color: #008080 } /* Name.Variable.Class */
+.highlight .vg { color: #008080 } /* Name.Variable.Global */
+.highlight .vi { color: #008080 } /* Name.Variable.Instance */
+.highlight .vm { color: #008080 } /* Name.Variable.Magic */
+.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */

+ 0 - 0
themes/Flex/docs/blog/theme/pygments/github.min.css


Some files were not shown because too many files changed in this diff