From e5c0a54c57eb7d9cd718a382f66977ea8becf24a Mon Sep 17 00:00:00 2001
From: Honza Javorek
Date: Tue, 24 Sep 2013 14:19:47 +0200
Subject: [PATCH 0001/1388] Removed obsolete comment.
---
pelican/contents.py | 4 ----
1 file changed, 4 deletions(-)
diff --git a/pelican/contents.py b/pelican/contents.py
index b453f61b..1858013c 100644
--- a/pelican/contents.py
+++ b/pelican/contents.py
@@ -197,10 +197,6 @@ class Content(object):
value = m.group('value')
origin = m.group('path')
- # we support only filename for now. the plan is to support
- # categories, tags, etc. in the future, but let's keep things
- # simple for now.
-
# XXX Put this in a different location.
if what == 'filename':
if value.startswith('/'):
From 7d43c4fa00fa31c9ef445a5f923255da870bf650 Mon Sep 17 00:00:00 2001
From: Honza Javorek
Date: Tue, 24 Sep 2013 15:18:09 +0200
Subject: [PATCH 0002/1388] Support for params and fragments in intrasite
links. Adresses #1063.
---
pelican/contents.py | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/pelican/contents.py b/pelican/contents.py
index 1858013c..83fbad8f 100644
--- a/pelican/contents.py
+++ b/pelican/contents.py
@@ -5,6 +5,7 @@ import six
import copy
import locale
import logging
+import urlparse
import functools
import os
import re
@@ -194,30 +195,36 @@ class Content(object):
def replacer(m):
what = m.group('what')
- value = m.group('value')
+ value = urlparse.urlparse(m.group('value'))
+ path = value.path
origin = m.group('path')
# XXX Put this in a different location.
if what == 'filename':
- if value.startswith('/'):
- value = value[1:]
+ if path.startswith('/'):
+ path = path[1:]
else:
# relative to the source path of this content
- value = self.get_relative_source_path(
- os.path.join(self.relative_dir, value)
+ path = self.get_relative_source_path(
+ os.path.join(self.relative_dir, path)
)
- if value in self._context['filenames']:
+ if path in self._context['filenames']:
origin = '/'.join((siteurl,
- self._context['filenames'][value].url))
- origin = origin.replace('\\', '/') # Fow windows paths.
+ self._context['filenames'][path].url))
+ origin = origin.replace('\\', '/') # for Windows paths.
else:
logger.warning("Unable to find {fn}, skipping url"
- " replacement".format(fn=value))
+ " replacement".format(fn=path))
elif what == 'category':
- origin = Category(value, self.settings).url
+ origin = Category(path, self.settings).url
elif what == 'tag':
- origin = Tag(value, self.settings).url
+ origin = Tag(path, self.settings).url
+
+ # keep all other parts, such as query, fragment, etc.
+ parts = list(value)
+ parts[2] = origin
+ origin = urlparse.urlunparse(parts)
return ''.join((m.group('markup'), m.group('quote'), origin,
m.group('quote')))
From 2c468f091a587257f3d455f5727fa4c05cbbca87 Mon Sep 17 00:00:00 2001
From: Justin Mayer
Date: Tue, 24 Sep 2013 21:57:28 +0200
Subject: [PATCH 0003/1388] Prepare version 3.3.1.dev for next development
cycle
---
README.rst | 2 +-
docs/changelog.rst | 5 +++++
pelican/__init__.py | 2 +-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/README.rst b/README.rst
index 278f3a44..20c3f217 100644
--- a/README.rst
+++ b/README.rst
@@ -61,7 +61,7 @@ client handy, use the webchat_ for quick feedback.
.. _reStructuredText: http://docutils.sourceforge.net/rst.html
.. _Markdown: http://daringfireball.net/projects/markdown/
.. _Jinja2: http://jinja.pocoo.org/
-.. _`Pelican documentation`: http://docs.getpelican.com/3.3.0/
+.. _`Pelican documentation`: http://docs.getpelican.com/latest/
.. _`Pelican's internals`: http://docs.getpelican.com/en/latest/internals.html
.. _`#pelican on Freenode`: irc://irc.freenode.net/pelican
.. _webchat: http://webchat.freenode.net/?channels=pelican&uio=d4
diff --git a/docs/changelog.rst b/docs/changelog.rst
index a5f0c1f3..54b0d871 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -1,6 +1,11 @@
Release history
###############
+Next release
+============
+
+- Nothing yet
+
3.3.0 (2013-09-24)
==================
diff --git a/pelican/__init__.py b/pelican/__init__.py
index 9daeed76..b3ffe21a 100644
--- a/pelican/__init__.py
+++ b/pelican/__init__.py
@@ -22,7 +22,7 @@ from pelican.settings import read_settings
from pelican.utils import clean_output_dir, folder_watcher, file_watcher
from pelican.writers import Writer
-__version__ = "3.3.0"
+__version__ = "3.3.1.dev"
DEFAULT_CONFIG_NAME = 'pelicanconf.py'
From a987b65bd2abe6faa37425c4f061362435125382 Mon Sep 17 00:00:00 2001
From: "M. Utku Altinkaya"
Date: Wed, 25 Sep 2013 04:43:06 +0300
Subject: [PATCH 0004/1388] Watch static folders in Autoreload mode
---
pelican/__init__.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/pelican/__init__.py b/pelican/__init__.py
index b3ffe21a..5cf89927 100644
--- a/pelican/__init__.py
+++ b/pelican/__init__.py
@@ -320,6 +320,9 @@ def main():
pelican.ignore_files),
'settings': file_watcher(args.settings)}
+ for static_path in settings.get("STATIC_PATHS", []):
+ watchers[static_path] = file_watcher(static_path)
+
try:
if args.autoreload:
print(' --- AutoReload Mode: Monitoring `content`, `theme` and'
From 6fb0335269e9d9dbd79c2f4cb020cd9a6b03313a Mon Sep 17 00:00:00 2001
From: Honza Javorek
Date: Wed, 25 Sep 2013 11:39:29 +0200
Subject: [PATCH 0005/1388] Attempt to be compilant with Python 3.
---
pelican/contents.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/pelican/contents.py b/pelican/contents.py
index 83fbad8f..dbc33716 100644
--- a/pelican/contents.py
+++ b/pelican/contents.py
@@ -5,12 +5,16 @@ import six
import copy
import locale
import logging
-import urlparse
import functools
import os
import re
import sys
+try:
+ from urlparse import urlparse, urlunparse
+except ImportError:
+ from urllib.parse import urlparse, urlunparse
+
from datetime import datetime
@@ -195,7 +199,7 @@ class Content(object):
def replacer(m):
what = m.group('what')
- value = urlparse.urlparse(m.group('value'))
+ value = urlparse(m.group('value'))
path = value.path
origin = m.group('path')
@@ -224,7 +228,7 @@ class Content(object):
# keep all other parts, such as query, fragment, etc.
parts = list(value)
parts[2] = origin
- origin = urlparse.urlunparse(parts)
+ origin = urlunparse(parts)
return ''.join((m.group('markup'), m.group('quote'), origin,
m.group('quote')))
From 7415d370e6a9c6f9b96da927685ffe9a6bc6eada Mon Sep 17 00:00:00 2001
From: Honza Javorek
Date: Wed, 25 Sep 2013 16:13:28 +0200
Subject: [PATCH 0006/1388] Added tests.
---
pelican/tests/test_contents.py | 60 ++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/pelican/tests/test_contents.py b/pelican/tests/test_contents.py
index 936903c1..2e44253a 100644
--- a/pelican/tests/test_contents.py
+++ b/pelican/tests/test_contents.py
@@ -204,6 +204,66 @@ class TestPage(unittest.TestCase):
('A simple test, with a '
'link'))
+ def test_intrasite_link(self):
+ article = type(b'_DummyArticle', (object,), {'url': 'article.html'})
+
+ args = self.page_kwargs.copy()
+ args['settings'] = get_settings()
+ args['source_path'] = 'content'
+ args['context']['filenames'] = {'article.rst': article}
+
+ # Classic intrasite link via filename
+ args['content'] = (
+ 'A simple test, with a '
+ 'link'
+ )
+ content = Page(**args).get_content('http://notmyidea.org')
+ self.assertEquals(
+ content,
+ 'A simple test, with a '
+ 'link'
+ )
+
+ # fragment
+ args['content'] = (
+ 'A simple test, with a '
+ 'link'
+ )
+ content = Page(**args).get_content('http://notmyidea.org')
+ self.assertEquals(
+ content,
+ 'A simple test, with a '
+ 'link'
+ )
+
+ # query
+ args['content'] = (
+ 'A simple test, with a '
+ 'link'
+ )
+ content = Page(**args).get_content('http://notmyidea.org')
+ self.assertEquals(
+ content,
+ 'A simple test, with a '
+ 'link'
+ )
+
+ # combination
+ args['content'] = (
+ 'A simple test, with a '
+ 'link'
+ )
+ content = Page(**args).get_content('http://notmyidea.org')
+ self.assertEquals(
+ content,
+ 'A simple test, with a '
+ 'link'
+ )
+
class TestArticle(TestPage):
def test_template(self):
From 6ed23fec7dc1c907b9dcc3eb3d08eca61c1bb9b5 Mon Sep 17 00:00:00 2001
From: Honza Javorek
Date: Wed, 25 Sep 2013 16:31:23 +0200
Subject: [PATCH 0007/1388] Tuned the tests so they are PY3 compilant.
---
pelican/tests/test_contents.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/pelican/tests/test_contents.py b/pelican/tests/test_contents.py
index 2e44253a..437d0228 100644
--- a/pelican/tests/test_contents.py
+++ b/pelican/tests/test_contents.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
+import six
from datetime import datetime
from sys import platform
@@ -205,7 +206,10 @@ class TestPage(unittest.TestCase):
'link'))
def test_intrasite_link(self):
- article = type(b'_DummyArticle', (object,), {'url': 'article.html'})
+ # type does not take unicode in PY2 and bytes in PY3, which in
+ # combination with unicode literals leads to following insane line:
+ cls_name = '_DummyArticle' if six.PY3 else b'_DummyArticle'
+ article = type(cls_name, (object,), {'url': 'article.html'})
args = self.page_kwargs.copy()
args['settings'] = get_settings()
From a49b744e951a810040baca27ff04fda23f973e26 Mon Sep 17 00:00:00 2001
From: Simon Conseil
Date: Thu, 26 Sep 2013 00:37:35 +0200
Subject: [PATCH 0008/1388] Fix tests with latest versions of smartypants.
smartypants is now py3 compatible but the default settings for double quotes has
been changed (http://pythonhosted.org/smartypants/changes.html).
This commit:
- update the typogrify test (change quotes, and add more test casesi: caps word,
ellipsis)
- install typogrify on travis
- uses upstream version of smartypants in tox instead of dmdm's fork for py3
---
.travis.yml | 2 ++
pelican/tests/content/article.rst | 2 +-
pelican/tests/test_readers.py | 13 +++++++------
tox.ini | 1 -
4 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 1df32baa..62373e68 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,6 +8,8 @@ before_install:
- sudo locale-gen fr_FR.UTF-8 tr_TR.UTF-8
install:
- if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then ln -s /usr/share/asciidoc/asciidocapi.py ~/virtualenv/python2.7/lib/python2.7/site-packages/; fi
+ - if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then pip install typogrify ; fi
+ - if [[ $TRAVIS_PYTHON_VERSION == '3.3' ]]; then pip install git+https://github.com/dmdm/typogrify.git@py3k#egg=typogrify; fi
- pip install mock nose nose-cov Markdown
- pip install .
script: nosetests -sv --with-coverage --cover-package=pelican pelican
diff --git a/pelican/tests/content/article.rst b/pelican/tests/content/article.rst
index 7109c29b..793e6869 100644
--- a/pelican/tests/content/article.rst
+++ b/pelican/tests/content/article.rst
@@ -1,6 +1,6 @@
Article title
#############
-This is some content. With some stuff to "typogrify".
+THIS is some content. With some stuff to "typogrify"...
Now with added support for :abbr:`TLA (three letter acronym)`.
diff --git a/pelican/tests/test_readers.py b/pelican/tests/test_readers.py
index b6652d03..841e3d34 100644
--- a/pelican/tests/test_readers.py
+++ b/pelican/tests/test_readers.py
@@ -104,8 +104,8 @@ class RstReaderTest(ReaderTest):
# if nothing is specified in the settings, the content should be
# unmodified
page = self.read_file(path='article.rst')
- expected = ('This is some content. With some stuff to '
- '"typogrify".
\nNow with added '
+ expected = ('
THIS is some content. With some stuff to '
+ '"typogrify"...
\nNow with added '
'support for '
'TLA.
\n')
@@ -114,10 +114,11 @@ class RstReaderTest(ReaderTest):
try:
# otherwise, typogrify should be applied
page = self.read_file(path='article.rst', TYPOGRIFY=True)
- expected = ('This is some content. With some stuff to '
- '“typogrify”.
\nNow with added '
- 'support for '
- 'TLA.
\n')
+ expected = (
+ 'THIS is some content. '
+ 'With some stuff to "typogrify"…
\n'
+ 'Now with added support for TLA.
\n')
self.assertEqual(page.content, expected)
except ImportError:
diff --git a/tox.ini b/tox.ini
index 8763c963..440216cf 100644
--- a/tox.ini
+++ b/tox.ini
@@ -22,6 +22,5 @@ deps =
mock
Markdown
BeautifulSoup4
- git+https://github.com/dmdm/smartypants.git#egg=smartypants
git+https://github.com/dmdm/typogrify.git@py3k#egg=typogrify
lxml
From cb82e486369479432624b293aa1176f11c11f074 Mon Sep 17 00:00:00 2001
From: Justin Mayer
Date: Fri, 4 Oct 2013 16:23:19 +0200
Subject: [PATCH 0009/1388] None, not False, in *_SAVE_AS docs. Fixes #1106.
---
docs/settings.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/settings.rst b/docs/settings.rst
index b6c18fa9..82752436 100644
--- a/docs/settings.rst
+++ b/docs/settings.rst
@@ -278,7 +278,7 @@ Setting name (default value) What does it do?
If you do not want one or more of the default pages to be created (e.g.,
you are the only author on your site and thus do not need an Authors page),
- set the corresponding ``*_SAVE_AS`` setting to ``False`` to prevent the
+ set the corresponding ``*_SAVE_AS`` setting to ``None`` to prevent the
relevant page from being generated.
Timezone
From 9657071301ffb7029d17a675f9544e7ec458b202 Mon Sep 17 00:00:00 2001
From: Tshepang Lekhonkhobe
Date: Sun, 6 Oct 2013 15:30:14 +0200
Subject: [PATCH 0010/1388] Python 3.3 got mock
---
pelican/tests/test_generators.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/pelican/tests/test_generators.py b/pelican/tests/test_generators.py
index f47ce7d3..e821bb86 100644
--- a/pelican/tests/test_generators.py
+++ b/pelican/tests/test_generators.py
@@ -3,7 +3,10 @@ from __future__ import unicode_literals
import os
from codecs import open
-from mock import MagicMock
+try:
+ from unittest.mock import MagicMock
+except ImportError:
+ from mock import MagicMock
from shutil import rmtree
from tempfile import mkdtemp
From 67d3ab8883ba072cc10da214db25dceedb0000a1 Mon Sep 17 00:00:00 2001
From: Tshepang Lekhonkhobe
Date: Sun, 6 Oct 2013 16:15:43 +0200
Subject: [PATCH 0011/1388] assertEquals is deprecated in favor of assertEqual
---
pelican/tests/test_contents.py | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/pelican/tests/test_contents.py b/pelican/tests/test_contents.py
index 437d0228..9c894ffc 100644
--- a/pelican/tests/test_contents.py
+++ b/pelican/tests/test_contents.py
@@ -193,17 +193,17 @@ class TestPage(unittest.TestCase):
'link')
page = Page(**args)
content = page.get_content('http://notmyidea.org')
- self.assertEquals(content, ('A simple test, with a '
- 'link'))
+ self.assertEqual(content, ('A simple test, with a '
+ 'link'))
# Category
args['content'] = ('A simple test, with a '
'link')
page = Page(**args)
content = page.get_content('http://notmyidea.org')
- self.assertEquals(content,
- ('A simple test, with a '
- 'link'))
+ self.assertEqual(content,
+ ('A simple test, with a '
+ 'link'))
def test_intrasite_link(self):
# type does not take unicode in PY2 and bytes in PY3, which in
@@ -222,7 +222,7 @@ class TestPage(unittest.TestCase):
'link'
)
content = Page(**args).get_content('http://notmyidea.org')
- self.assertEquals(
+ self.assertEqual(
content,
'A simple test, with a '
'link'
@@ -234,7 +234,7 @@ class TestPage(unittest.TestCase):
'link'
)
content = Page(**args).get_content('http://notmyidea.org')
- self.assertEquals(
+ self.assertEqual(
content,
'A simple test, with a '
'link'
@@ -247,7 +247,7 @@ class TestPage(unittest.TestCase):
'?utm_whatever=234&highlight=word">link'
)
content = Page(**args).get_content('http://notmyidea.org')
- self.assertEquals(
+ self.assertEqual(
content,
'A simple test, with a '
'link'
)
content = Page(**args).get_content('http://notmyidea.org')
- self.assertEquals(
+ self.assertEqual(
content,
'A simple test, with a '
'
Date: Tue, 8 Oct 2013 13:20:56 +0200
Subject: [PATCH 0013/1388] Add Tumblr and Posterous to importer description
---
pelican/tools/pelican_import.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/pelican/tools/pelican_import.py b/pelican/tools/pelican_import.py
index 8cc5b083..69e1f1b4 100755
--- a/pelican/tools/pelican_import.py
+++ b/pelican/tools/pelican_import.py
@@ -98,7 +98,7 @@ def decode_wp_content(content, br=True):
def wp2fields(xml):
- """Opens a wordpress XML file, and yield pelican fields"""
+ """Opens a wordpress XML file, and yield Pelican fields"""
try:
from bs4 import BeautifulSoup
except ImportError:
@@ -551,8 +551,9 @@ def fields2pelican(fields, out_markup, output_path,
def main():
parser = argparse.ArgumentParser(
- description="Transform feed, Wordpress or Dotclear files to reST (rst) "
- "or Markdown (md) files. Be sure to have pandoc installed.",
+ description="Transform feed, WordPress, Tumblr, Dotclear, or Posterous "
+ "files into reST (rst) or Markdown (md) files. Be sure to "
+ "have pandoc installed.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument(dest='input', help='The input file to read')
From 00150f3556b99f68ef8290bd65d1e7865d9a278e Mon Sep 17 00:00:00 2001
From: David Branner
Date: Wed, 9 Oct 2013 11:53:11 -0400
Subject: [PATCH 0014/1388] xml => lxml for bs4, in pelican-import.wp2fields()
---
pelican/tools/pelican_import.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pelican/tools/pelican_import.py b/pelican/tools/pelican_import.py
index 69e1f1b4..54a2be2f 100755
--- a/pelican/tools/pelican_import.py
+++ b/pelican/tools/pelican_import.py
@@ -109,7 +109,7 @@ def wp2fields(xml):
with open(xml, encoding='utf-8') as infile:
xmlfile = infile.read()
- soup = BeautifulSoup(xmlfile, "xml")
+ soup = BeautifulSoup(xmlfile, "lxml")
items = soup.rss.channel.findAll('item')
for item in items:
From 6dafe69ac66a9732c4bb5bbcb889bb297e9e4964 Mon Sep 17 00:00:00 2001
From: Torrance
Date: Thu, 10 Oct 2013 14:29:42 +1300
Subject: [PATCH 0015/1388] Ensure headers from base.html are included.
---
pelican/themes/simple/templates/article.html | 1 +
1 file changed, 1 insertion(+)
diff --git a/pelican/themes/simple/templates/article.html b/pelican/themes/simple/templates/article.html
index 5025a5e7..79124725 100644
--- a/pelican/themes/simple/templates/article.html
+++ b/pelican/themes/simple/templates/article.html
@@ -1,5 +1,6 @@
{% extends "base.html" %}
{% block head %}
+ {{ super() }}
{% for keyword in article.keywords %}
{% endfor %}
From caa833877dc11362090c97552135668240b0b588 Mon Sep 17 00:00:00 2001
From: Adrien Oliva
Date: Fri, 11 Oct 2013 15:52:47 +0200
Subject: [PATCH 0016/1388] Change StandardError to RuntimeError
Since built-in exception "StandardError" does not exist in the latest python version (at least in version 3.3), use RuntimeError instead (which exists from python2.6 to python3.4)
---
pelican/writers.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pelican/writers.py b/pelican/writers.py
index da105929..6cf5232d 100644
--- a/pelican/writers.py
+++ b/pelican/writers.py
@@ -60,7 +60,7 @@ class Writer(object):
"""
if filename in self._overridden_files:
if override:
- raise StandardError('File %s is set to be overridden twice'
+ raise RuntimeError('File %s is set to be overridden twice'
% filename)
else:
logger.info('skipping %s' % filename)
@@ -69,7 +69,7 @@ class Writer(object):
if override:
logger.info('overwriting %s' % filename)
else:
- raise StandardError('File %s is to be overwritten' % filename)
+ raise RuntimeError('File %s is to be overwritten' % filename)
if override:
self._overridden_files.add(filename)
self._written_files.add(filename)
From 2b5db0321b021e54f8a966c1aa01a1f8f34d9ddd Mon Sep 17 00:00:00 2001
From: Jed Brown
Date: Fri, 11 Oct 2013 22:28:43 -0500
Subject: [PATCH 0017/1388] docs/plugins.rst: fix signal name
"page_generator_context"
The old "pages_generate_context" dates from before pelican-3.2
standardization, but AFAIK, "page_generate_context" was never correct.
---
docs/plugins.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/plugins.rst b/docs/plugins.rst
index 6de01d05..5e311fb6 100644
--- a/docs/plugins.rst
+++ b/docs/plugins.rst
@@ -80,7 +80,7 @@ article_generator_finalized article_generator invoked at the e
get_generators generators invoked in Pelican.get_generator_classes,
can return a Generator, or several
generator in a tuple or in a list.
-page_generate_context page_generator, metadata
+page_generator_context page_generator, metadata
page_generator_init page_generator invoked in the PagesGenerator.__init__
page_generator_finalized page_generator invoked at the end of PagesGenerator.generate_context
content_object_init content_object invoked at the end of Content.__init__ (see note below)
From eb6d4bb0087bcc218795625ee3bfe5a6d230dc75 Mon Sep 17 00:00:00 2001
From: zhouji
Date: Tue, 15 Oct 2013 10:37:03 +0800
Subject: [PATCH 0018/1388] Preserve file metadata (esp. timestamps) when copy
static files to output folder.
---
pelican/generators.py | 2 +-
pelican/utils.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pelican/generators.py b/pelican/generators.py
index d695c7c8..c55cdc37 100644
--- a/pelican/generators.py
+++ b/pelican/generators.py
@@ -573,7 +573,7 @@ class StaticGenerator(Generator):
source_path = os.path.join(self.path, sc.source_path)
save_as = os.path.join(self.output_path, sc.save_as)
mkdir_p(os.path.dirname(save_as))
- shutil.copy(source_path, save_as)
+ shutil.copy2(source_path, save_as)
logger.info('copying {} to {}'.format(sc.source_path, sc.save_as))
diff --git a/pelican/utils.py b/pelican/utils.py
index f222f63c..4b25ec7f 100644
--- a/pelican/utils.py
+++ b/pelican/utils.py
@@ -289,7 +289,7 @@ def copy(path, source, destination, destination_path=None):
else:
shutil.copytree(entry_path, entry_dest)
else:
- shutil.copy(entry_path, destination)
+ shutil.copy2(entry_path, destination)
if os.path.isdir(source_):
@@ -299,7 +299,7 @@ def copy(path, source, destination, destination_path=None):
dest_dir = os.path.dirname(destination_)
if not os.path.exists(dest_dir):
os.makedirs(dest_dir)
- shutil.copy(source_, destination_)
+ shutil.copy2(source_, destination_)
logger.info('copying %s to %s' % (source_, destination_))
else:
logger.warning('skipped copy %s to %s' % (source_, destination_))
From 04dba17b800b7c67e43706a8a164ebf697bba10f Mon Sep 17 00:00:00 2001
From: zhouji
Date: Wed, 16 Oct 2013 17:06:56 +0800
Subject: [PATCH 0019/1388] Fix #1117 Make intra-link support all url-value
HTML attributes.
---
pelican/contents.py | 58 ++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 55 insertions(+), 3 deletions(-)
diff --git a/pelican/contents.py b/pelican/contents.py
index dbc33716..39322e99 100644
--- a/pelican/contents.py
+++ b/pelican/contents.py
@@ -125,6 +125,52 @@ class Content(object):
if 'summary' in metadata:
self._summary = metadata['summary']
+ # prepare the list of HTML tag attributes which have a URL value.
+ # refer: http://stackoverflow.com/questions/2725156/complete-list-of-html-tag-attributes-which-have-a-url-value
+ self._url_attributes = { # each item in this set is a tuple composed by tag_name, attr_name
+ # HTML4 tags
+ ('a', 'href'),
+ ('applet', 'codebase'),
+ ('area', 'href'),
+ ('base', 'href'),
+ ('blockquote', 'cite'),
+ ('body', 'background'),
+ ('del', 'cite'),
+ ('form', 'action'),
+ ('frame', 'longdesc'),
+ ('frame', 'src'),
+ ('head', 'profile'),
+ ('iframe', 'longdesc'),
+ ('iframe', 'src'),
+ ('img', 'longdesc'),
+ ('img', 'src'),
+ ('img', 'usemap'),
+ ('input', 'src'),
+ ('input', 'usemap'),
+ ('ins', 'cite'),
+ ('link', 'href'),
+ ('object', 'classid'),
+ ('object', 'codebase'),
+ ('object', 'data'),
+ ('object', 'usemap'),
+ ('q', 'cite'),
+ ('script', 'src'),
+
+ # HTML5 tags
+ ('audio', 'src'),
+ ('button', 'formaction'),
+ ('command', 'icon'),
+ ('embed', 'src'),
+ ('html', 'manifest'),
+ ('input', 'formaction'),
+ ('source', 'src'),
+ ('video', 'poster'),
+ ('video', 'src'),
+ }
+ """:type: set of (tuple of (string, string)"""
+ attribute_names = set(pair[1] for pair in self._url_attributes)
+ self._url_attr_pattern = '|'.join(attribute_names)
+
signals.content_object_init.send(self)
def __str__(self):
@@ -189,12 +235,12 @@ class Content(object):
instrasite_link_regex = self.settings['INTRASITE_LINK_REGEX']
regex = r"""
- (?P<\s*[^\>]* # match tag with src and href attr
- (?:href|src)\s*=)
+ (?P<\s*(?P[^\s\>]+)[^\>]* # match tag with all url-value attributes
+ (?P{1})\s*=)
(?P["\']) # require value to be quoted
(?P{0}(?P.*?)) # the url value
- \2""".format(instrasite_link_regex)
+ \4""".format(instrasite_link_regex, self._url_attr_pattern)
hrefs = re.compile(regex, re.X)
def replacer(m):
@@ -203,6 +249,12 @@ class Content(object):
path = value.path
origin = m.group('path')
+ # verify HTML tag and attribute pair to avoid miss-replacing
+ tag = m.group('tag')
+ attr = m.group('attr')
+ if attr != 'href' and attr != 'src' and (tag, attr) not in self._url_attributes:
+ return m.group(0)
+
# XXX Put this in a different location.
if what == 'filename':
if path.startswith('/'):
From e538aa2cdeb4eed2df40bcf0a414c0930ab05e25 Mon Sep 17 00:00:00 2001
From: zhouji
Date: Thu, 17 Oct 2013 11:33:34 +0800
Subject: [PATCH 0020/1388] Fine-tune url-value HTML attributes list.
---
pelican/contents.py | 58 ++--------------------------------
pelican/tests/test_contents.py | 55 ++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+), 55 deletions(-)
diff --git a/pelican/contents.py b/pelican/contents.py
index 39322e99..059c54a7 100644
--- a/pelican/contents.py
+++ b/pelican/contents.py
@@ -125,52 +125,6 @@ class Content(object):
if 'summary' in metadata:
self._summary = metadata['summary']
- # prepare the list of HTML tag attributes which have a URL value.
- # refer: http://stackoverflow.com/questions/2725156/complete-list-of-html-tag-attributes-which-have-a-url-value
- self._url_attributes = { # each item in this set is a tuple composed by tag_name, attr_name
- # HTML4 tags
- ('a', 'href'),
- ('applet', 'codebase'),
- ('area', 'href'),
- ('base', 'href'),
- ('blockquote', 'cite'),
- ('body', 'background'),
- ('del', 'cite'),
- ('form', 'action'),
- ('frame', 'longdesc'),
- ('frame', 'src'),
- ('head', 'profile'),
- ('iframe', 'longdesc'),
- ('iframe', 'src'),
- ('img', 'longdesc'),
- ('img', 'src'),
- ('img', 'usemap'),
- ('input', 'src'),
- ('input', 'usemap'),
- ('ins', 'cite'),
- ('link', 'href'),
- ('object', 'classid'),
- ('object', 'codebase'),
- ('object', 'data'),
- ('object', 'usemap'),
- ('q', 'cite'),
- ('script', 'src'),
-
- # HTML5 tags
- ('audio', 'src'),
- ('button', 'formaction'),
- ('command', 'icon'),
- ('embed', 'src'),
- ('html', 'manifest'),
- ('input', 'formaction'),
- ('source', 'src'),
- ('video', 'poster'),
- ('video', 'src'),
- }
- """:type: set of (tuple of (string, string)"""
- attribute_names = set(pair[1] for pair in self._url_attributes)
- self._url_attr_pattern = '|'.join(attribute_names)
-
signals.content_object_init.send(self)
def __str__(self):
@@ -235,12 +189,12 @@ class Content(object):
instrasite_link_regex = self.settings['INTRASITE_LINK_REGEX']
regex = r"""
- (?P<\s*(?P[^\s\>]+)[^\>]* # match tag with all url-value attributes
- (?P{1})\s*=)
+ (?P<\s*[^\>]* # match tag with all url-value attributes
+ (?:href|src|poster|data|cite|formaction|action)\s*=)
(?P["\']) # require value to be quoted
(?P{0}(?P.*?)) # the url value
- \4""".format(instrasite_link_regex, self._url_attr_pattern)
+ \2""".format(instrasite_link_regex)
hrefs = re.compile(regex, re.X)
def replacer(m):
@@ -249,12 +203,6 @@ class Content(object):
path = value.path
origin = m.group('path')
- # verify HTML tag and attribute pair to avoid miss-replacing
- tag = m.group('tag')
- attr = m.group('attr')
- if attr != 'href' and attr != 'src' and (tag, attr) not in self._url_attributes:
- return m.group(0)
-
# XXX Put this in a different location.
if what == 'filename':
if path.startswith('/'):
diff --git a/pelican/tests/test_contents.py b/pelican/tests/test_contents.py
index 9c894ffc..92e61355 100644
--- a/pelican/tests/test_contents.py
+++ b/pelican/tests/test_contents.py
@@ -268,6 +268,61 @@ class TestPage(unittest.TestCase):
'?utm_whatever=234&highlight=word#section-2">link
'
)
+ def test_intrasite_link_more(self):
+ # type does not take unicode in PY2 and bytes in PY3, which in
+ # combination with unicode literals leads to following insane line:
+ cls_name = '_DummyAsset' if six.PY3 else b'_DummyAsset'
+
+ args = self.page_kwargs.copy()
+ args['settings'] = get_settings()
+ args['source_path'] = 'content'
+ args['context']['filenames'] = {
+ 'images/poster.jpg': type(cls_name, (object,), {'url': 'images/poster.jpg'}),
+ 'assets/video.mp4': type(cls_name, (object,), {'url': 'assets/video.mp4'}),
+ 'images/graph.svg': type(cls_name, (object,), {'url': 'images/graph.svg'}),
+ 'reference.rst': type(cls_name, (object,), {'url': 'reference.html'}),
+ }
+
+ # video.poster
+ args['content'] = (
+ 'There is a video with poster '
+ ''
+ )
+ content = Page(**args).get_content('http://notmyidea.org')
+ self.assertEqual(
+ content,
+ 'There is a video with poster '
+ ''
+ )
+
+ # object.data
+ args['content'] = (
+ 'There is a svg object '
+ ''
+ )
+ content = Page(**args).get_content('http://notmyidea.org')
+ self.assertEqual(
+ content,
+ 'There is a svg object '
+ ''
+ )
+
+ # blockquote.cite
+ args['content'] = (
+ 'There is a blockquote with cite attribute '
+ 'blah blah
'
+ )
+ content = Page(**args).get_content('http://notmyidea.org')
+ self.assertEqual(
+ content,
+ 'There is a blockquote with cite attribute '
+ 'blah blah
'
+ )
+
class TestArticle(TestPage):
def test_template(self):
From ae2afa27fc6841a9785f13f14bfd17bebbd1f516 Mon Sep 17 00:00:00 2001
From: Justin Mayer
Date: Sat, 19 Oct 2013 17:20:13 +0200
Subject: [PATCH 0021/1388] Clarify FAQ entry re: need to install Markdown
Folks keep running into this error, which probably signals a need to
change this behavior. After all, it wouldn't be hard for us to detect
what's going on and provide a better error message, such as: "It looks
like you're trying to process Markdown, but the Markdown library is not
currently installed. Please install the Python-Markdown library via 'pip
install markdown'."
Until we implement something akin to the above, this should serve as a
slightly-improved FAQ entry in the interim.
---
docs/faq.rst | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/docs/faq.rst b/docs/faq.rst
index da37af04..80e14d21 100644
--- a/docs/faq.rst
+++ b/docs/faq.rst
@@ -65,12 +65,13 @@ How do I create my own theme?
Please refer to :ref:`theming-pelican`.
-I want to use Markdown, but I got an error.
-===========================================
+I'm using Markdown and getting ``No valid files found in content`` errors.
+==========================================================================
-Markdown is not a hard dependency for Pelican, so you will need to explicitly
-install it. You can do so by typing the following command, prepending ``sudo``
-if permissions require it::
+Markdown is not a hard dependency for Pelican, so if you have content in
+Markdown format, you will need to explicitly install the Markdown library.
+You can do so by typing the following command, prepending ``sudo`` if
+permissions require it::
pip install markdown
From 9331e42ee10c0a3537d93b000c0a41508758d401 Mon Sep 17 00:00:00 2001
From: Jon Chen
Date: Thu, 24 Oct 2013 14:36:03 -0400
Subject: [PATCH 0022/1388] use // instead of explicitly defining http
for twitter as well
update sample output
---
pelican/tests/output/custom/a-markdown-powered-article.html | 4 ++--
pelican/tests/output/custom/archives.html | 2 +-
pelican/tests/output/custom/article-1.html | 4 ++--
pelican/tests/output/custom/article-2.html | 4 ++--
pelican/tests/output/custom/article-3.html | 4 ++--
pelican/tests/output/custom/author/alexis-metaireau.html | 2 +-
pelican/tests/output/custom/author/alexis-metaireau2.html | 2 +-
pelican/tests/output/custom/author/alexis-metaireau3.html | 2 +-
pelican/tests/output/custom/authors.html | 2 +-
pelican/tests/output/custom/categories.html | 2 +-
pelican/tests/output/custom/category/bar.html | 2 +-
pelican/tests/output/custom/category/cat1.html | 2 +-
pelican/tests/output/custom/category/misc.html | 2 +-
pelican/tests/output/custom/category/yeah.html | 2 +-
pelican/tests/output/custom/drafts/a-draft-article.html | 2 +-
pelican/tests/output/custom/filename_metadata-example.html | 4 ++--
pelican/tests/output/custom/index.html | 2 +-
pelican/tests/output/custom/index2.html | 2 +-
pelican/tests/output/custom/index3.html | 2 +-
pelican/tests/output/custom/jinja2_template.html | 2 +-
pelican/tests/output/custom/oh-yeah-fr.html | 4 ++--
pelican/tests/output/custom/oh-yeah.html | 4 ++--
pelican/tests/output/custom/override/index.html | 2 +-
.../tests/output/custom/pages/this-is-a-test-hidden-page.html | 2 +-
pelican/tests/output/custom/pages/this-is-a-test-page.html | 2 +-
pelican/tests/output/custom/second-article-fr.html | 4 ++--
pelican/tests/output/custom/second-article.html | 4 ++--
pelican/tests/output/custom/tag/bar.html | 2 +-
pelican/tests/output/custom/tag/baz.html | 4 ++--
pelican/tests/output/custom/tag/foo.html | 2 +-
pelican/tests/output/custom/tag/foobar.html | 2 +-
pelican/tests/output/custom/tag/oh.html | 2 +-
pelican/tests/output/custom/tag/yeah.html | 2 +-
pelican/tests/output/custom/tags.html | 2 +-
pelican/tests/output/custom/this-is-a-super-article.html | 4 ++--
pelican/tests/output/custom/unbelievable.html | 4 ++--
pelican/themes/notmyidea/templates/article.html | 2 +-
pelican/themes/notmyidea/templates/disqus_script.html | 2 +-
pelican/themes/notmyidea/templates/twitter.html | 4 ++--
39 files changed, 52 insertions(+), 52 deletions(-)
diff --git a/pelican/tests/output/custom/a-markdown-powered-article.html b/pelican/tests/output/custom/a-markdown-powered-article.html
index 4d1fe16f..515b0298 100644
--- a/pelican/tests/output/custom/a-markdown-powered-article.html
+++ b/pelican/tests/output/custom/a-markdown-powered-article.html
@@ -59,7 +59,7 @@
var disqus_url = "./a-markdown-powered-article.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -105,7 +105,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/archives.html b/pelican/tests/output/custom/archives.html
index a2ab7430..13c3d980 100644
--- a/pelican/tests/output/custom/archives.html
+++ b/pelican/tests/output/custom/archives.html
@@ -92,7 +92,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/article-1.html b/pelican/tests/output/custom/article-1.html
index 89e12914..6faed3be 100644
--- a/pelican/tests/output/custom/article-1.html
+++ b/pelican/tests/output/custom/article-1.html
@@ -58,7 +58,7 @@
var disqus_url = "./article-1.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -104,7 +104,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/article-2.html b/pelican/tests/output/custom/article-2.html
index 1113e5e8..d1e89db8 100644
--- a/pelican/tests/output/custom/article-2.html
+++ b/pelican/tests/output/custom/article-2.html
@@ -58,7 +58,7 @@
var disqus_url = "./article-2.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -104,7 +104,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/article-3.html b/pelican/tests/output/custom/article-3.html
index c7306605..5c287a13 100644
--- a/pelican/tests/output/custom/article-3.html
+++ b/pelican/tests/output/custom/article-3.html
@@ -58,7 +58,7 @@
var disqus_url = "./article-3.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -104,7 +104,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/author/alexis-metaireau.html b/pelican/tests/output/custom/author/alexis-metaireau.html
index d2350bd5..19c254a0 100644
--- a/pelican/tests/output/custom/author/alexis-metaireau.html
+++ b/pelican/tests/output/custom/author/alexis-metaireau.html
@@ -165,7 +165,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/author/alexis-metaireau2.html b/pelican/tests/output/custom/author/alexis-metaireau2.html
index 91ef0696..772d2939 100644
--- a/pelican/tests/output/custom/author/alexis-metaireau2.html
+++ b/pelican/tests/output/custom/author/alexis-metaireau2.html
@@ -175,7 +175,7 @@ YEAH !
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/author/alexis-metaireau3.html b/pelican/tests/output/custom/author/alexis-metaireau3.html
index 77c9cdfe..f3d985c3 100644
--- a/pelican/tests/output/custom/author/alexis-metaireau3.html
+++ b/pelican/tests/output/custom/author/alexis-metaireau3.html
@@ -130,7 +130,7 @@ pelican.conf, it ...
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/authors.html b/pelican/tests/output/custom/authors.html
index adb3d992..eb2becfd 100644
--- a/pelican/tests/output/custom/authors.html
+++ b/pelican/tests/output/custom/authors.html
@@ -71,7 +71,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/categories.html b/pelican/tests/output/custom/categories.html
index 5d839648..17d9de76 100644
--- a/pelican/tests/output/custom/categories.html
+++ b/pelican/tests/output/custom/categories.html
@@ -72,7 +72,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/category/bar.html b/pelican/tests/output/custom/category/bar.html
index 3f1bbc4a..30545518 100644
--- a/pelican/tests/output/custom/category/bar.html
+++ b/pelican/tests/output/custom/category/bar.html
@@ -95,7 +95,7 @@ YEAH !
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/category/cat1.html b/pelican/tests/output/custom/category/cat1.html
index 81718322..9a737b76 100644
--- a/pelican/tests/output/custom/category/cat1.html
+++ b/pelican/tests/output/custom/category/cat1.html
@@ -162,7 +162,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/category/misc.html b/pelican/tests/output/custom/category/misc.html
index 36479803..b70afcdf 100644
--- a/pelican/tests/output/custom/category/misc.html
+++ b/pelican/tests/output/custom/category/misc.html
@@ -173,7 +173,7 @@ pelican.conf, it ...
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/category/yeah.html b/pelican/tests/output/custom/category/yeah.html
index 53666b0b..02d07413 100644
--- a/pelican/tests/output/custom/category/yeah.html
+++ b/pelican/tests/output/custom/category/yeah.html
@@ -99,7 +99,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/drafts/a-draft-article.html b/pelican/tests/output/custom/drafts/a-draft-article.html
index b8306208..440780a3 100644
--- a/pelican/tests/output/custom/drafts/a-draft-article.html
+++ b/pelican/tests/output/custom/drafts/a-draft-article.html
@@ -92,7 +92,7 @@ listed anywhere else.
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/filename_metadata-example.html b/pelican/tests/output/custom/filename_metadata-example.html
index fcbda9c2..1252aba8 100644
--- a/pelican/tests/output/custom/filename_metadata-example.html
+++ b/pelican/tests/output/custom/filename_metadata-example.html
@@ -58,7 +58,7 @@
var disqus_url = "./filename_metadata-example.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -104,7 +104,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/index.html b/pelican/tests/output/custom/index.html
index 3fa1d5c3..c7174715 100644
--- a/pelican/tests/output/custom/index.html
+++ b/pelican/tests/output/custom/index.html
@@ -165,7 +165,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/index2.html b/pelican/tests/output/custom/index2.html
index 8769d098..b349b3ca 100644
--- a/pelican/tests/output/custom/index2.html
+++ b/pelican/tests/output/custom/index2.html
@@ -175,7 +175,7 @@ YEAH !
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/index3.html b/pelican/tests/output/custom/index3.html
index b4d9ffc6..c668dba6 100644
--- a/pelican/tests/output/custom/index3.html
+++ b/pelican/tests/output/custom/index3.html
@@ -130,7 +130,7 @@ pelican.conf, it ...
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/jinja2_template.html b/pelican/tests/output/custom/jinja2_template.html
index 31beac32..0eafa913 100644
--- a/pelican/tests/output/custom/jinja2_template.html
+++ b/pelican/tests/output/custom/jinja2_template.html
@@ -69,7 +69,7 @@ Some text
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/oh-yeah-fr.html b/pelican/tests/output/custom/oh-yeah-fr.html
index 410c721f..4450514a 100644
--- a/pelican/tests/output/custom/oh-yeah-fr.html
+++ b/pelican/tests/output/custom/oh-yeah-fr.html
@@ -60,7 +60,7 @@ Translations:
var disqus_url = "./oh-yeah-fr.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -106,7 +106,7 @@ Translations:
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/oh-yeah.html b/pelican/tests/output/custom/oh-yeah.html
index dab28171..95cf0317 100644
--- a/pelican/tests/output/custom/oh-yeah.html
+++ b/pelican/tests/output/custom/oh-yeah.html
@@ -65,7 +65,7 @@ YEAH !
var disqus_url = "./oh-yeah.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -111,7 +111,7 @@ YEAH !
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/override/index.html b/pelican/tests/output/custom/override/index.html
index 9c48d76f..e84d79fe 100644
--- a/pelican/tests/output/custom/override/index.html
+++ b/pelican/tests/output/custom/override/index.html
@@ -73,7 +73,7 @@ at a custom location.
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/pages/this-is-a-test-hidden-page.html b/pelican/tests/output/custom/pages/this-is-a-test-hidden-page.html
index a061b7ee..dced8107 100644
--- a/pelican/tests/output/custom/pages/this-is-a-test-hidden-page.html
+++ b/pelican/tests/output/custom/pages/this-is-a-test-hidden-page.html
@@ -73,7 +73,7 @@ Anyone can see this page but it's not linked to anywhere!
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/pages/this-is-a-test-page.html b/pelican/tests/output/custom/pages/this-is-a-test-page.html
index af50adf8..46ea4fef 100644
--- a/pelican/tests/output/custom/pages/this-is-a-test-page.html
+++ b/pelican/tests/output/custom/pages/this-is-a-test-page.html
@@ -73,7 +73,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/second-article-fr.html b/pelican/tests/output/custom/second-article-fr.html
index cbeef437..b4a04ee8 100644
--- a/pelican/tests/output/custom/second-article-fr.html
+++ b/pelican/tests/output/custom/second-article-fr.html
@@ -60,7 +60,7 @@
var disqus_url = "./second-article-fr.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -106,7 +106,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/second-article.html b/pelican/tests/output/custom/second-article.html
index 57009066..04f038c8 100644
--- a/pelican/tests/output/custom/second-article.html
+++ b/pelican/tests/output/custom/second-article.html
@@ -60,7 +60,7 @@
var disqus_url = "./second-article.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -106,7 +106,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/tag/bar.html b/pelican/tests/output/custom/tag/bar.html
index 9560b712..7a90eff2 100644
--- a/pelican/tests/output/custom/tag/bar.html
+++ b/pelican/tests/output/custom/tag/bar.html
@@ -148,7 +148,7 @@ YEAH !
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/tag/baz.html b/pelican/tests/output/custom/tag/baz.html
index c6ebe542..f794b351 100644
--- a/pelican/tests/output/custom/tag/baz.html
+++ b/pelican/tests/output/custom/tag/baz.html
@@ -58,7 +58,7 @@
var disqus_url = "../tag/baz.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -104,7 +104,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/tag/foo.html b/pelican/tests/output/custom/tag/foo.html
index d5b0d413..d99df63b 100644
--- a/pelican/tests/output/custom/tag/foo.html
+++ b/pelican/tests/output/custom/tag/foo.html
@@ -118,7 +118,7 @@ as well as inline markup.
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/tag/foobar.html b/pelican/tests/output/custom/tag/foobar.html
index 0b4d2471..ded91f12 100644
--- a/pelican/tests/output/custom/tag/foobar.html
+++ b/pelican/tests/output/custom/tag/foobar.html
@@ -99,7 +99,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/tag/oh.html b/pelican/tests/output/custom/tag/oh.html
index 3b30a39c..21c8e352 100644
--- a/pelican/tests/output/custom/tag/oh.html
+++ b/pelican/tests/output/custom/tag/oh.html
@@ -72,7 +72,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/tag/yeah.html b/pelican/tests/output/custom/tag/yeah.html
index a6764575..523358b5 100644
--- a/pelican/tests/output/custom/tag/yeah.html
+++ b/pelican/tests/output/custom/tag/yeah.html
@@ -95,7 +95,7 @@ YEAH !
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/tags.html b/pelican/tests/output/custom/tags.html
index bc9b9d20..2e70c9e8 100644
--- a/pelican/tests/output/custom/tags.html
+++ b/pelican/tests/output/custom/tags.html
@@ -76,7 +76,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/this-is-a-super-article.html b/pelican/tests/output/custom/this-is-a-super-article.html
index 0a580e25..d251b0ec 100644
--- a/pelican/tests/output/custom/this-is-a-super-article.html
+++ b/pelican/tests/output/custom/this-is-a-super-article.html
@@ -69,7 +69,7 @@
var disqus_url = "./this-is-a-super-article.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -115,7 +115,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/tests/output/custom/unbelievable.html b/pelican/tests/output/custom/unbelievable.html
index 03b533bb..0d87bbf6 100644
--- a/pelican/tests/output/custom/unbelievable.html
+++ b/pelican/tests/output/custom/unbelievable.html
@@ -90,7 +90,7 @@ pelican.conf, it will have nothing in default.
var disqus_url = "./unbelievable.html";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://blog-notmyidea.disqus.com/embed.js';
+ dsq.src = '//blog-notmyidea.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
@@ -136,7 +136,7 @@ pelican.conf, it will have nothing in default.
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/themes/notmyidea/templates/article.html b/pelican/themes/notmyidea/templates/article.html
index 516fd3b5..367222b2 100644
--- a/pelican/themes/notmyidea/templates/article.html
+++ b/pelican/themes/notmyidea/templates/article.html
@@ -23,7 +23,7 @@
var disqus_url = "{{ SITEURL }}/{{ article.url }}";
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
+ dsq.src = '//{{ DISQUS_SITENAME }}.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
diff --git a/pelican/themes/notmyidea/templates/disqus_script.html b/pelican/themes/notmyidea/templates/disqus_script.html
index c4f442c8..4ee419bb 100644
--- a/pelican/themes/notmyidea/templates/disqus_script.html
+++ b/pelican/themes/notmyidea/templates/disqus_script.html
@@ -4,7 +4,7 @@
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
- s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
diff --git a/pelican/themes/notmyidea/templates/twitter.html b/pelican/themes/notmyidea/templates/twitter.html
index c6b159f4..7247a0c6 100644
--- a/pelican/themes/notmyidea/templates/twitter.html
+++ b/pelican/themes/notmyidea/templates/twitter.html
@@ -1,3 +1,3 @@
{% if TWITTER_USERNAME %}
-
-{% endif %}
\ No newline at end of file
+
+{% endif %}
From 6c808e426fe5287b49fdd6a56067aa90eaaba963 Mon Sep 17 00:00:00 2001
From: Kevin Deldycke
Date: Mon, 21 Oct 2013 23:38:25 +0200
Subject: [PATCH 0023/1388] Document video support in Markdown and reST.
---
THANKS | 1 +
docs/tips.rst | 5 +++++
2 files changed, 6 insertions(+)
diff --git a/THANKS b/THANKS
index e4eed231..1d867471 100644
--- a/THANKS
+++ b/THANKS
@@ -88,6 +88,7 @@ Joseph Reagle
Joshua Adelman
Julian Berman
Justin Mayer
+Kevin Deldycke
Kyle Fuller
Laureline Guerin
Leonard Huang
diff --git a/docs/tips.rst b/docs/tips.rst
index 7629481f..b140ea3c 100644
--- a/docs/tips.rst
+++ b/docs/tips.rst
@@ -94,3 +94,8 @@ directly into your source content.
Alternatively, you can also use Pelican plugins like ``liquid_tags``,
``pelican_youtube``, or ``pelican_vimeo`` to embed videos in your content.
+
+Moreover, markup languages like reST and Markdown have plugins that let you
+embed videos in the markup. You can use `reST video directive
+`_ for reST or `mdx_video plugin
+`_ for Markdown.
From 5e5510cfcf65b873881d9e08adcb54ac1db9c730 Mon Sep 17 00:00:00 2001
From: Justin Mayer
Date: Sun, 27 Oct 2013 09:27:30 -0700
Subject: [PATCH 0024/1388] Improve Disqus embed code in notmyidea theme
According to Disqus, the disqus_shortname variable is a required field.
Also added a