comparison piecrust/app.py @ 107:10fc9c8bf682

Better support for times in YAML interop. * Use our own sexagesimal parser/dumper for YAML to properly parse times. * Better name for the custom parser/dumper classes. * Add unit tests.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 15 Oct 2014 23:01:05 -0700
parents 28ea3e69d67e
children 5b12c1d96523
comparison
equal deleted inserted replaced
106:5effaf1978d0 107:10fc9c8bf682
15 DEFAULT_DATE_FORMAT, DEFAULT_PLUGIN_SOURCE, DEFAULT_THEME_SOURCE) 15 DEFAULT_DATE_FORMAT, DEFAULT_PLUGIN_SOURCE, DEFAULT_THEME_SOURCE)
16 from piecrust.cache import ExtensibleCache, NullCache, NullExtensibleCache 16 from piecrust.cache import ExtensibleCache, NullCache, NullExtensibleCache
17 from piecrust.plugins.base import PluginLoader 17 from piecrust.plugins.base import PluginLoader
18 from piecrust.environment import StandardEnvironment 18 from piecrust.environment import StandardEnvironment
19 from piecrust.configuration import (Configuration, ConfigurationError, 19 from piecrust.configuration import (Configuration, ConfigurationError,
20 OrderedDictYAMLLoader, merge_dicts) 20 ConfigurationLoader, merge_dicts)
21 from piecrust.routing import Route 21 from piecrust.routing import Route
22 from piecrust.sources.base import REALM_USER, REALM_THEME 22 from piecrust.sources.base import REALM_USER, REALM_THEME
23 from piecrust.taxonomies import Taxonomy 23 from piecrust.taxonomies import Taxonomy
24 24
25 25
79 values = {} 79 values = {}
80 logger.debug("Loading configuration from: %s" % self.paths) 80 logger.debug("Loading configuration from: %s" % self.paths)
81 for i, p in enumerate(self.paths): 81 for i, p in enumerate(self.paths):
82 with codecs.open(p, 'r', 'utf-8') as fp: 82 with codecs.open(p, 'r', 'utf-8') as fp:
83 loaded_values = yaml.load(fp.read(), 83 loaded_values = yaml.load(fp.read(),
84 Loader=OrderedDictYAMLLoader) 84 Loader=ConfigurationLoader)
85 if loaded_values is None: 85 if loaded_values is None:
86 loaded_values = {} 86 loaded_values = {}
87 for fixup in self.fixups: 87 for fixup in self.fixups:
88 fixup(i, loaded_values) 88 fixup(i, loaded_values)
89 merge_dicts(values, loaded_values) 89 merge_dicts(values, loaded_values)