From 39fd4936b59bdf92734880eee76a7f0a10a05f39 Mon Sep 17 00:00:00 2001 From: derwinlu Date: Wed, 3 Jun 2015 08:58:59 +0200 Subject: [PATCH] improve result output of a pelican run * display count of hidden pages * pluralize only if necessary * add maybe_pluralize to utils * add tests for maybe_pluralize --- pelican/__init__.py | 35 ++++++++++++++++++++++++++++------- pelican/tests/test_utils.py | 6 ++++++ pelican/utils.py | 16 ++++++++++++++++ 3 files changed, 50 insertions(+), 7 deletions(-) diff --git a/pelican/__init__.py b/pelican/__init__.py index 12da111a..de320897 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -22,7 +22,8 @@ from pelican.generators import (ArticlesGenerator, PagesGenerator, TemplatePagesGenerator) from pelican.readers import Readers from pelican.settings import read_settings -from pelican.utils import clean_output_dir, folder_watcher, file_watcher +from pelican.utils import (clean_output_dir, folder_watcher, + file_watcher, maybe_pluralize) from pelican.writers import Writer __version__ = "3.5.0" @@ -183,12 +184,32 @@ class Pelican(object): pages_generator = next(g for g in generators if isinstance(g, PagesGenerator)) - print('Done: Processed {} article(s), {} draft(s) and {} page(s) in ' \ - '{:.2f} seconds.'.format( - len(articles_generator.articles) + len(articles_generator.translations), - len(articles_generator.drafts) + \ - len(articles_generator.drafts_translations), - len(pages_generator.pages) + len(pages_generator.translations), + pluralized_articles = maybe_pluralize( + len(articles_generator.articles) + + len(articles_generator.translations), + 'article', + 'articles') + pluralized_drafts = maybe_pluralize( + len(articles_generator.drafts) + + len(articles_generator.drafts_translations), + 'draft', + 'drafts') + pluralized_pages = maybe_pluralize( + len(pages_generator.pages) + + len(pages_generator.translations), + 'page', + 'pages') + pluralized_hidden_pages = maybe_pluralize( + len(pages_generator.hidden_pages) + + len(pages_generator.hidden_translations), + 'hidden page', + 'hidden pages') + + print('Done: Processed {}, {}, {} and {} in {:.2f} seconds.'.format( + pluralized_articles, + pluralized_drafts, + pluralized_pages, + pluralized_hidden_pages, time.time() - start_time)) def get_generator_classes(self): diff --git a/pelican/tests/test_utils.py b/pelican/tests/test_utils.py index c6550459..f5a60584 100644 --- a/pelican/tests/test_utils.py +++ b/pelican/tests/test_utils.py @@ -358,6 +358,12 @@ class TestUtils(LoggedTestCase): locale.setlocale(locale.LC_ALL, old_locale) + def test_maybe_pluralize(self): + self.assertEqual(utils.maybe_pluralize(0, 'Article', 'Articles'), '0 Articles') + self.assertEqual(utils.maybe_pluralize(1, 'Article', 'Articles'), '1 Article') + self.assertEqual(utils.maybe_pluralize(2, 'Article', 'Articles'), '2 Articles') + + class TestCopy(unittest.TestCase): '''Tests the copy utility''' diff --git a/pelican/utils.py b/pelican/utils.py index caac8e61..f8f52206 100644 --- a/pelican/utils.py +++ b/pelican/utils.py @@ -767,3 +767,19 @@ def path_to_file_url(path): '''Convert file-system path to file:// URL''' return six.moves.urllib_parse.urljoin( "file://", six.moves.urllib.request.pathname2url(path)) + + +def maybe_pluralize(count, singular, plural): + ''' + Returns a formatted string containing count and plural if count is not 1 + Returns count and singular if count is 1 + + maybe_pluralize(0, 'Article', 'Articles') -> '0 Articles' + maybe_pluralize(1, 'Article', 'Articles') -> '1 Article' + maybe_pluralize(2, 'Article', 'Articles') -> '2 Articles' + + ''' + selection = plural + if count == 1: + selection = singular + return '{} {}'.format(count, selection)