diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index bccdab76..ac9f882e 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -7,3 +7,13 @@ ecd598f293161a52564aa6e8dfdcc8284dc93970 db241feaa445375dc05e189e69287000ffe5fa8e # Change pre-commit to run ruff and ruff-format with fixes 6d8597addb17d5fa3027ead91427939e8e4e89ec +# Upgrade Ruff from 0.1.x to 0.4.x +0bd02c00c078fe041b65fbf4eab13601bb42676d +# Apply more Ruff checks to code +9d30c5608a58d202b1c02d55651e6ac746bfb173 +# Apply yet more Ruff checks to code +7577dd7603f7cb3a09922d1edb65b6eafb6e2ac7 +# Indent Jinja templates, HTML, CSS, and JS via DjHTML +4af40e80772a58eac8969360e5caeb99e3e26e78 +# Ruff UP031: Use F-string format specifiers instead of percent format +30bde3823f50b9ba8ac5996c1c46bb72031aa6b8 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0e65a965..bfdd6149 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ # See https://pre-commit.com/hooks.html for info on hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-added-large-files - id: check-ast @@ -13,11 +13,18 @@ repos: - id: end-of-file-fixer - id: forbid-new-submodules - id: trailing-whitespace + - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.15 + # ruff version should match the one in pyproject.toml + rev: v0.4.6 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] - id: ruff-format -exclude: ^pelican/tests/output/ + - repo: https://github.com/rtts/djhtml + rev: '3.0.6' + hooks: + - id: djhtml + - id: djcss + - id: djjs diff --git a/docs/_templates/page.html b/docs/_templates/page.html index 233f43ad..0fbfdf7d 100644 --- a/docs/_templates/page.html +++ b/docs/_templates/page.html @@ -1,201 +1,201 @@ {% extends "base.html" %} {% block body -%} -{{ super() }} -{% include "partials/icons.html" %} + {{ super() }} + {% include "partials/icons.html" %} - - - - + + + + -{% if theme_announcement -%} -
- -
-{%- endif %} + {% if theme_announcement -%} +
+ +
+ {%- endif %} -
-
-
- -
- -
-
- +
+
+
+
- -
-
- -
-
-
- - - - - {% trans %}Back to top{% endtrans %} - -
- {% if theme_top_of_page_button == "edit" -%} - {%- include "components/edit-this-page.html" with context -%} - {%- elif theme_top_of_page_button != None -%} - {{ warning("Got an unsupported value for 'top_of_page_button'") }} - {%- endif -%} - {#- Theme toggle -#} -
- -
- +
+
+
-
- {% block content %}{{ body }}{% endblock %} -
+
-
- {% block footer %} - -
-
- {%- if show_copyright %} - - {%- endif %} - {%- if last_updated -%} -
- {% trans last_updated=last_updated|e -%} - Last updated on {{ last_updated }} - {%- endtrans -%} -
- {%- endif %} + +
-
- +
+
+
+ + + + + {% trans %}Back to top{% endtrans %} + +
+ {% if theme_top_of_page_button == "edit" -%} + {%- include "components/edit-this-page.html" with context -%} + {%- elif theme_top_of_page_button != None -%} + {{ warning("Got an unsupported value for 'top_of_page_button'") }} + {%- endif -%} + {#- Theme toggle -#} +
+ +
+ +
+
+ {% block content %}{{ body }}{% endblock %} +
+
+ +
+ +
-
{%- endblock %} diff --git a/docs/conf.py b/docs/conf.py index 8d8078a2..8f14a018 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -29,7 +29,7 @@ source_suffix = ".rst" master_doc = "index" project = project_data.get("name").upper() year = datetime.datetime.now().date().year -copyright = f"2010–{year}" +copyright = f"2010–{year}" # noqa: RUF001 exclude_patterns = ["_build"] release = project_data.get("version") version = ".".join(release.split(".")[:1]) diff --git a/pelican/__init__.py b/pelican/__init__.py index aef4b124..20d17706 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -19,7 +19,7 @@ __path__ = extend_path(__path__, __name__) # pelican.log has to be the first pelican module to be loaded # because logging.setLoggerClass has to be called before logging.getLogger -from pelican.log import console # noqa: I001 +from pelican.log import console, DEFAULT_LOG_HANDLER # noqa: I001 from pelican.log import init as init_logging from pelican.generators import ( ArticlesGenerator, @@ -193,15 +193,7 @@ class Pelican: ) console.print( - "Done: Processed {}, {}, {}, {}, {} and {} in {:.2f} seconds.".format( - pluralized_articles, - pluralized_drafts, - pluralized_hidden_articles, - pluralized_pages, - pluralized_hidden_pages, - pluralized_draft_pages, - time.time() - start_time, - ) + f"Done: Processed {pluralized_articles}, {pluralized_drafts}, {pluralized_hidden_articles}, {pluralized_pages}, {pluralized_hidden_pages} and {pluralized_draft_pages} in {time.time() - start_time:.2f} seconds." ) def _get_generator_classes(self): @@ -302,7 +294,7 @@ class ParseOverrides(argparse.Action): raise ValueError( "Extra settings must be specified as KEY=VALUE pairs " f"but you specified {item}" - ) + ) from None try: overrides[k] = json.loads(v) except json.decoder.JSONDecodeError: @@ -313,7 +305,7 @@ class ParseOverrides(argparse.Action): "Use -e KEY='\"string\"' to specify a string value; " "-e KEY=null to specify None; " "-e KEY=false (or true) to specify False (or True)." - ) + ) from None setattr(namespace, self.dest, overrides) @@ -425,7 +417,7 @@ def parse_arguments(argv=None): "--relative-urls", dest="relative_paths", action="store_true", - help="Use relative urls in output, " "useful for site development", + help="Use relative urls in output, useful for site development", ) parser.add_argument( @@ -441,7 +433,7 @@ def parse_arguments(argv=None): "--ignore-cache", action="store_true", dest="ignore_cache", - help="Ignore content cache " "from previous runs by not loading cache files.", + help="Ignore content cache from previous runs by not loading cache files.", ) parser.add_argument( @@ -455,6 +447,17 @@ def parse_arguments(argv=None): ), ) + LOG_HANDLERS = {"plain": None, "rich": DEFAULT_LOG_HANDLER} + parser.add_argument( + "--log-handler", + default="rich", + choices=LOG_HANDLERS, + help=( + "Which handler to use to format log messages. " + "The `rich` handler prints output in columns." + ), + ) + parser.add_argument( "--logs-dedup-min-level", default="WARNING", @@ -485,7 +488,7 @@ def parse_arguments(argv=None): "-b", "--bind", dest="bind", - help="IP to bind to when serving files via HTTP " "(default: 127.0.0.1)", + help="IP to bind to when serving files via HTTP (default: 127.0.0.1)", ) parser.add_argument( @@ -509,6 +512,8 @@ def parse_arguments(argv=None): if args.bind is not None and not args.listen: logger.warning("--bind without --listen has no effect") + args.log_handler = LOG_HANDLERS[args.log_handler] + return args @@ -631,6 +636,7 @@ def main(argv=None): level=args.verbosity, fatal=args.fatal, name=__name__, + handler=args.log_handler, logs_dedup_min_level=logs_dedup_min_level, ) diff --git a/pelican/contents.py b/pelican/contents.py index 9532c523..cf13dabc 100644 --- a/pelican/contents.py +++ b/pelican/contents.py @@ -72,7 +72,7 @@ class Content: self._context = context self.translations = [] - local_metadata = dict() + local_metadata = {} local_metadata.update(metadata) # set metadata as attributes @@ -250,7 +250,7 @@ class Content: def get_url_setting(self, key: str) -> str: if hasattr(self, "override_" + key): return getattr(self, "override_" + key) - key = key if self.in_default_lang else "lang_%s" % key + key = key if self.in_default_lang else f"lang_{key}" return self._expand_settings(key) def _link_replacer(self, siteurl: str, m: re.Match) -> str: @@ -357,7 +357,7 @@ class Content: origin = joiner(siteurl, Author(path, self.settings).url) else: logger.warning( - "Replacement Indicator '%s' not recognized, " "skipping replacement", + "Replacement Indicator '%s' not recognized, skipping replacement", what, ) diff --git a/pelican/generators.py b/pelican/generators.py index 076c8d38..73b51713 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -156,7 +156,7 @@ class Generator: return False - def get_files(self, paths, exclude=[], extensions=None): + def get_files(self, paths, exclude=None, extensions=None): """Return a list of files to use, based on rules :param paths: the list pf paths to search (relative to self.path) @@ -164,6 +164,8 @@ class Generator: :param extensions: the list of allowed extensions (if False, all extensions are allowed) """ + if exclude is None: + exclude = [] # backward compatibility for older generators if isinstance(paths, str): paths = [paths] @@ -535,9 +537,9 @@ class ArticlesGenerator(CachingGenerator): """Generate direct templates pages""" for template in self.settings["DIRECT_TEMPLATES"]: save_as = self.settings.get( - "%s_SAVE_AS" % template.upper(), "%s.html" % template + f"{template.upper()}_SAVE_AS", f"{template}.html" ) - url = self.settings.get("%s_URL" % template.upper(), "%s.html" % template) + url = self.settings.get(f"{template.upper()}_URL", f"{template}.html") if not save_as: continue @@ -1038,7 +1040,7 @@ class StaticGenerator(Generator): save_as = os.path.join(self.output_path, staticfile.save_as) s_mtime = os.path.getmtime(source_path) d_mtime = os.path.getmtime(save_as) - return s_mtime - d_mtime > 0.000001 + return s_mtime - d_mtime > 0.000001 # noqa: PLR2004 def _link_or_copy_staticfile(self, sc): if self.settings["STATIC_CREATE_LINKS"]: @@ -1068,7 +1070,7 @@ class StaticGenerator(Generator): except OSError as err: if err.errno == errno.EXDEV: # 18: Invalid cross-device link logger.debug( - "Cross-device links not valid. " "Creating symbolic links instead." + "Cross-device links not valid. Creating symbolic links instead." ) self.fallback_to_symlinks = True self._link_staticfile(sc) diff --git a/pelican/log.py b/pelican/log.py index ef49d280..edf2f182 100644 --- a/pelican/log.py +++ b/pelican/log.py @@ -126,11 +126,13 @@ logging.setLoggerClass(FatalLogger) # force root logger to be of our preferred class logging.getLogger().__class__ = FatalLogger +DEFAULT_LOG_HANDLER = RichHandler(console=console) + def init( level=None, fatal="", - handler=RichHandler(console=console), + handler=DEFAULT_LOG_HANDLER, name=None, logs_dedup_min_level=None, ): @@ -139,7 +141,10 @@ def init( LOG_FORMAT = "%(message)s" logging.basicConfig( - level=level, format=LOG_FORMAT, datefmt="[%H:%M:%S]", handlers=[handler] + level=level, + format=LOG_FORMAT, + datefmt="[%H:%M:%S]", + handlers=[handler] if handler else [], ) logger = logging.getLogger(name) diff --git a/pelican/paginator.py b/pelican/paginator.py index e1d50881..4a7c1aa2 100644 --- a/pelican/paginator.py +++ b/pelican/paginator.py @@ -5,7 +5,7 @@ from collections import namedtuple from math import ceil logger = logging.getLogger(__name__) -PaginationRule = namedtuple( +PaginationRule = namedtuple( # noqa: PYI024 "PaginationRule", "min_page URL SAVE_AS", ) @@ -131,9 +131,8 @@ class Page: if not self.has_next(): rule = p break - else: - if p.min_page <= self.number: - rule = p + elif p.min_page <= self.number: + rule = p if not rule: return "" diff --git a/pelican/readers.py b/pelican/readers.py index e9b07582..422f39fc 100644 --- a/pelican/readers.py +++ b/pelican/readers.py @@ -199,7 +199,7 @@ class RstReader(BaseReader): self._language_code = lang_code else: logger.warning( - "Docutils has no localization for '%s'." " Using 'en' instead.", + "Docutils has no localization for '%s'. Using 'en' instead.", lang_code, ) self._language_code = "en" @@ -320,7 +320,7 @@ class MarkdownReader(BaseReader): elif not DUPLICATES_DEFINITIONS_ALLOWED.get(name, True): if len(value) > 1: logger.warning( - "Duplicate definition of `%s` " "for %s. Using first one.", + "Duplicate definition of `%s` for %s. Using first one.", name, self._source_path, ) diff --git a/pelican/rstdirectives.py b/pelican/rstdirectives.py index 41bfc3d2..9022ac83 100644 --- a/pelican/rstdirectives.py +++ b/pelican/rstdirectives.py @@ -78,7 +78,7 @@ class abbreviation(nodes.Inline, nodes.TextElement): pass -def abbr_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): +def abbr_role(typ, rawtext, text, lineno, inliner, options=None, content=None): text = utils.unescape(text) m = _abbr_re.search(text) if m is None: diff --git a/pelican/server.py b/pelican/server.py index 61729bf1..ebf13677 100644 --- a/pelican/server.py +++ b/pelican/server.py @@ -32,19 +32,18 @@ def parse_arguments(): "--cert", default="./cert.pem", nargs="?", - help="Path to certificate file. " + "Relative to current directory", + help="Path to certificate file. Relative to current directory", ) parser.add_argument( "--key", default="./key.pem", nargs="?", - help="Path to certificate key file. " + "Relative to current directory", + help="Path to certificate key file. Relative to current directory", ) parser.add_argument( "--path", default=".", - help="Path to pelican source directory to serve. " - + "Relative to current directory", + help="Path to pelican source directory to serve. Relative to current directory", ) return parser.parse_args() @@ -54,14 +53,12 @@ class ComplexHTTPRequestHandler(server.SimpleHTTPRequestHandler): extensions_map = { **server.SimpleHTTPRequestHandler.extensions_map, - **{ - # web fonts - ".oft": "font/oft", - ".sfnt": "font/sfnt", - ".ttf": "font/ttf", - ".woff": "font/woff", - ".woff2": "font/woff2", - }, + # web fonts + ".oft": "font/oft", + ".sfnt": "font/sfnt", + ".ttf": "font/ttf", + ".woff": "font/woff", + ".woff2": "font/woff2", } def translate_path(self, path): diff --git a/pelican/settings.py b/pelican/settings.py index 2cd6fb00..46b761a5 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -223,7 +223,7 @@ def read_settings( # parameters to docutils directive handlers, so we have to have a # variable here that we'll import from within Pygments.run (see # rstdirectives.py) to see what the user defaults were. - global PYGMENTS_RST_OPTIONS + global PYGMENTS_RST_OPTIONS # noqa: PLW0603 PYGMENTS_RST_OPTIONS = settings.get("PYGMENTS_RST_OPTIONS", None) return settings @@ -322,10 +322,7 @@ def handle_deprecated_settings(settings: Settings) -> Settings: "EXTRA_TEMPLATES_PATHS is deprecated use " "THEME_TEMPLATES_OVERRIDES instead." ) - if ( - "THEME_TEMPLATES_OVERRIDES" in settings - and settings["THEME_TEMPLATES_OVERRIDES"] - ): + if settings.get("THEME_TEMPLATES_OVERRIDES"): raise Exception( "Setting both EXTRA_TEMPLATES_PATHS and " "THEME_TEMPLATES_OVERRIDES is not permitted. Please move to " @@ -450,7 +447,7 @@ def handle_deprecated_settings(settings: Settings) -> Settings: and not isinstance(settings[key], Path) and "%s" in settings[key] ): - logger.warning("%%s usage in %s is deprecated, use {lang} " "instead.", key) + logger.warning("%%s usage in %s is deprecated, use {lang} instead.", key) try: settings[key] = _printf_s_to_format_field(settings[key], "lang") except ValueError: @@ -473,7 +470,7 @@ def handle_deprecated_settings(settings: Settings) -> Settings: and not isinstance(settings[key], Path) and "%s" in settings[key] ): - logger.warning("%%s usage in %s is deprecated, use {slug} " "instead.", key) + logger.warning("%%s usage in %s is deprecated, use {slug} instead.", key) try: settings[key] = _printf_s_to_format_field(settings[key], "slug") except ValueError: @@ -594,7 +591,7 @@ def configure_settings(settings: Settings) -> Settings: if os.path.exists(theme_path): settings["THEME"] = theme_path else: - raise Exception("Could not find the theme %s" % settings["THEME"]) + raise Exception("Could not find the theme {}".format(settings["THEME"])) # standardize strings to lowercase strings for key in ["DEFAULT_LANG"]: @@ -617,7 +614,7 @@ def configure_settings(settings: Settings) -> Settings: if key in settings and not isinstance(settings[key], types): value = settings.pop(key) logger.warn( - "Detected misconfigured %s (%s), " "falling back to the default (%s)", + "Detected misconfigured %s (%s), falling back to the default (%s)", key, value, DEFAULT_CONFIG[key], @@ -679,7 +676,7 @@ def configure_settings(settings: Settings) -> Settings: if any(settings.get(k) for k in feed_keys): if not settings.get("SITEURL"): logger.warning( - "Feeds generated without SITEURL set properly may" " not be valid" + "Feeds generated without SITEURL set properly may not be valid" ) if "TIMEZONE" not in settings: diff --git a/pelican/tests/content/article_with_inline_svg.html b/pelican/tests/content/article_with_inline_svg.html index 07f97a8a..06725704 100644 --- a/pelican/tests/content/article_with_inline_svg.html +++ b/pelican/tests/content/article_with_inline_svg.html @@ -5,13 +5,13 @@ Ensure that the title attribute in an inline svg is not handled as an HTML title. - - A different title inside the inline SVG - - - - - + + A different title inside the inline SVG + + + + + diff --git a/pelican/tests/content/medium_posts/2017-04-21_-medium-post--d1bf01d62ba3.html b/pelican/tests/content/medium_posts/2017-04-21_-medium-post--d1bf01d62ba3.html index 02d272dc..6d28f1a2 100644 --- a/pelican/tests/content/medium_posts/2017-04-21_-medium-post--d1bf01d62ba3.html +++ b/pelican/tests/content/medium_posts/2017-04-21_-medium-post--d1bf01d62ba3.html @@ -1,72 +1,72 @@ A title
-
-

A name (like title)

-
-
+ * { + font-family: Georgia, Cambria, "Times New Roman", Times, serif; + } + html, body { + margin: 0; + padding: 0; + } + h1 { + font-size: 50px; + margin-bottom: 17px; + color: #333; + } + h2 { + font-size: 24px; + line-height: 1.6; + margin: 30px 0 0 0; + margin-bottom: 18px; + margin-top: 33px; + color: #333; + } + h3 { + font-size: 30px; + margin: 10px 0 20px 0; + color: #333; + } + header { + width: 640px; + margin: auto; + } + section { + width: 640px; + margin: auto; + } + section p { + margin-bottom: 27px; + font-size: 20px; + line-height: 1.6; + color: #333; + } + section img { + max-width: 640px; + } + footer { + padding: 0 20px; + margin: 50px 0; + text-align: center; + font-size: 12px; + } + .aspectRatioPlaceholder { + max-width: auto !important; + max-height: auto !important; + } + .aspectRatioPlaceholder-fill { + padding-bottom: 0 !important; + } + header, + section[data-field=subtitle], + section[data-field=description] { + display: none; + } + +
+
+

Title header

A paragraph of content.

Paragraph number two.

A list:

  1. One.
  2. Two.
  3. Three.

A link: link text.

Header 2

A block quote:

quote words strong words

after blockquote

A figure caption.

A final note: Cross-Validated has sometimes been helpful.


+
diff --git a/pelican/tests/output/basic/a-markdown-powered-article.html b/pelican/tests/output/basic/a-markdown-powered-article.html index 0098ccac..66136d87 100644 --- a/pelican/tests/output/basic/a-markdown-powered-article.html +++ b/pelican/tests/output/basic/a-markdown-powered-article.html @@ -1,68 +1,68 @@ - - - - - A markdown powered article - - - - + + + + + A markdown powered article + + + + - - -
-
-
-

- A markdown powered article

-
+ + +
+ -
-
-
+
+
+ -
+ +
+ - - - \ No newline at end of file + + diff --git a/pelican/tests/output/basic/archives.html b/pelican/tests/output/basic/archives.html index e3a6c7df..7aa6b263 100644 --- a/pelican/tests/output/basic/archives.html +++ b/pelican/tests/output/basic/archives.html @@ -1,70 +1,70 @@ - - - - - A Pelican Blog - - - + + + + + A Pelican Blog + + + - - -
-

Archives for A Pelican Blog

+ + +
+

Archives for A Pelican Blog

-
-
Fri 30 November 2012
-
FILENAME_METADATA example
-
Wed 29 February 2012
-
Second article
-
Wed 20 April 2011
-
A markdown powered article
-
Thu 17 February 2011
-
Article 1
-
Thu 17 February 2011
-
Article 2
-
Thu 17 February 2011
-
Article 3
-
Thu 02 December 2010
-
This is a super article !
-
Wed 20 October 2010
-
Oh yeah !
-
Fri 15 October 2010
-
Unbelievable !
-
Sun 14 March 2010
-
The baz tag
-
-
-
-
+
+ -
+ +
+ - - - \ No newline at end of file + + diff --git a/pelican/tests/output/basic/article-1.html b/pelican/tests/output/basic/article-1.html index 961ad390..4ec2a0e1 100644 --- a/pelican/tests/output/basic/article-1.html +++ b/pelican/tests/output/basic/article-1.html @@ -1,67 +1,67 @@ - - - - - Article 1 - - - - + + + + + Article 1 + + + + - - -
-
-
-

- Article 1

-
+ + +
+
+
+

+ Article 1

+
-
-
- - Published: Thu 17 February 2011 - +
+
+ + Published: Thu 17 February 2011 + -

In cat1.

+

In cat1.

-

Article 1

+

Article 1

-
+ -
-
-
-
+
+
+
+

social

+ -
-
+ + + - - - \ No newline at end of file + + diff --git a/pelican/tests/output/basic/article-2.html b/pelican/tests/output/basic/article-2.html index e5389d35..99819902 100644 --- a/pelican/tests/output/basic/article-2.html +++ b/pelican/tests/output/basic/article-2.html @@ -1,67 +1,67 @@ - - - - - Article 2 - - - - + + + + + Article 2 + + + + - - -
-
-
-

- Article 2

-
+ + +
+
+
+

+ Article 2

+
-
-
- - Published: Thu 17 February 2011 - +
+
+ + Published: Thu 17 February 2011 + -

In cat1.

+

In cat1.

-

Article 2

+

Article 2

-
+ -
-
-
-
+
+
+
+

social

+ -
-
+ + + - - - \ No newline at end of file + + diff --git a/pelican/tests/output/basic/article-3.html b/pelican/tests/output/basic/article-3.html index d23e5da2..596db91f 100644 --- a/pelican/tests/output/basic/article-3.html +++ b/pelican/tests/output/basic/article-3.html @@ -1,67 +1,67 @@ - - - - - Article 3 - - - - + + + + + Article 3 + + + + - - -
-
-
-

- Article 3

-
+ + +
+
+
+

+ Article 3

+
-
-
- - Published: Thu 17 February 2011 - +
+
+ + Published: Thu 17 February 2011 + -

In cat1.

+

In cat1.

-

Article 3

+

Article 3

-
+ -
-
-
-
+
+
+
+

social

+ -
-
+ + + - - - \ No newline at end of file + + diff --git a/pelican/tests/output/basic/author/alexis-metaireau.html b/pelican/tests/output/basic/author/alexis-metaireau.html index 12e05ec8..e4bde41d 100644 --- a/pelican/tests/output/basic/author/alexis-metaireau.html +++ b/pelican/tests/output/basic/author/alexis-metaireau.html @@ -1,112 +1,112 @@ - - - - - A Pelican Blog - Alexis Métaireau - - - + + + + + A Pelican Blog - Alexis Métaireau + + + - - + + - +

→ And now try with some utf8 hell: ééé

+ + +
-

Other articles

-
-
    +

    Other articles

    +
    +
      -
    1. -
      -

      Oh yeah !

      -
      +
    2. +
      +

      Oh yeah !

      +
      -
      -
      - - Published: Wed 20 October 2010 - +
      +
      -

      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 !

      -alternate text -
      +
      +

      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 !

      + alternate text +
      - read more -
      -
    3. -
    + read more + + +
-
-
-

social

- +
+
- - - \ No newline at end of file + + diff --git a/pelican/tests/output/basic/authors.html b/pelican/tests/output/basic/authors.html index cff1360b..27d10c2f 100644 --- a/pelican/tests/output/basic/authors.html +++ b/pelican/tests/output/basic/authors.html @@ -1,52 +1,52 @@ - - - - - A Pelican Blog - Authors - - - + + + + + A Pelican Blog - Authors + + + - - + + -
-

Authors on A Pelican Blog

- -
- -
-
-

social

+
+

Authors on A Pelican Blog

-
-
+ - + + + - - \ No newline at end of file + + + + diff --git a/pelican/tests/output/basic/categories.html b/pelican/tests/output/basic/categories.html index cc54f4a3..5c85b20e 100644 --- a/pelican/tests/output/basic/categories.html +++ b/pelican/tests/output/basic/categories.html @@ -1,55 +1,55 @@ - - - - - A Pelican Blog - Categories - - - + + + + + A Pelican Blog - Categories + + + - - + + -
-

Categories for A Pelican Blog

- -
- -
-
-

social

+
+

Categories for A Pelican Blog

-
-
+ - + + + - - \ No newline at end of file + + + + diff --git a/pelican/tests/output/basic/category/bar.html b/pelican/tests/output/basic/category/bar.html index 1f9c0d8d..e89375bf 100644 --- a/pelican/tests/output/basic/category/bar.html +++ b/pelican/tests/output/basic/category/bar.html @@ -1,68 +1,68 @@ - - - - - A Pelican Blog - bar - - - + + + + + A Pelican Blog - bar + + + - - + + - +
+
+

social

+ -
-
+ + + - - - \ No newline at end of file + + diff --git a/pelican/tests/output/basic/category/cat1.html b/pelican/tests/output/basic/category/cat1.html index ca47821b..6c0cd64c 100644 --- a/pelican/tests/output/basic/category/cat1.html +++ b/pelican/tests/output/basic/category/cat1.html @@ -1,125 +1,125 @@ - - - - - A Pelican Blog - cat1 - - - + + + + + A Pelican Blog - cat1 + + + - - + + -
-

Other articles

-
-
    +

    Other articles

    +
    +
      -
    1. -
    2. -
    3. -
      -

      Article 3

      -
      +
    4. +
      +

      Article 3

      +
      -
      -
      - - Published: Thu 17 February 2011 - +
      +
      + + Published: Thu 17 February 2011 + -

      In cat1.

      +

      In cat1.

      -

      Article 3

      +

      Article 3

      - read more -
      -
    5. -
    + read more + + +
-
-
-

social

- +
+
- - - \ No newline at end of file + + diff --git a/pelican/tests/output/basic/category/misc.html b/pelican/tests/output/basic/category/misc.html index 58490001..fa9eb563 100644 --- a/pelican/tests/output/basic/category/misc.html +++ b/pelican/tests/output/basic/category/misc.html @@ -1,136 +1,136 @@ - - - - - A Pelican Blog - misc - - - + + + + + A Pelican Blog - misc + + + - - + + -
-

Other articles

-
-
    +

    Other articles

    +
    +
      -
    1. -
    2. -
      -

      Unbelievable !

      -
      +
    3. +
      +

      Unbelievable !

      +
      -
      -