1
0
Fork 0
forked from github/pelican

Merge pull request #934 from wking/generator-init-kwargs

Use keyword arguments to initialize Generators
This commit is contained in:
Alexis Metaireau 2013-06-19 00:57:50 -07:00
commit 4f444ee6a8
3 changed files with 47 additions and 31 deletions

View file

@ -157,12 +157,12 @@ class Pelican(object):
context['localsiteurl'] = self.settings['SITEURL'] # share
generators = [
cls(
context,
self.settings,
self.path,
self.theme,
self.output_path,
self.markup,
context=context,
settings=self.settings,
path=self.path,
theme=self.theme,
output_path=self.output_path,
markup=self.markup,
) for cls in self.get_generator_classes()
]

View file

@ -31,10 +31,14 @@ logger = logging.getLogger(__name__)
class Generator(object):
"""Baseclass generator"""
def __init__(self, *args, **kwargs):
for idx, item in enumerate(('context', 'settings', 'path', 'theme',
'output_path', 'markup')):
setattr(self, item, args[idx])
def __init__(self, context, settings, path, theme, output_path, markup,
**kwargs):
self.context = context
self.settings = settings
self.path = path
self.theme = theme
self.output_path = output_path
self.markup = markup
for arg, value in kwargs.items():
setattr(self, arg, value)

View file

@ -33,8 +33,10 @@ class TestArticlesGenerator(unittest.TestCase):
settings = get_settings(filenames={})
settings['DEFAULT_CATEGORY'] = 'Default'
settings['DEFAULT_DATE'] = (1970, 1, 1)
self.generator = ArticlesGenerator(settings.copy(), settings,
CONTENT_DIR, settings['THEME'], None, settings['MARKUP'])
self.generator = ArticlesGenerator(
context=settings.copy(), settings=settings,
path=CONTENT_DIR, theme=settings['THEME'],
output_path=None, markup=settings['MARKUP'])
self.generator.generate_context()
return self.generator
@ -52,16 +54,19 @@ class TestArticlesGenerator(unittest.TestCase):
def test_generate_feeds(self):
settings = get_settings()
generator = ArticlesGenerator(settings, settings, None,
settings['THEME'], None, settings['MARKUP'])
generator = ArticlesGenerator(
context=settings, settings=settings,
path=None, theme=settings['THEME'],
output_path=None, markup=settings['MARKUP'])
writer = MagicMock()
generator.generate_feeds(writer)
writer.write_feed.assert_called_with([], settings,
'feeds/all.atom.xml')
generator = ArticlesGenerator(
settings, get_settings(FEED_ALL_ATOM=None), None,
settings['THEME'], None, None)
context=settings, settings=get_settings(FEED_ALL_ATOM=None),
path=None, theme=settings['THEME'],
output_path=None, markup=None)
writer = MagicMock()
generator.generate_feeds(writer)
self.assertFalse(writer.write_feed.called)
@ -122,8 +127,9 @@ class TestArticlesGenerator(unittest.TestCase):
settings['USE_FOLDER_AS_CATEGORY'] = False
settings['filenames'] = {}
generator = ArticlesGenerator(
settings.copy(), settings, CONTENT_DIR, DEFAULT_CONFIG['THEME'],
None, DEFAULT_CONFIG['MARKUP'])
context=settings.copy(), settings=settings,
path=CONTENT_DIR, theme=DEFAULT_CONFIG['THEME'],
output_path=None, markup=DEFAULT_CONFIG['MARKUP'])
generator.generate_context()
# test for name
# categories are grouped by slug; if two categories have the same slug
@ -143,9 +149,10 @@ class TestArticlesGenerator(unittest.TestCase):
def test_direct_templates_save_as_default(self):
settings = get_settings(filenames={})
generator = ArticlesGenerator(settings, settings, None,
settings['THEME'], None,
settings['MARKUP'])
generator = ArticlesGenerator(
context=settings, settings=settings,
path=None, theme=settings['THEME'],
output_path=None, markup=settings['MARKUP'])
write = MagicMock()
generator.generate_direct_templates(write)
write.assert_called_with("archives.html",
@ -157,9 +164,10 @@ class TestArticlesGenerator(unittest.TestCase):
settings = get_settings()
settings['DIRECT_TEMPLATES'] = ['archives']
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
generator = ArticlesGenerator(settings, settings, None,
settings['THEME'], None,
settings['MARKUP'])
generator = ArticlesGenerator(
context=settings, settings=settings,
path=None, theme=settings['THEME'],
output_path=None, markup=settings['MARKUP'])
write = MagicMock()
generator.generate_direct_templates(write)
write.assert_called_with("archives/index.html",
@ -171,9 +179,10 @@ class TestArticlesGenerator(unittest.TestCase):
settings = get_settings()
settings['DIRECT_TEMPLATES'] = ['archives']
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
generator = ArticlesGenerator(settings, settings, None,
settings['THEME'], None,
settings['MARKUP'])
generator = ArticlesGenerator(
context=settings, settings=settings,
path=None, theme=settings['THEME'],
output_path=None, markup=settings['MARKUP'])
write = MagicMock()
generator.generate_direct_templates(write)
write.assert_called_count == 0
@ -215,8 +224,9 @@ class TestPageGenerator(unittest.TestCase):
settings['DEFAULT_DATE'] = (1970, 1, 1)
generator = PagesGenerator(
settings.copy(), settings, CUR_DIR, settings['THEME'], None,
settings['MARKUP'])
context=settings.copy(), settings=settings,
path=CUR_DIR, theme=settings['THEME'],
output_path=None, markup=settings['MARKUP'])
generator.generate_context()
pages = self.distill_pages(generator.pages)
hidden_pages = self.distill_pages(generator.hidden_pages)
@ -258,8 +268,10 @@ class TestTemplatePagesGenerator(unittest.TestCase):
'template/source.html': 'generated/file.html'
}
generator = TemplatePagesGenerator({'foo': 'bar'}, settings,
self.temp_content, '', self.temp_output, None)
generator = TemplatePagesGenerator(
context={'foo': 'bar'}, settings=settings,
path=self.temp_content, theme='',
output_path=self.temp_output, markup=None)
# create a dummy template file
template_dir = os.path.join(self.temp_content, 'template')