diff piecrust/routing.py @ 430:21e26ed867b6

internal: Create full route metadata in one place. Instead of combining things at different moments to make up route metadata, build it once and for all up-front and use that.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 27 Jun 2015 08:27:35 -0700
parents dc0988d937b3
children cff70eeb1cc1
line wrap: on
line diff
--- a/piecrust/routing.py	Sat Jun 27 00:03:56 2015 -0700
+++ b/piecrust/routing.py	Sat Jun 27 08:27:35 2015 -0700
@@ -15,6 +15,18 @@
 ugly_url_cleaner = re.compile(r'\.html$')
 
 
+def create_route_metadata(page):
+    route_metadata = copy.deepcopy(page.source_metadata)
+    route_metadata.update(page.getRouteMetadata())
+
+    # TODO: fix this hard-coded shit
+    for key in ['year', 'month', 'day']:
+        if key in route_metadata and isinstance(route_metadata[key], str):
+            route_metadata[key] = int(route_metadata[key])
+
+    return route_metadata
+
+
 class IRouteMetadataProvider(object):
     def getRouteMetadata(self):
         raise NotImplementedError()
@@ -122,16 +134,7 @@
 
         return route_metadata
 
-    def getUri(self, route_metadata, *, sub_num=1, provider=None):
-        route_metadata = copy.deepcopy(route_metadata)
-        if provider:
-            route_metadata.update(provider.getRouteMetadata())
-
-        #TODO: fix this hard-coded shit
-        for key in ['year', 'month', 'day']:
-            if key in route_metadata and isinstance(route_metadata[key], str):
-                route_metadata[key] = int(route_metadata[key])
-
+    def getUri(self, route_metadata, *, sub_num=1):
         uri = self.uri_format % route_metadata
         suffix = None
         if sub_num > 1: