mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Merge pull request #460 from getpelican/remove-url-rewriting
Don't rewrite URLs
This commit is contained in:
commit
f9e7c86a1a
57 changed files with 426 additions and 186 deletions
|
|
@ -226,6 +226,50 @@ If you want to exclude any pages from being linked to or listed in the menu
|
|||
then add a ``status: hidden`` attribute to its metadata. This is useful for
|
||||
things like making error pages that fit the generated theme of your site.
|
||||
|
||||
Linking to internal content
|
||||
---------------------------
|
||||
|
||||
Since Pelican 3.1, you now have the ability to do cross-site linking.
|
||||
|
||||
To link to an internal content, you will have to use the following syntax:
|
||||
``|filename|path/to/file``.
|
||||
|
||||
For example, you may want to add links between "article1" and "article2" given
|
||||
the structure::
|
||||
|
||||
website/
|
||||
├── content
|
||||
│ ├── article1.rst
|
||||
│ └── cat/
|
||||
│ └── article2.md
|
||||
└── pelican.conf.py
|
||||
|
||||
In this example, ``article1.rst`` could look like::
|
||||
|
||||
Title: The first article
|
||||
Date: 2012-12-01
|
||||
|
||||
See below cross-site links examples in restructured text.
|
||||
|
||||
`a root-relative link <|filename|/cat/article2.md>`_
|
||||
`a file-relative link <|filename|cat/article2.md>`_
|
||||
|
||||
and ``article2.md``::
|
||||
|
||||
Title: The second article
|
||||
Date: 2012-12-01
|
||||
|
||||
See below cross-site links examples in markdown.
|
||||
|
||||
[a root-relative link](|filename|/article1.rst)
|
||||
[a file-relative link](|filename|../article1.rst)
|
||||
|
||||
.. note::
|
||||
|
||||
You can use the same syntax to link to internal pages or even static
|
||||
content (like images) which would be available in a directory listed in
|
||||
``settings["STATIC_PATHS"]``.
|
||||
|
||||
Importing an existing blog
|
||||
--------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -134,6 +134,8 @@ class Pelican(object):
|
|||
"""Run the generators and return"""
|
||||
|
||||
context = self.settings.copy()
|
||||
context['filenames'] = {} # share the dict between all the generators
|
||||
context['localsiteurl'] = self.settings.get('SITEURL') # share
|
||||
generators = [
|
||||
cls(
|
||||
context,
|
||||
|
|
@ -142,7 +144,6 @@ class Pelican(object):
|
|||
self.theme,
|
||||
self.output_path,
|
||||
self.markup,
|
||||
self.delete_outputdir
|
||||
) for cls in self.get_generator_classes()
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -3,13 +3,15 @@ import copy
|
|||
import locale
|
||||
import logging
|
||||
import functools
|
||||
import os
|
||||
import re
|
||||
|
||||
from datetime import datetime
|
||||
from sys import platform, stdin
|
||||
|
||||
|
||||
from pelican.settings import _DEFAULT_CONFIG
|
||||
from pelican.utils import slugify, truncate_html_words
|
||||
from pelican.utils import slugify, truncate_html_words, memoized
|
||||
from pelican import signals
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
|
@ -25,7 +27,7 @@ class Page(object):
|
|||
default_template = 'page'
|
||||
|
||||
def __init__(self, content, metadata=None, settings=None,
|
||||
filename=None):
|
||||
filename=None, context=None):
|
||||
# init parameters
|
||||
if not metadata:
|
||||
metadata = {}
|
||||
|
|
@ -34,6 +36,7 @@ class Page(object):
|
|||
|
||||
self.settings = settings
|
||||
self._content = content
|
||||
self._context = context
|
||||
self.translations = []
|
||||
|
||||
local_metadata = dict(settings.get('DEFAULT_METADATA', ()))
|
||||
|
|
@ -128,13 +131,60 @@ class Page(object):
|
|||
key = key if self.in_default_lang else 'lang_%s' % key
|
||||
return self._expand_settings(key)
|
||||
|
||||
def _update_content(self, content, siteurl):
|
||||
"""Change all the relative paths of the content to relative paths
|
||||
suitable for the ouput content.
|
||||
|
||||
:param content: content resource that will be passed to the templates.
|
||||
:param siteurl: siteurl which is locally generated by the writer in
|
||||
case of RELATIVE_URLS.
|
||||
"""
|
||||
hrefs = re.compile(r"""
|
||||
(?P<markup><\s*[^\>]* # match tag with src and href attr
|
||||
(?:href|src)\s*=)
|
||||
|
||||
(?P<quote>["\']) # require value to be quoted
|
||||
(?P<path>\|(?P<what>.*?)\|(?P<value>.*?)) # the url value
|
||||
\2""", re.X)
|
||||
|
||||
def replacer(m):
|
||||
what = m.group('what')
|
||||
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.
|
||||
if what == 'filename':
|
||||
if value.startswith('/'):
|
||||
value = value[1:]
|
||||
else:
|
||||
# relative to the filename of this content
|
||||
value = self.get_relative_filename(
|
||||
os.path.join(self.relative_dir, value)
|
||||
)
|
||||
|
||||
if value in self._context['filenames']:
|
||||
origin = '/'.join((siteurl,
|
||||
self._context['filenames'][value].url))
|
||||
else:
|
||||
logger.warning(u"Unable to find {fn}, skipping url"
|
||||
" replacement".format(fn=value))
|
||||
|
||||
return m.group('markup') + m.group('quote') + origin \
|
||||
+ m.group('quote')
|
||||
|
||||
return hrefs.sub(replacer, content)
|
||||
|
||||
@memoized
|
||||
def get_content(self, siteurl):
|
||||
return self._update_content(
|
||||
self._get_content() if hasattr(self, "_get_content")
|
||||
else self._content,
|
||||
siteurl)
|
||||
|
||||
@property
|
||||
def content(self):
|
||||
if hasattr(self, "_get_content"):
|
||||
content = self._get_content()
|
||||
else:
|
||||
content = self._content
|
||||
return content
|
||||
return self.get_content(self._context['localsiteurl'])
|
||||
|
||||
def _get_summary(self):
|
||||
"""Returns the summary of an article, based on the summary metadata
|
||||
|
|
@ -143,7 +193,8 @@ class Page(object):
|
|||
return self._summary
|
||||
else:
|
||||
if self.settings['SUMMARY_MAX_LENGTH']:
|
||||
return truncate_html_words(self.content, self.settings['SUMMARY_MAX_LENGTH'])
|
||||
return truncate_html_words(self.content,
|
||||
self.settings['SUMMARY_MAX_LENGTH'])
|
||||
return self.content
|
||||
|
||||
def _set_summary(self, summary):
|
||||
|
|
@ -162,6 +213,27 @@ class Page(object):
|
|||
else:
|
||||
return self.default_template
|
||||
|
||||
def get_relative_filename(self, filename=None):
|
||||
"""Return the relative path (from the content path) to the given
|
||||
filename.
|
||||
|
||||
If no filename is specified, use the filename of this content object.
|
||||
"""
|
||||
if not filename:
|
||||
filename = self.filename
|
||||
|
||||
return os.path.relpath(
|
||||
os.path.abspath(os.path.join(self.settings['PATH'], filename)),
|
||||
os.path.abspath(self.settings['PATH'])
|
||||
)
|
||||
|
||||
@property
|
||||
def relative_dir(self):
|
||||
return os.path.dirname(os.path.relpath(
|
||||
os.path.abspath(self.filename),
|
||||
os.path.abspath(self.settings['PATH']))
|
||||
)
|
||||
|
||||
|
||||
class Article(Page):
|
||||
mandatory_properties = ('title', 'date', 'category')
|
||||
|
|
@ -227,11 +299,27 @@ class Author(URLWrapper):
|
|||
pass
|
||||
|
||||
|
||||
class StaticContent(object):
|
||||
def __init__(self, src, dst=None, settings=None):
|
||||
if not settings:
|
||||
settings = copy.deepcopy(_DEFAULT_CONFIG)
|
||||
self.src = src
|
||||
self.url = dst or src
|
||||
self.filepath = os.path.join(settings['PATH'], src)
|
||||
self.save_as = os.path.join(settings['OUTPUT_PATH'], self.url)
|
||||
|
||||
def __str__(self):
|
||||
return str(self.filepath.encode('utf-8', 'replace'))
|
||||
|
||||
def __unicode__(self):
|
||||
return self.filepath
|
||||
|
||||
|
||||
def is_valid_content(content, f):
|
||||
try:
|
||||
content.check_properties()
|
||||
return True
|
||||
except NameError, e:
|
||||
logger.error(u"Skipping %s: impossible to find informations about '%s'"\
|
||||
% (f, e))
|
||||
logger.error(u"Skipping %s: impossible to find informations about"
|
||||
"'%s'" % (f, e))
|
||||
return False
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import random
|
|||
import logging
|
||||
import datetime
|
||||
import subprocess
|
||||
import shutil
|
||||
|
||||
from codecs import open
|
||||
from collections import defaultdict
|
||||
|
|
@ -15,9 +16,10 @@ from operator import attrgetter, itemgetter
|
|||
from jinja2 import (Environment, FileSystemLoader, PrefixLoader, ChoiceLoader,
|
||||
BaseLoader, TemplateNotFound)
|
||||
|
||||
from pelican.contents import Article, Page, Category, is_valid_content
|
||||
from pelican.contents import Article, Page, Category, StaticContent, \
|
||||
is_valid_content
|
||||
from pelican.readers import read_file
|
||||
from pelican.utils import copy, process_translations
|
||||
from pelican.utils import copy, process_translations, mkdir_p
|
||||
from pelican import signals
|
||||
|
||||
|
||||
|
|
@ -82,8 +84,10 @@ class Generator(object):
|
|||
|
||||
:param path: the path to search the file on
|
||||
:param exclude: the list of path to exclude
|
||||
:param extensions: the list of allowed extensions (if False, all
|
||||
extensions are allowed)
|
||||
"""
|
||||
if not extensions:
|
||||
if extensions is None:
|
||||
extensions = self.markup
|
||||
|
||||
files = []
|
||||
|
|
@ -97,10 +101,17 @@ class Generator(object):
|
|||
for e in exclude:
|
||||
if e in dirs:
|
||||
dirs.remove(e)
|
||||
files.extend([os.sep.join((root, f)) for f in temp_files
|
||||
if True in [f.endswith(ext) for ext in extensions]])
|
||||
for f in temp_files:
|
||||
if extensions is False or \
|
||||
(True in [f.endswith(ext) for ext in extensions]):
|
||||
files.append(os.sep.join((root, f)))
|
||||
return files
|
||||
|
||||
def add_filename(self, content):
|
||||
location = os.path.relpath(os.path.abspath(content.filename),
|
||||
os.path.abspath(self.path))
|
||||
self.context['filenames'][location] = content
|
||||
|
||||
def _update_context(self, items):
|
||||
"""Update the context with the given items from the currrent
|
||||
processor.
|
||||
|
|
@ -300,7 +311,7 @@ class ArticlesGenerator(Generator):
|
|||
self.generate_drafts(write)
|
||||
|
||||
def generate_context(self):
|
||||
"""change the context"""
|
||||
"""Add the articles into the shared context"""
|
||||
|
||||
article_path = os.path.normpath( # we have to remove trailing slashes
|
||||
os.path.join(self.path, self.settings['ARTICLE_DIR'])
|
||||
|
|
@ -341,10 +352,12 @@ class ArticlesGenerator(Generator):
|
|||
|
||||
signals.article_generate_context.send(self, metadata=metadata)
|
||||
article = Article(content, metadata, settings=self.settings,
|
||||
filename=f)
|
||||
filename=f, context=self.context)
|
||||
if not is_valid_content(article, f):
|
||||
continue
|
||||
|
||||
self.add_filename(article)
|
||||
|
||||
if article.status == "published":
|
||||
if hasattr(article, 'tags'):
|
||||
for tag in article.tags:
|
||||
|
|
@ -440,11 +453,14 @@ class PagesGenerator(Generator):
|
|||
except Exception, e:
|
||||
logger.warning(u'Could not process %s\n%s' % (f, str(e)))
|
||||
continue
|
||||
signals.pages_generate_context.send(self, metadata=metadata )
|
||||
signals.pages_generate_context.send(self, metadata=metadata)
|
||||
page = Page(content, metadata, settings=self.settings,
|
||||
filename=f)
|
||||
filename=f, context=self.context)
|
||||
if not is_valid_content(page, f):
|
||||
continue
|
||||
|
||||
self.add_filename(page)
|
||||
|
||||
if page.status == "published":
|
||||
all_pages.append(page)
|
||||
elif page.status == "hidden":
|
||||
|
|
@ -479,17 +495,33 @@ class StaticGenerator(Generator):
|
|||
copy(path, source, os.path.join(output_path, destination),
|
||||
final_path, overwrite=True)
|
||||
|
||||
def generate_output(self, writer):
|
||||
def generate_context(self):
|
||||
self.staticfiles = []
|
||||
|
||||
self._copy_paths(self.settings['STATIC_PATHS'], self.path,
|
||||
'static', self.output_path)
|
||||
# walk static paths
|
||||
for static_path in self.settings['STATIC_PATHS']:
|
||||
for f in self.get_files(
|
||||
os.path.join(self.path, static_path), extensions=False):
|
||||
f_rel = os.path.relpath(f, self.path)
|
||||
# TODO remove this hardcoded 'static' subdirectory
|
||||
sc = StaticContent(f_rel, os.path.join('static', f_rel),
|
||||
settings=self.settings)
|
||||
self.staticfiles.append(sc)
|
||||
self.context['filenames'][f_rel] = sc
|
||||
# same thing for FILES_TO_COPY
|
||||
for src, dest in self.settings['FILES_TO_COPY']:
|
||||
sc = StaticContent(src, dest, settings=self.settings)
|
||||
self.staticfiles.append(sc)
|
||||
self.context['filenames'][src] = sc
|
||||
|
||||
def generate_output(self, writer):
|
||||
self._copy_paths(self.settings['THEME_STATIC_PATHS'], self.theme,
|
||||
'theme', self.output_path, '.')
|
||||
|
||||
# copy all the files needed
|
||||
for source, destination in self.settings['FILES_TO_COPY']:
|
||||
copy(source, self.path, self.output_path, destination,
|
||||
overwrite=True)
|
||||
# copy all StaticContent files
|
||||
for sc in self.staticfiles:
|
||||
mkdir_p(os.path.dirname(sc.save_as))
|
||||
shutil.copy(sc.filepath, sc.save_as)
|
||||
logger.info('copying %s to %s' % (sc.filepath, sc.save_as))
|
||||
|
||||
|
||||
class PdfGenerator(Generator):
|
||||
|
|
@ -532,8 +564,8 @@ class PdfGenerator(Generator):
|
|||
try:
|
||||
os.mkdir(pdf_path)
|
||||
except OSError:
|
||||
logger.error("Couldn't create the pdf output folder in " + pdf_path)
|
||||
pass
|
||||
logger.error("Couldn't create the pdf output folder in " +
|
||||
pdf_path)
|
||||
|
||||
for article in self.context['articles']:
|
||||
self._create_pdf(article, pdf_path)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,9 @@ import re
|
|||
import pytz
|
||||
import shutil
|
||||
import logging
|
||||
from collections import defaultdict
|
||||
import errno
|
||||
from collections import defaultdict, Hashable
|
||||
from functools import partial
|
||||
|
||||
from codecs import open
|
||||
from datetime import datetime
|
||||
|
|
@ -19,6 +21,32 @@ class NoFilesError(Exception):
|
|||
pass
|
||||
|
||||
|
||||
class memoized(object):
|
||||
'''Decorator. Caches a function's return value each time it is called.
|
||||
If called later with the same arguments, the cached value is returned
|
||||
(not reevaluated).
|
||||
'''
|
||||
def __init__(self, func):
|
||||
self.func = func
|
||||
self.cache = {}
|
||||
def __call__(self, *args):
|
||||
if not isinstance(args, Hashable):
|
||||
# uncacheable. a list, for instance.
|
||||
# better to not cache than blow up.
|
||||
return self.func(*args)
|
||||
if args in self.cache:
|
||||
return self.cache[args]
|
||||
else:
|
||||
value = self.func(*args)
|
||||
self.cache[args] = value
|
||||
return value
|
||||
def __repr__(self):
|
||||
'''Return the function's docstring.'''
|
||||
return self.func.__doc__
|
||||
def __get__(self, obj, objtype):
|
||||
'''Support instance methods.'''
|
||||
return partial(self.__call__, obj)
|
||||
|
||||
def get_date(string):
|
||||
"""Return a datetime object from a string.
|
||||
|
||||
|
|
@ -300,3 +328,11 @@ def set_date_tzinfo(d, tz_name=None):
|
|||
return tz.localize(d)
|
||||
else:
|
||||
return d
|
||||
|
||||
|
||||
def mkdir_p(path):
|
||||
try:
|
||||
os.makedirs(path)
|
||||
except OSError, e:
|
||||
if e.errno != errno.EEXIST:
|
||||
raise
|
||||
|
|
|
|||
|
|
@ -2,12 +2,10 @@
|
|||
from __future__ import with_statement
|
||||
|
||||
import os
|
||||
import re
|
||||
import locale
|
||||
import logging
|
||||
|
||||
from codecs import open
|
||||
from functools import partial
|
||||
from feedgenerator import Atom1Feed, Rss201rev2Feed
|
||||
from jinja2 import Markup
|
||||
from pelican.paginator import Paginator
|
||||
|
|
@ -41,7 +39,7 @@ class Writer(object):
|
|||
link='%s/%s' % (self.site_url, item.url),
|
||||
unique_id='tag:%s,%s:%s' % (self.site_url.replace('http://', ''),
|
||||
item.date.date(), item.url),
|
||||
description=item.content,
|
||||
description=item.get_content(self.site_url),
|
||||
categories=item.tags if hasattr(item, 'tags') else None,
|
||||
author_name=getattr(item, 'author', ''),
|
||||
pubdate=set_date_tzinfo(item.date,
|
||||
|
|
@ -126,11 +124,11 @@ class Writer(object):
|
|||
|
||||
localcontext = context.copy()
|
||||
if relative_urls:
|
||||
localcontext['SITEURL'] = get_relative_path(name)
|
||||
relative_path = get_relative_path(name)
|
||||
context['localsiteurl'] = relative_path
|
||||
localcontext['SITEURL'] = relative_path
|
||||
|
||||
localcontext.update(kwargs)
|
||||
if relative_urls:
|
||||
self.update_context_contents(name, localcontext)
|
||||
|
||||
# check paginated
|
||||
paginated = paginated or {}
|
||||
|
|
@ -168,66 +166,3 @@ class Writer(object):
|
|||
else:
|
||||
# no pagination
|
||||
_write_file(template, localcontext, self.output_path, name)
|
||||
|
||||
def update_context_contents(self, name, context):
|
||||
"""Recursively run the context to find elements (articles, pages, etc)
|
||||
whose content getter needs to be modified in order to deal with
|
||||
relative paths.
|
||||
|
||||
:param name: name of the file to output.
|
||||
:param context: dict that will be passed to the templates, which need
|
||||
to be updated.
|
||||
"""
|
||||
def _update_content(name, input):
|
||||
"""Change all the relatives paths of the input content to relatives
|
||||
paths suitable fot the ouput content
|
||||
|
||||
:param name: path of the output.
|
||||
:param input: input resource that will be passed to the templates.
|
||||
"""
|
||||
content = input._content
|
||||
|
||||
hrefs = re.compile(r"""
|
||||
(?P<markup><\s*[^\>]* # match tag with src and href attr
|
||||
(?:href|src)\s*=\s*
|
||||
)
|
||||
(?P<quote>["\']) # require value to be quoted
|
||||
(?![#?]) # don't match fragment or query URLs
|
||||
(?![a-z]+:) # don't match protocol URLS
|
||||
(?P<path>.*?) # the url value
|
||||
\2""", re.X)
|
||||
|
||||
def replacer(m):
|
||||
relative_path = m.group('path')
|
||||
dest_path = os.path.normpath(
|
||||
os.sep.join((get_relative_path(name), "static",
|
||||
relative_path)))
|
||||
|
||||
# On Windows, make sure we end up with Unix-like paths.
|
||||
if os.name == 'nt':
|
||||
dest_path = dest_path.replace('\\', '/')
|
||||
|
||||
return m.group('markup') + m.group('quote') + dest_path \
|
||||
+ m.group('quote')
|
||||
|
||||
return hrefs.sub(replacer, content)
|
||||
|
||||
if context is None:
|
||||
return
|
||||
if hasattr(context, 'values'):
|
||||
context = context.values()
|
||||
|
||||
for item in context:
|
||||
# run recursively on iterables
|
||||
if hasattr(item, '__iter__'):
|
||||
self.update_context_contents(name, item)
|
||||
|
||||
# if it is a content, patch it
|
||||
elif hasattr(item, '_content'):
|
||||
relative_path = get_relative_path(name)
|
||||
|
||||
paths = self.reminder.setdefault(item, [])
|
||||
if relative_path not in paths:
|
||||
paths.append(relative_path)
|
||||
setattr(item, "_get_content",
|
||||
partial(_update_content, name, item))
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Why not ?
|
|||
After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !
|
||||
|
||||
.. image:: pictures/Sushi.jpg
|
||||
.. image:: |filename|/pictures/Sushi.jpg
|
||||
:height: 450 px
|
||||
:width: 600 px
|
||||
:alt: alternate text
|
||||
|
|
|
|||
|
|
@ -2,3 +2,6 @@ Title: A markdown powered article
|
|||
Date: 2011-04-20
|
||||
|
||||
You're mutually oblivious.
|
||||
|
||||
[a root-relative link to unbelievable](|filename|/unbelievable.rst)
|
||||
[a file-relative link to unbelievable](|filename|../unbelievable.rst)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ This is a test page
|
|||
|
||||
Just an image.
|
||||
|
||||
.. image:: pictures/Fat_Cat.jpg
|
||||
.. image:: |filename|/pictures/Fat_Cat.jpg
|
||||
:height: 450 px
|
||||
:width: 600 px
|
||||
:alt: alternate text
|
||||
|
|
|
|||
|
|
@ -16,12 +16,12 @@ This is a simple title
|
|||
|
||||
And here comes the cool stuff_.
|
||||
|
||||
.. image:: pictures/Sushi.jpg
|
||||
.. image:: |filename|/pictures/Sushi.jpg
|
||||
:height: 450 px
|
||||
:width: 600 px
|
||||
:alt: alternate text
|
||||
|
||||
.. image:: pictures/Sushi_Macro.jpg
|
||||
.. image:: |filename|/pictures/Sushi_Macro.jpg
|
||||
:height: 450 px
|
||||
:width: 600 px
|
||||
:alt: alternate text
|
||||
|
|
|
|||
|
|
@ -4,3 +4,6 @@ Unbelievable !
|
|||
:date: 2010-10-15 20:30
|
||||
|
||||
Or completely awesome. Depends the needs.
|
||||
|
||||
`a root-relative link to markdown-article <|filename|/cat1/markdown-article.md>`_
|
||||
`a file-relative link to markdown-article <|filename|cat1/markdown-article.md>`_
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@
|
|||
<p>In <a href="./category/cat1.html">cat1</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>You're mutually oblivious.</p>
|
||||
<p><a href="./unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="./unbelievable.html">a file-relative link to unbelievable</a></p>
|
||||
</div><!-- /.entry-content -->
|
||||
|
||||
</article>
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="../static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</article>
|
||||
</aside><!-- /#featured -->
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="../static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</article>
|
||||
</aside><!-- /#featured -->
|
||||
|
|
|
|||
|
|
@ -42,7 +42,9 @@
|
|||
|
||||
<p>In <a href="../category/cat1.html">cat1</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --><p>You're mutually oblivious.</p> </article>
|
||||
</footer><!-- /.post-info --><p>You're mutually oblivious.</p>
|
||||
<p><a href="../unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="../unbelievable.html">a file-relative link to unbelievable</a></p> </article>
|
||||
</aside><!-- /#featured -->
|
||||
<section id="content" class="body">
|
||||
<h1>Other articles</h1>
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@
|
|||
<p>In <a href="../category/misc.html">misc</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="../a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="../a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
|
||||
<a class="readmore" href="../unbelievable.html">read more</a>
|
||||
</div><!-- /.entry-content -->
|
||||
|
|
|
|||
|
|
@ -49,8 +49,8 @@
|
|||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="../static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="../static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
>>> from ipdb import set_trace
|
||||
>>> set_trace()
|
||||
|
|
|
|||
|
|
@ -1,14 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"><title>A Pelican Blog</title><link href="/" rel="alternate"></link><link href="/feeds/all-en.atom.xml" rel="self"></link><id>/</id><updated>2012-02-29T00:00:00Z</updated><entry><title>Second article</title><link href="/second-article.html" rel="alternate"></link><updated>2012-02-29T00:00:00Z</updated><author><name></name></author><id>tag:,2012-02-29:second-article.html</id><summary type="html"><p>This is some article, in english</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>A markdown powered article</title><link href="/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00Z</updated><author><name></name></author><id>tag:,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p></summary></entry><entry><title>Article 1</title><link href="/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>A markdown powered article</title><link href="/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00Z</updated><author><name></name></author><id>tag:,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p>
|
||||
<p><a href="/unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="/unbelievable.html">a file-relative link to unbelievable</a></p></summary></entry><entry><title>Article 1</title><link href="/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary></entry><entry><title>Article 2</title><link href="/article-2.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-2.html</id><summary type="html"><p>Article 2</p>
|
||||
</summary></entry><entry><title>Article 3</title><link href="/article-3.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-3.html</id><summary type="html"><p>Article 3</p>
|
||||
</summary></entry><entry><title>This is a super article !</title><link href="/this-is-a-super-article.html" rel="alternate"></link><updated>2010-12-02T10:14:00Z</updated><author><name>Alexis Métaireau</name></author><id>tag:,2010-12-02:this-is-a-super-article.html</id><summary type="html"><p>Some content here !</p>
|
||||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
&gt;&gt;&gt; from ipdb import set_trace
|
||||
&gt;&gt;&gt; set_trace()
|
||||
|
|
@ -19,7 +21,9 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</summary><category term="oh"></category><category term="bar"></category><category term="yeah"></category></entry><entry><title>Unbelievable !</title><link href="/unbelievable.html" rel="alternate"></link><updated>2010-10-15T20:30:00Z</updated><author><name></name></author><id>tag:,2010-10-15:unbelievable.html</id><summary type="html"><p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="/a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="/a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
</summary></entry></feed>
|
||||
|
|
@ -1,15 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"><title>A Pelican Blog</title><link href="/" rel="alternate"></link><link href="/feeds/all.atom.xml" rel="self"></link><id>/</id><updated>2012-02-29T00:00:00Z</updated><entry><title>Second article</title><link href="/second-article.html" rel="alternate"></link><updated>2012-02-29T00:00:00Z</updated><author><name></name></author><id>tag:,2012-02-29:second-article.html</id><summary type="html"><p>This is some article, in english</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>Deuxième article</title><link href="/second-article-fr.html" rel="alternate"></link><updated>2012-02-29T00:00:00Z</updated><author><name></name></author><id>tag:,2012-02-29:second-article-fr.html</id><summary type="html"><p>Ceci est un article, en français.</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>A markdown powered article</title><link href="/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00Z</updated><author><name></name></author><id>tag:,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p></summary></entry><entry><title>Article 1</title><link href="/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>A markdown powered article</title><link href="/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00Z</updated><author><name></name></author><id>tag:,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p>
|
||||
<p><a href="/unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="/unbelievable.html">a file-relative link to unbelievable</a></p></summary></entry><entry><title>Article 1</title><link href="/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary></entry><entry><title>Article 2</title><link href="/article-2.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-2.html</id><summary type="html"><p>Article 2</p>
|
||||
</summary></entry><entry><title>Article 3</title><link href="/article-3.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-3.html</id><summary type="html"><p>Article 3</p>
|
||||
</summary></entry><entry><title>This is a super article !</title><link href="/this-is-a-super-article.html" rel="alternate"></link><updated>2010-12-02T10:14:00Z</updated><author><name>Alexis Métaireau</name></author><id>tag:,2010-12-02:this-is-a-super-article.html</id><summary type="html"><p>Some content here !</p>
|
||||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
&gt;&gt;&gt; from ipdb import set_trace
|
||||
&gt;&gt;&gt; set_trace()
|
||||
|
|
@ -20,7 +22,9 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</summary><category term="oh"></category><category term="bar"></category><category term="yeah"></category></entry><entry><title>Unbelievable !</title><link href="/unbelievable.html" rel="alternate"></link><updated>2010-10-15T20:30:00Z</updated><author><name></name></author><id>tag:,2010-10-15:unbelievable.html</id><summary type="html"><p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="/a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="/a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
</summary></entry></feed>
|
||||
|
|
@ -3,6 +3,6 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</summary><category term="oh"></category><category term="bar"></category><category term="yeah"></category></entry></feed>
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"><title>A Pelican Blog</title><link href="/" rel="alternate"></link><link href="/feeds/cat1.atom.xml" rel="self"></link><id>/</id><updated>2011-04-20T00:00:00Z</updated><entry><title>A markdown powered article</title><link href="/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00Z</updated><author><name></name></author><id>tag:,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p></summary></entry><entry><title>Article 1</title><link href="/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"><title>A Pelican Blog</title><link href="/" rel="alternate"></link><link href="/feeds/cat1.atom.xml" rel="self"></link><id>/</id><updated>2011-04-20T00:00:00Z</updated><entry><title>A markdown powered article</title><link href="/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00Z</updated><author><name></name></author><id>tag:,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p>
|
||||
<p><a href="/unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="/unbelievable.html">a file-relative link to unbelievable</a></p></summary></entry><entry><title>Article 1</title><link href="/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary></entry><entry><title>Article 2</title><link href="/article-2.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-2.html</id><summary type="html"><p>Article 2</p>
|
||||
</summary></entry><entry><title>Article 3</title><link href="/article-3.html" rel="alternate"></link><updated>2011-02-17T00:00:00Z</updated><author><name></name></author><id>tag:,2011-02-17:article-3.html</id><summary type="html"><p>Article 3</p>
|
||||
</summary></entry></feed>
|
||||
|
|
@ -1,4 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"><title>A Pelican Blog</title><link href="/" rel="alternate"></link><link href="/feeds/misc.atom.xml" rel="self"></link><id>/</id><updated>2012-02-29T00:00:00Z</updated><entry><title>Second article</title><link href="/second-article.html" rel="alternate"></link><updated>2012-02-29T00:00:00Z</updated><author><name></name></author><id>tag:,2012-02-29:second-article.html</id><summary type="html"><p>This is some article, in english</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>Unbelievable !</title><link href="/unbelievable.html" rel="alternate"></link><updated>2010-10-15T20:30:00Z</updated><author><name></name></author><id>tag:,2010-10-15:unbelievable.html</id><summary type="html"><p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="/a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="/a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
</summary></entry></feed>
|
||||
|
|
@ -3,8 +3,8 @@
|
|||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
&gt;&gt;&gt; from ipdb import set_trace
|
||||
&gt;&gt;&gt; set_trace()
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@
|
|||
<p>In <a href="./category/cat1.html">cat1</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>You're mutually oblivious.</p>
|
||||
<p><a href="./unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="./unbelievable.html">a file-relative link to unbelievable</a></p>
|
||||
<a class="readmore" href="./a-markdown-powered-article.html">read more</a>
|
||||
</div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
|
@ -188,7 +190,7 @@ as well as <strong>inline markup</strong>.</p>
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
|
||||
<a class="readmore" href="./oh-yeah.html">read more</a>
|
||||
|
|
@ -212,6 +214,8 @@ YEAH !</p>
|
|||
<p>In <a href="./category/misc.html">misc</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="./a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="./a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
|
||||
<a class="readmore" href="./unbelievable.html">read more</a>
|
||||
</div><!-- /.entry-content -->
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
|
||||
</div><!-- /.entry-content -->
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
<h1 class="entry-title">This is a test page</h1>
|
||||
|
||||
<p>Just an image.</p>
|
||||
<img alt="alternate text" src="../static/pictures/Fat_Cat.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Fat_Cat.jpg" style="width: 600px; height: 450px;" />
|
||||
|
||||
</section>
|
||||
<section id="extras" class="body">
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ as well as <strong>inline markup</strong>.</p>
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="../static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
|
||||
<a class="readmore" href="../oh-yeah.html">read more</a>
|
||||
|
|
|
|||
|
|
@ -49,8 +49,8 @@
|
|||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="../static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="../static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
>>> from ipdb import set_trace
|
||||
>>> set_trace()
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="../static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</article>
|
||||
</aside><!-- /#featured -->
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="../static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</article>
|
||||
</aside><!-- /#featured -->
|
||||
|
|
|
|||
|
|
@ -52,8 +52,8 @@
|
|||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="|filename|/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
>>> from ipdb import set_trace
|
||||
>>> set_trace()
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@
|
|||
<p>In <a href="./category/misc.html">misc</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="./a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="./a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
|
||||
</div><!-- /.entry-content -->
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@
|
|||
<p>In <a href="./category/cat1.html">cat1</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>You're mutually oblivious.</p>
|
||||
<p><a href="./unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="./unbelievable.html">a file-relative link to unbelievable</a></p>
|
||||
</div><!-- /.entry-content -->
|
||||
<div class="comments">
|
||||
<h2>Comments !</h2>
|
||||
|
|
|
|||
|
|
@ -49,7 +49,9 @@
|
|||
</address>
|
||||
<p>In <a href="../category/cat1.html">cat1</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --><p>You're mutually oblivious.</p><p>There are <a href="../a-markdown-powered-article.html#disqus_thread">comments</a>.</p> </article>
|
||||
</footer><!-- /.post-info --><p>You're mutually oblivious.</p>
|
||||
<p><a href="../unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="../unbelievable.html">a file-relative link to unbelievable</a></p><p>There are <a href="../a-markdown-powered-article.html#disqus_thread">comments</a>.</p> </article>
|
||||
</aside><!-- /#featured -->
|
||||
<section id="content" class="body">
|
||||
<h1>Other articles</h1>
|
||||
|
|
|
|||
|
|
@ -142,6 +142,8 @@ as well as <strong>inline markup</strong>.</p>
|
|||
<p>In <a href="../category/misc.html">misc</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="../a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="../a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
|
||||
<a class="readmore" href="../unbelievable.html">read more</a>
|
||||
<p>There are <a href="../unbelievable.html#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
|
||||
|
|
|
|||
|
|
@ -49,7 +49,9 @@
|
|||
</address>
|
||||
<p>In <a href="../category/cat1.html">cat1</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --><p>You're mutually oblivious.</p><p>There are <a href="../a-markdown-powered-article.html#disqus_thread">comments</a>.</p> </article>
|
||||
</footer><!-- /.post-info --><p>You're mutually oblivious.</p>
|
||||
<p><a href="../unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="../unbelievable.html">a file-relative link to unbelievable</a></p><p>There are <a href="../a-markdown-powered-article.html#disqus_thread">comments</a>.</p> </article>
|
||||
</aside><!-- /#featured -->
|
||||
<section id="content" class="body">
|
||||
<h1>Other articles</h1>
|
||||
|
|
|
|||
|
|
@ -79,6 +79,8 @@
|
|||
<p>In <a href="../category/misc.html">misc</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="../a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="../a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
|
||||
<a class="readmore" href="../unbelievable.html">read more</a>
|
||||
<p>There are <a href="../unbelievable.html#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
|
||||
|
|
|
|||
|
|
@ -1,14 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Alexis' log</title><link href="http://blog.notmyidea.org/" rel="alternate"></link><link href="http://blog.notmyidea.org/feeds/all-en.atom.xml" rel="self"></link><id>http://blog.notmyidea.org/</id><updated>2012-02-29T00:00:00+01:00</updated><entry><title>Second article</title><link href="http://blog.notmyidea.org/second-article.html" rel="alternate"></link><updated>2012-02-29T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2012-02-29:second-article.html</id><summary type="html"><p>This is some article, in english</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>A markdown powered article</title><link href="http://blog.notmyidea.org/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p></summary></entry><entry><title>Article 1</title><link href="http://blog.notmyidea.org/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>A markdown powered article</title><link href="http://blog.notmyidea.org/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p>
|
||||
<p><a href="http://blog.notmyidea.org/unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="http://blog.notmyidea.org/unbelievable.html">a file-relative link to unbelievable</a></p></summary></entry><entry><title>Article 1</title><link href="http://blog.notmyidea.org/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary></entry><entry><title>Article 2</title><link href="http://blog.notmyidea.org/article-2.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-2.html</id><summary type="html"><p>Article 2</p>
|
||||
</summary></entry><entry><title>Article 3</title><link href="http://blog.notmyidea.org/article-3.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-3.html</id><summary type="html"><p>Article 3</p>
|
||||
</summary></entry><entry><title>This is a super article !</title><link href="http://blog.notmyidea.org/this-is-a-super-article.html" rel="alternate"></link><updated>2010-12-02T10:14:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2010-12-02:this-is-a-super-article.html</id><summary type="html"><p>Some content here !</p>
|
||||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
&gt;&gt;&gt; from ipdb import set_trace
|
||||
&gt;&gt;&gt; set_trace()
|
||||
|
|
@ -19,7 +21,9 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</summary><category term="oh"></category><category term="bar"></category><category term="yeah"></category></entry><entry><title>Unbelievable !</title><link href="http://blog.notmyidea.org/unbelievable.html" rel="alternate"></link><updated>2010-10-15T20:30:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2010-10-15:unbelievable.html</id><summary type="html"><p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
</summary></entry></feed>
|
||||
|
|
@ -2,15 +2,17 @@
|
|||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Alexis' log</title><link href="http://blog.notmyidea.org/" rel="alternate"></link><link href="http://blog.notmyidea.org/feeds/all.atom.xml" rel="self"></link><id>http://blog.notmyidea.org/</id><updated>2012-03-02T14:01:01+01:00</updated><entry><title>Trop bien !</title><link href="http://blog.notmyidea.org/oh-yeah-fr.html" rel="alternate"></link><updated>2012-03-02T14:01:01+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2012-03-02:oh-yeah-fr.html</id><summary type="html"><p>Et voila du contenu en français</p>
|
||||
</summary></entry><entry><title>Second article</title><link href="http://blog.notmyidea.org/second-article.html" rel="alternate"></link><updated>2012-02-29T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2012-02-29:second-article.html</id><summary type="html"><p>This is some article, in english</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>Deuxième article</title><link href="http://blog.notmyidea.org/second-article-fr.html" rel="alternate"></link><updated>2012-02-29T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2012-02-29:second-article-fr.html</id><summary type="html"><p>Ceci est un article, en français.</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>A markdown powered article</title><link href="http://blog.notmyidea.org/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p></summary></entry><entry><title>Article 1</title><link href="http://blog.notmyidea.org/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>A markdown powered article</title><link href="http://blog.notmyidea.org/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p>
|
||||
<p><a href="http://blog.notmyidea.org/unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="http://blog.notmyidea.org/unbelievable.html">a file-relative link to unbelievable</a></p></summary></entry><entry><title>Article 1</title><link href="http://blog.notmyidea.org/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary></entry><entry><title>Article 2</title><link href="http://blog.notmyidea.org/article-2.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-2.html</id><summary type="html"><p>Article 2</p>
|
||||
</summary></entry><entry><title>Article 3</title><link href="http://blog.notmyidea.org/article-3.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-3.html</id><summary type="html"><p>Article 3</p>
|
||||
</summary></entry><entry><title>This is a super article !</title><link href="http://blog.notmyidea.org/this-is-a-super-article.html" rel="alternate"></link><updated>2010-12-02T10:14:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2010-12-02:this-is-a-super-article.html</id><summary type="html"><p>Some content here !</p>
|
||||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
&gt;&gt;&gt; from ipdb import set_trace
|
||||
&gt;&gt;&gt; set_trace()
|
||||
|
|
@ -21,7 +23,9 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</summary><category term="oh"></category><category term="bar"></category><category term="yeah"></category></entry><entry><title>Unbelievable !</title><link href="http://blog.notmyidea.org/unbelievable.html" rel="alternate"></link><updated>2010-10-15T20:30:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2010-10-15:unbelievable.html</id><summary type="html"><p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
</summary></entry></feed>
|
||||
|
|
@ -2,15 +2,17 @@
|
|||
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Alexis' log</title><link>http://blog.notmyidea.org/</link><description></description><atom:link href="http://blog.notmyidea.org/feeds/all.rss.xml" rel="self"></atom:link><lastBuildDate>Fri, 02 Mar 2012 14:01:01 +0100</lastBuildDate><item><title>Trop bien !</title><link>http://blog.notmyidea.org/oh-yeah-fr.html</link><description><p>Et voila du contenu en français</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Fri, 02 Mar 2012 14:01:01 +0100</pubDate><guid>tag:blog.notmyidea.org,2012-03-02:oh-yeah-fr.html</guid></item><item><title>Second article</title><link>http://blog.notmyidea.org/second-article.html</link><description><p>This is some article, in english</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 29 Feb 2012 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2012-02-29:second-article.html</guid><category>foo</category><category>bar</category><category>baz</category></item><item><title>Deuxième article</title><link>http://blog.notmyidea.org/second-article-fr.html</link><description><p>Ceci est un article, en français.</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 29 Feb 2012 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2012-02-29:second-article-fr.html</guid><category>foo</category><category>bar</category><category>baz</category></item><item><title>A markdown powered article</title><link>http://blog.notmyidea.org/a-markdown-powered-article.html</link><description><p>You're mutually oblivious.</p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 20 Apr 2011 00:00:00 +0200</pubDate><guid>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</guid></item><item><title>Article 1</title><link>http://blog.notmyidea.org/article-1.html</link><description><p>Article 1</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 29 Feb 2012 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2012-02-29:second-article-fr.html</guid><category>foo</category><category>bar</category><category>baz</category></item><item><title>A markdown powered article</title><link>http://blog.notmyidea.org/a-markdown-powered-article.html</link><description><p>You're mutually oblivious.</p>
|
||||
<p><a href="http://blog.notmyidea.org/unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="http://blog.notmyidea.org/unbelievable.html">a file-relative link to unbelievable</a></p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 20 Apr 2011 00:00:00 +0200</pubDate><guid>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</guid></item><item><title>Article 1</title><link>http://blog.notmyidea.org/article-1.html</link><description><p>Article 1</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Thu, 17 Feb 2011 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2011-02-17:article-1.html</guid></item><item><title>Article 2</title><link>http://blog.notmyidea.org/article-2.html</link><description><p>Article 2</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Thu, 17 Feb 2011 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2011-02-17:article-2.html</guid></item><item><title>Article 3</title><link>http://blog.notmyidea.org/article-3.html</link><description><p>Article 3</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Thu, 17 Feb 2011 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2011-02-17:article-3.html</guid></item><item><title>This is a super article !</title><link>http://blog.notmyidea.org/this-is-a-super-article.html</link><description><p>Some content here !</p>
|
||||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
&gt;&gt;&gt; from ipdb import set_trace
|
||||
&gt;&gt;&gt; set_trace()
|
||||
|
|
@ -21,7 +23,9 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 20 Oct 2010 10:14:00 +0200</pubDate><guid>tag:blog.notmyidea.org,2010-10-20:oh-yeah.html</guid><category>oh</category><category>bar</category><category>yeah</category></item><item><title>Unbelievable !</title><link>http://blog.notmyidea.org/unbelievable.html</link><description><p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Fri, 15 Oct 2010 20:30:00 +0200</pubDate><guid>tag:blog.notmyidea.org,2010-10-15:unbelievable.html</guid></item></channel></rss>
|
||||
|
|
@ -3,6 +3,6 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</summary><category term="oh"></category><category term="bar"></category><category term="yeah"></category></entry></feed>
|
||||
|
|
@ -3,6 +3,6 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 20 Oct 2010 10:14:00 +0200</pubDate><guid>tag:blog.notmyidea.org,2010-10-20:oh-yeah.html</guid><category>oh</category><category>bar</category><category>yeah</category></item></channel></rss>
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Alexis' log</title><link href="http://blog.notmyidea.org/" rel="alternate"></link><link href="http://blog.notmyidea.org/feeds/cat1.atom.xml" rel="self"></link><id>http://blog.notmyidea.org/</id><updated>2011-04-20T00:00:00+02:00</updated><entry><title>A markdown powered article</title><link href="http://blog.notmyidea.org/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p></summary></entry><entry><title>Article 1</title><link href="http://blog.notmyidea.org/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Alexis' log</title><link href="http://blog.notmyidea.org/" rel="alternate"></link><link href="http://blog.notmyidea.org/feeds/cat1.atom.xml" rel="self"></link><id>http://blog.notmyidea.org/</id><updated>2011-04-20T00:00:00+02:00</updated><entry><title>A markdown powered article</title><link href="http://blog.notmyidea.org/a-markdown-powered-article.html" rel="alternate"></link><updated>2011-04-20T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</id><summary type="html"><p>You're mutually oblivious.</p>
|
||||
<p><a href="http://blog.notmyidea.org/unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="http://blog.notmyidea.org/unbelievable.html">a file-relative link to unbelievable</a></p></summary></entry><entry><title>Article 1</title><link href="http://blog.notmyidea.org/article-1.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-1.html</id><summary type="html"><p>Article 1</p>
|
||||
</summary></entry><entry><title>Article 2</title><link href="http://blog.notmyidea.org/article-2.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-2.html</id><summary type="html"><p>Article 2</p>
|
||||
</summary></entry><entry><title>Article 3</title><link href="http://blog.notmyidea.org/article-3.html" rel="alternate"></link><updated>2011-02-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2011-02-17:article-3.html</id><summary type="html"><p>Article 3</p>
|
||||
</summary></entry></feed>
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Alexis' log</title><link>http://blog.notmyidea.org/</link><description></description><atom:link href="http://blog.notmyidea.org/feeds/cat1.rss.xml" rel="self"></atom:link><lastBuildDate>Wed, 20 Apr 2011 00:00:00 +0200</lastBuildDate><item><title>A markdown powered article</title><link>http://blog.notmyidea.org/a-markdown-powered-article.html</link><description><p>You're mutually oblivious.</p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 20 Apr 2011 00:00:00 +0200</pubDate><guid>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</guid></item><item><title>Article 1</title><link>http://blog.notmyidea.org/article-1.html</link><description><p>Article 1</p>
|
||||
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Alexis' log</title><link>http://blog.notmyidea.org/</link><description></description><atom:link href="http://blog.notmyidea.org/feeds/cat1.rss.xml" rel="self"></atom:link><lastBuildDate>Wed, 20 Apr 2011 00:00:00 +0200</lastBuildDate><item><title>A markdown powered article</title><link>http://blog.notmyidea.org/a-markdown-powered-article.html</link><description><p>You're mutually oblivious.</p>
|
||||
<p><a href="http://blog.notmyidea.org/unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="http://blog.notmyidea.org/unbelievable.html">a file-relative link to unbelievable</a></p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 20 Apr 2011 00:00:00 +0200</pubDate><guid>tag:blog.notmyidea.org,2011-04-20:a-markdown-powered-article.html</guid></item><item><title>Article 1</title><link>http://blog.notmyidea.org/article-1.html</link><description><p>Article 1</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Thu, 17 Feb 2011 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2011-02-17:article-1.html</guid></item><item><title>Article 2</title><link>http://blog.notmyidea.org/article-2.html</link><description><p>Article 2</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Thu, 17 Feb 2011 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2011-02-17:article-2.html</guid></item><item><title>Article 3</title><link>http://blog.notmyidea.org/article-3.html</link><description><p>Article 3</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Thu, 17 Feb 2011 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2011-02-17:article-3.html</guid></item></channel></rss>
|
||||
|
|
@ -1,4 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Alexis' log</title><link href="http://blog.notmyidea.org/" rel="alternate"></link><link href="http://blog.notmyidea.org/feeds/misc.atom.xml" rel="self"></link><id>http://blog.notmyidea.org/</id><updated>2012-02-29T00:00:00+01:00</updated><entry><title>Second article</title><link href="http://blog.notmyidea.org/second-article.html" rel="alternate"></link><updated>2012-02-29T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2012-02-29:second-article.html</id><summary type="html"><p>This is some article, in english</p>
|
||||
</summary><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>Unbelievable !</title><link href="http://blog.notmyidea.org/unbelievable.html" rel="alternate"></link><updated>2010-10-15T20:30:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2010-10-15:unbelievable.html</id><summary type="html"><p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
</summary></entry></feed>
|
||||
|
|
@ -1,4 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Alexis' log</title><link>http://blog.notmyidea.org/</link><description></description><atom:link href="http://blog.notmyidea.org/feeds/misc.rss.xml" rel="self"></atom:link><lastBuildDate>Wed, 29 Feb 2012 00:00:00 +0100</lastBuildDate><item><title>Second article</title><link>http://blog.notmyidea.org/second-article.html</link><description><p>This is some article, in english</p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 29 Feb 2012 00:00:00 +0100</pubDate><guid>tag:blog.notmyidea.org,2012-02-29:second-article.html</guid><category>foo</category><category>bar</category><category>baz</category></item><item><title>Unbelievable !</title><link>http://blog.notmyidea.org/unbelievable.html</link><description><p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="http://blog.notmyidea.org/a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Fri, 15 Oct 2010 20:30:00 +0200</pubDate><guid>tag:blog.notmyidea.org,2010-10-15:unbelievable.html</guid></item></channel></rss>
|
||||
|
|
@ -3,8 +3,8 @@
|
|||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
&gt;&gt;&gt; from ipdb import set_trace
|
||||
&gt;&gt;&gt; set_trace()
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="http://blog.notmyidea.org/static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
&gt;&gt;&gt; from ipdb import set_trace
|
||||
&gt;&gt;&gt; set_trace()
|
||||
|
|
|
|||
|
|
@ -79,6 +79,8 @@
|
|||
<p>In <a href="./category/cat1.html">cat1</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>You're mutually oblivious.</p>
|
||||
<p><a href="./unbelievable.html">a root-relative link to unbelievable</a>
|
||||
<a href="./unbelievable.html">a file-relative link to unbelievable</a></p>
|
||||
<a class="readmore" href="./a-markdown-powered-article.html">read more</a>
|
||||
<p>There are <a href="./a-markdown-powered-article.html#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ as well as <strong>inline markup</strong>.</p>
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="./static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
|
||||
<a class="readmore" href="./oh-yeah.html">read more</a>
|
||||
|
|
@ -140,6 +140,8 @@ YEAH !</p>
|
|||
<p>In <a href="./category/misc.html">misc</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="./a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="./a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
|
||||
<a class="readmore" href="./unbelievable.html">read more</a>
|
||||
<p>There are <a href="./unbelievable.html#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@
|
|||
<h2>Why not ?</h2>
|
||||
<p>After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
|
||||
YEAH !</p>
|
||||
<img alt="alternate text" src="static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="./static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
</div>
|
||||
|
||||
</div><!-- /.entry-content -->
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@
|
|||
<div class="section" id="this-is-a-simple-title">
|
||||
<h2>This is a simple title</h2>
|
||||
<p>And here comes the cool <a class="reference external" href="http://books.couchdb.org/relax/design-documents/views">stuff</a>.</p>
|
||||
<img alt="alternate text" src="static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="./static/pictures/Sushi.jpg" style="width: 600px; height: 450px;" />
|
||||
<img alt="alternate text" src="./static/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" />
|
||||
<pre class="literal-block">
|
||||
>>> from ipdb import set_trace
|
||||
>>> set_trace()
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@
|
|||
<p>In <a href="./category/misc.html">misc</a>. </p>
|
||||
|
||||
</footer><!-- /.post-info --> <p>Or completely awesome. Depends the needs.</p>
|
||||
<p><a class="reference external" href="./a-markdown-powered-article.html">a root-relative link to markdown-article</a>
|
||||
<a class="reference external" href="./a-markdown-powered-article.html">a file-relative link to markdown-article</a></p>
|
||||
|
||||
</div><!-- /.entry-content -->
|
||||
<div class="comments">
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ import os
|
|||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import logging
|
||||
from logging.handlers import BufferingHandler
|
||||
|
||||
from functools import wraps
|
||||
from contextlib import contextmanager
|
||||
|
|
@ -15,6 +17,7 @@ from tempfile import mkdtemp
|
|||
from shutil import rmtree
|
||||
|
||||
from pelican.contents import Article
|
||||
from pelican.settings import _DEFAULT_CONFIG
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
|
|
@ -149,3 +152,25 @@ def module_exists(module_name):
|
|||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
def get_settings():
|
||||
settings = _DEFAULT_CONFIG.copy()
|
||||
settings['DIRECT_TEMPLATES'] = ['archives']
|
||||
settings['filenames'] = {}
|
||||
return settings
|
||||
|
||||
|
||||
class LogCountHandler(BufferingHandler):
|
||||
"""
|
||||
Capturing and counting logged messages.
|
||||
"""
|
||||
|
||||
def __init__(self, capacity=1000):
|
||||
logging.handlers.BufferingHandler.__init__(self, capacity)
|
||||
|
||||
def count_logs(self, msg=None, level=None):
|
||||
return len([l for l in self.buffer
|
||||
if (msg is None or re.match(msg, l.getMessage()))
|
||||
and (level is None or l.levelno == level)
|
||||
])
|
||||
|
|
|
|||
|
|
@ -19,6 +19,9 @@ class TestPage(unittest.TestCase):
|
|||
super(TestPage, self).setUp()
|
||||
self.page_kwargs = {
|
||||
'content': TEST_CONTENT,
|
||||
'context': {
|
||||
'localsiteurl': '',
|
||||
},
|
||||
'metadata': {
|
||||
'summary': TEST_SUMMARY,
|
||||
'title': 'foo bar',
|
||||
|
|
@ -32,7 +35,8 @@ class TestPage(unittest.TestCase):
|
|||
|
||||
"""
|
||||
metadata = {'foo': 'bar', 'foobar': 'baz', 'title': 'foobar', }
|
||||
page = Page(TEST_CONTENT, metadata=metadata)
|
||||
page = Page(TEST_CONTENT, metadata=metadata,
|
||||
context={'localsiteurl': ''})
|
||||
for key, value in metadata.items():
|
||||
self.assertTrue(hasattr(page, key))
|
||||
self.assertEqual(value, getattr(page, key))
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ from pelican.generators import ArticlesGenerator, PagesGenerator, \
|
|||
TemplatePagesGenerator
|
||||
from pelican.writers import Writer
|
||||
from pelican.settings import _DEFAULT_CONFIG
|
||||
from .support import unittest
|
||||
from .support import unittest, get_settings
|
||||
|
||||
CUR_DIR = os.path.dirname(__file__)
|
||||
|
||||
|
|
@ -28,20 +28,20 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
for each test.
|
||||
"""
|
||||
if self.generator is None:
|
||||
settings = _DEFAULT_CONFIG.copy()
|
||||
settings = get_settings()
|
||||
settings['ARTICLE_DIR'] = 'content'
|
||||
settings['DEFAULT_CATEGORY'] = 'Default'
|
||||
settings['DEFAULT_DATE'] = (1970, 01, 01)
|
||||
self.generator = ArticlesGenerator(settings.copy(), settings,
|
||||
CUR_DIR, _DEFAULT_CONFIG['THEME'], None,
|
||||
_DEFAULT_CONFIG['MARKUP'])
|
||||
CUR_DIR, settings['THEME'], None,
|
||||
settings['MARKUP'])
|
||||
self.generator.generate_context()
|
||||
return self.generator
|
||||
|
||||
def distill_articles(self, articles):
|
||||
distilled = []
|
||||
for page in articles:
|
||||
distilled.append([
|
||||
distilled.append([
|
||||
page.title,
|
||||
page.status,
|
||||
page.category.name,
|
||||
|
|
@ -51,16 +51,16 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
return distilled
|
||||
|
||||
def test_generate_feeds(self):
|
||||
|
||||
generator = ArticlesGenerator(None, {'FEED_ALL_ATOM': _DEFAULT_CONFIG['FEED_ALL_ATOM']},
|
||||
None, _DEFAULT_CONFIG['THEME'], None,
|
||||
_DEFAULT_CONFIG['MARKUP'])
|
||||
settings = get_settings()
|
||||
generator = ArticlesGenerator(settings,
|
||||
{'FEED_ALL_ATOM': settings['FEED_ALL_ATOM']}, None,
|
||||
settings['THEME'], None, settings['MARKUP'])
|
||||
writer = MagicMock()
|
||||
generator.generate_feeds(writer)
|
||||
writer.write_feed.assert_called_with([], None, 'feeds/all.atom.xml')
|
||||
writer.write_feed.assert_called_with([], settings, 'feeds/all.atom.xml')
|
||||
|
||||
generator = ArticlesGenerator(None, {'FEED_ALL_ATOM': None}, None,
|
||||
_DEFAULT_CONFIG['THEME'], None, None)
|
||||
generator = ArticlesGenerator(settings, {'FEED_ALL_ATOM': None}, None,
|
||||
settings['THEME'], None, None)
|
||||
writer = MagicMock()
|
||||
generator.generate_feeds(writer)
|
||||
self.assertFalse(writer.write_feed.called)
|
||||
|
|
@ -96,6 +96,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['DEFAULT_CATEGORY'] = 'Default'
|
||||
settings['DEFAULT_DATE'] = (1970, 01, 01)
|
||||
settings['USE_FOLDER_AS_CATEGORY'] = False
|
||||
settings['filenames'] = {}
|
||||
generator = ArticlesGenerator(settings.copy(), settings,
|
||||
CUR_DIR, _DEFAULT_CONFIG['THEME'], None,
|
||||
_DEFAULT_CONFIG['MARKUP'])
|
||||
|
|
@ -106,11 +107,10 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
|
||||
def test_direct_templates_save_as_default(self):
|
||||
|
||||
settings = _DEFAULT_CONFIG.copy()
|
||||
settings['DIRECT_TEMPLATES'] = ['archives']
|
||||
generator = ArticlesGenerator(settings.copy(), settings, None,
|
||||
_DEFAULT_CONFIG['THEME'], None,
|
||||
_DEFAULT_CONFIG['MARKUP'])
|
||||
settings = get_settings()
|
||||
generator = ArticlesGenerator(settings, settings, None,
|
||||
settings['THEME'], None,
|
||||
settings['MARKUP'])
|
||||
write = MagicMock()
|
||||
generator.generate_direct_templates(write)
|
||||
write.assert_called_with("archives.html",
|
||||
|
|
@ -119,12 +119,12 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
|
||||
def test_direct_templates_save_as_modified(self):
|
||||
|
||||
settings = _DEFAULT_CONFIG.copy()
|
||||
settings = get_settings()
|
||||
settings['DIRECT_TEMPLATES'] = ['archives']
|
||||
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
|
||||
generator = ArticlesGenerator(settings, settings, None,
|
||||
_DEFAULT_CONFIG['THEME'], None,
|
||||
_DEFAULT_CONFIG['MARKUP'])
|
||||
settings['THEME'], None,
|
||||
settings['MARKUP'])
|
||||
write = MagicMock()
|
||||
generator.generate_direct_templates(write)
|
||||
write.assert_called_with("archives/index.html",
|
||||
|
|
@ -133,12 +133,12 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
|
||||
def test_direct_templates_save_as_false(self):
|
||||
|
||||
settings = _DEFAULT_CONFIG.copy()
|
||||
settings = get_settings()
|
||||
settings['DIRECT_TEMPLATES'] = ['archives']
|
||||
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
|
||||
generator = ArticlesGenerator(settings, settings, None,
|
||||
_DEFAULT_CONFIG['THEME'], None,
|
||||
_DEFAULT_CONFIG['MARKUP'])
|
||||
settings['THEME'], None,
|
||||
settings['MARKUP'])
|
||||
write = MagicMock()
|
||||
generator.generate_direct_templates(write)
|
||||
write.assert_called_count == 0
|
||||
|
|
@ -174,13 +174,13 @@ class TestPageGenerator(unittest.TestCase):
|
|||
return distilled
|
||||
|
||||
def test_generate_context(self):
|
||||
settings = _DEFAULT_CONFIG.copy()
|
||||
|
||||
settings = get_settings()
|
||||
settings['PAGE_DIR'] = 'TestPages'
|
||||
settings['DEFAULT_DATE'] = (1970, 01, 01)
|
||||
|
||||
generator = PagesGenerator(settings.copy(), settings, CUR_DIR,
|
||||
_DEFAULT_CONFIG['THEME'], None,
|
||||
_DEFAULT_CONFIG['MARKUP'])
|
||||
settings['THEME'], None,
|
||||
settings['MARKUP'])
|
||||
generator.generate_context()
|
||||
pages = self.distill_pages(generator.pages)
|
||||
hidden_pages = self.distill_pages(generator.hidden_pages)
|
||||
|
|
@ -214,7 +214,7 @@ class TestTemplatePagesGenerator(unittest.TestCase):
|
|||
|
||||
def test_generate_output(self):
|
||||
|
||||
settings = _DEFAULT_CONFIG.copy()
|
||||
settings = get_settings()
|
||||
settings['STATIC_PATHS'] = ['static']
|
||||
settings['TEMPLATE_PAGES'] = {
|
||||
'template/source.html': 'generated/file.html'
|
||||
|
|
|
|||
|
|
@ -8,11 +8,13 @@ from filecmp import dircmp
|
|||
from tempfile import mkdtemp
|
||||
from shutil import rmtree
|
||||
import locale
|
||||
import logging
|
||||
|
||||
from mock import patch
|
||||
|
||||
from pelican import Pelican
|
||||
from pelican.settings import read_settings
|
||||
from .support import LogCountHandler
|
||||
|
||||
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
SAMPLES_PATH = os.path.abspath(os.sep.join((CURRENT_DIR, "..", "samples")))
|
||||
|
|
@ -42,6 +44,8 @@ class TestPelican(unittest.TestCase):
|
|||
# to run pelican in different situations and see how it behaves
|
||||
|
||||
def setUp(self):
|
||||
self.logcount_handler = LogCountHandler()
|
||||
logging.getLogger().addHandler(self.logcount_handler)
|
||||
self.temp_path = mkdtemp()
|
||||
self.old_locale = locale.setlocale(locale.LC_ALL)
|
||||
locale.setlocale(locale.LC_ALL, 'C')
|
||||
|
|
@ -49,6 +53,7 @@ class TestPelican(unittest.TestCase):
|
|||
def tearDown(self):
|
||||
rmtree(self.temp_path)
|
||||
locale.setlocale(locale.LC_ALL, self.old_locale)
|
||||
logging.getLogger().removeHandler(self.logcount_handler)
|
||||
|
||||
def assertFilesEqual(self, diff):
|
||||
msg = "some generated files differ from the expected functional " \
|
||||
|
|
@ -73,6 +78,10 @@ class TestPelican(unittest.TestCase):
|
|||
pelican.run()
|
||||
dcmp = dircmp(self.temp_path, os.sep.join((OUTPUT_PATH, "basic")))
|
||||
self.assertFilesEqual(recursiveDiff(dcmp))
|
||||
self.assertEqual(self.logcount_handler.count_logs(
|
||||
msg="Unable to find.*skipping url replacement",
|
||||
level=logging.WARNING,
|
||||
), 10, msg="bad number of occurences found for this log")
|
||||
|
||||
def test_custom_generation_works(self):
|
||||
# the same thing with a specified set of settings should work
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue