From 46e95f50060b1399d5cfd30f18e45fe0c6a0ca29 2013-10-17 21:09:15
From: MinRK <benjaminrk@gmail.com>
Date: 2013-10-17 21:09:15
Subject: [PATCH] simplify handler patterns

PATH pattern will now sometimes include leading slash,
but that's okay because nbmanager will strip them.

fewer redirect patterns needed

---

diff --git a/IPython/html/notebook/handlers.py b/IPython/html/notebook/handlers.py
index 6730017..2f963ba 100644
--- a/IPython/html/notebook/handlers.py
+++ b/IPython/html/notebook/handlers.py
@@ -74,7 +74,7 @@ class NotebookRedirectHandler(IPythonHandler):
 
 
 default_handlers = [
-    (r"/notebooks/?%s" % _notebook_path_regex, NotebookHandler),
-    (r"/notebooks/?%s" % _path_regex, NotebookRedirectHandler),
+    (r"/notebooks%s" % _notebook_path_regex, NotebookHandler),
+    (r"/notebooks%s" % _path_regex, NotebookRedirectHandler),
 ]
 
diff --git a/IPython/html/services/notebooks/handlers.py b/IPython/html/services/notebooks/handlers.py
index a2cdb06..0505fb6 100644
--- a/IPython/html/services/notebooks/handlers.py
+++ b/IPython/html/services/notebooks/handlers.py
@@ -229,18 +229,18 @@ class ModifyNotebookCheckpointsHandler(IPythonHandler):
 #-----------------------------------------------------------------------------
 
 
-_path_regex = r"(?P<path>.*)"
+_path_regex = r"(?P<path>(?:/.*)*)"
 _checkpoint_id_regex = r"(?P<checkpoint_id>[\w-]+)"
 _notebook_name_regex = r"(?P<name>[^/]+\.ipynb)"
 _notebook_path_regex = "%s/%s" % (_path_regex, _notebook_name_regex)
 
 default_handlers = [
-    (r"/api/notebooks/?%s/copy" % _notebook_path_regex, NotebookCopyHandler),
-    (r"/api/notebooks/?%s/checkpoints" % _notebook_path_regex, NotebookCheckpointsHandler),
-    (r"/api/notebooks/?%s/checkpoints/%s" % (_notebook_path_regex, _checkpoint_id_regex),
+    (r"/api/notebooks%s/copy" % _notebook_path_regex, NotebookCopyHandler),
+    (r"/api/notebooks%s/checkpoints" % _notebook_path_regex, NotebookCheckpointsHandler),
+    (r"/api/notebooks%s/checkpoints/%s" % (_notebook_path_regex, _checkpoint_id_regex),
         ModifyNotebookCheckpointsHandler),
-    (r"/api/notebooks/?%s" % _notebook_path_regex, NotebookHandler),
-    (r"/api/notebooks/?%s/?" % _path_regex, NotebookHandler),
+    (r"/api/notebooks%s" % _notebook_path_regex, NotebookHandler),
+    (r"/api/notebooks%s" % _path_regex, NotebookHandler),
 ]
 
 
diff --git a/IPython/html/tree/handlers.py b/IPython/html/tree/handlers.py
index 01b23cd..6c6c564 100644
--- a/IPython/html/tree/handlers.py
+++ b/IPython/html/tree/handlers.py
@@ -64,10 +64,8 @@ class TreeRedirectHandler(IPythonHandler):
 
 
 default_handlers = [
-    (r"/tree/(.*)/", TreeRedirectHandler),
-    (r"/tree/?%s" % _notebook_path_regex, TreeHandler),
-    (r"/tree/?%s" % _path_regex, TreeHandler),
-    (r"/tree/", TreeRedirectHandler),
+    (r"/tree%s" % _notebook_path_regex, TreeHandler),
+    (r"/tree%s" % _path_regex, TreeHandler),
     (r"/tree", TreeHandler),
     (r"/", TreeRedirectHandler),
     ]