[MediaWiki-commits] [Gerrit] marvin[master]: New: add wiki page route

2017-09-12 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/377374 )

Change subject: New: add wiki page route
..


New: add wiki page route

- New: add route for wiki articles and pages.
- Fix: off by one error in route parameter name to value mapping.
- Fix: Route.initialProperties() signature.

Bug: T173323
Change-Id: I6a90d39fa1feb39011ece7ecc00db37125d8ebc4
---
M src/common/components/app/index.tsx
A src/common/components/pages/wiki.tsx
M src/common/routers/api.ts
M src/common/routers/route.ts
M src/common/routers/router.ts
5 files changed, 50 insertions(+), 7 deletions(-)

Approvals:
  Jhernandez: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/src/common/components/app/index.tsx 
b/src/common/components/app/index.tsx
index 82f20c8..79372ef 100644
--- a/src/common/components/app/index.tsx
+++ b/src/common/components/app/index.tsx
@@ -12,6 +12,12 @@
 About
   
   
+Banana
+  
+  
+Cucumber
+  
+  
 404
   
 
diff --git a/src/common/components/pages/wiki.tsx 
b/src/common/components/pages/wiki.tsx
new file mode 100644
index 000..45f77b1
--- /dev/null
+++ b/src/common/components/pages/wiki.tsx
@@ -0,0 +1,23 @@
+import App from "../app";
+import { RouteParameters } from "../../routers/route";
+import { h } from "preact";
+
+export interface Parameters extends RouteParameters {
+  title: string
+}
+
+export interface Properties {
+  title: string
+}
+
+export const initialProperties = ({
+  title
+}: Parameters): Promise => {
+  return Promise.resolve({ title });
+};
+
+export const component = ({ title }: Properties): JSX.Element => (
+  
+{title}
+  
+);
diff --git a/src/common/routers/api.ts b/src/common/routers/api.ts
index dc2fd96..7aa655a 100644
--- a/src/common/routers/api.ts
+++ b/src/common/routers/api.ts
@@ -1,4 +1,5 @@
 import { Route } from "./route";
+import { Properties as WikiProperties } from "../components/pages/wiki";
 
 export const index: Route = {
   path: "/",
@@ -18,7 +19,18 @@
   status: 200
 };
 
+export const wiki: Route = {
+  path: "/wiki/:title",
+  endpoint: () =>
+import(/* webpackChunkName: "components/pages/wiki" */
+"../components/pages/wiki"),
+  chunkName: "components/pages/wiki",
+  status: 200
+};
+
 export const notFound: Route = {
+  // `(.*)` is the new `*`. See
+  // https://github.com/pillarjs/path-to-regexp/issues/37.
   path: "(.*)",
   endpoint: () =>
 import(/* webpackChunkName: "components/pages/not-found" */
@@ -27,4 +39,4 @@
   status: 404
 };
 
-export const routes: Route[] = [index, about, notFound];
+export const routes: Route[] = [index, about, wiki, notFound];
diff --git a/src/common/routers/route.ts b/src/common/routers/route.ts
index b68d45b..4f82ad0 100644
--- a/src/common/routers/route.ts
+++ b/src/common/routers/route.ts
@@ -12,9 +12,7 @@
* A function that returns a Promise for the dependencies needed to construct
* the view component such as a remote resource.
*/
-  initialProperties?: (parameters: { parameters: RouteParameters }) => Promise<
-Properties
-  >
+  initialProperties?: (parameters: RouteParameters) => Promise
 }
 
 export interface Route {
diff --git a/src/common/routers/router.ts b/src/common/routers/router.ts
index 19c0b30..86eb3fd 100644
--- a/src/common/routers/router.ts
+++ b/src/common/routers/router.ts
@@ -35,7 +35,7 @@
 
 const newRouteParameters = (
   parameterNames: pathToRegExp.Key[],
-  parameterValues: RegExpExecArray
+  parameterValues: string[]
 ): RouteParameters =>
   parameterNames.reduce(
 (
@@ -54,7 +54,7 @@
   parameters: RouteParameters
 ): Promise {
   if (endpoint.initialProperties) {
-return endpoint.initialProperties({ parameters });
+return endpoint.initialProperties(parameters);
   }
   return Promise.resolve({});
 }
@@ -87,7 +87,11 @@
   for (const route of parsedRoutes) {
 const matches = route.regularExpression.exec(url);
 if (matches) {
-  const parameters = newRouteParameters(route.parameterNames, matches);
+  const [url, ...parameterValues] = matches;
+  const parameters = newRouteParameters(
+route.parameterNames,
+parameterValues
+  );
   return respond(route, url, parameters);
 }
   }

-- 
To view, visit https://gerrit.wikimedia.org/r/377374
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I6a90d39fa1feb39011ece7ecc00db37125d8ebc4
Gerrit-PatchSet: 1
Gerrit-Project: marvin
Gerrit-Branch: master
Gerrit-Owner: Niedzielski 
Gerrit-Reviewer: Jhernandez 
Gerrit-Reviewer: Sniedzielski 
Gerrit-Reviewer: jenkins-bot <>


[MediaWiki-commits] [Gerrit] marvin[master]: New: add wiki page route

2017-09-11 Thread Niedzielski (Code Review)
Niedzielski has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/377374 )

Change subject: New: add wiki page route
..

New: add wiki page route

- New: add route for wiki articles and pages.
- Fix: off by one error in route parameter name to value mapping.
- Fix: Route.initialProperties() signature.

Bug: T173323
Change-Id: I6a90d39fa1feb39011ece7ecc00db37125d8ebc4
---
M src/common/components/app/index.tsx
A src/common/components/pages/wiki.tsx
M src/common/routers/api.ts
M src/common/routers/route.ts
M src/common/routers/router.ts
5 files changed, 50 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/marvin refs/changes/74/377374/1

diff --git a/src/common/components/app/index.tsx 
b/src/common/components/app/index.tsx
index 82f20c8..79372ef 100644
--- a/src/common/components/app/index.tsx
+++ b/src/common/components/app/index.tsx
@@ -12,6 +12,12 @@
 About
   
   
+Banana
+  
+  
+Cucumber
+  
+  
 404
   
 
diff --git a/src/common/components/pages/wiki.tsx 
b/src/common/components/pages/wiki.tsx
new file mode 100644
index 000..45f77b1
--- /dev/null
+++ b/src/common/components/pages/wiki.tsx
@@ -0,0 +1,23 @@
+import App from "../app";
+import { RouteParameters } from "../../routers/route";
+import { h } from "preact";
+
+export interface Parameters extends RouteParameters {
+  title: string
+}
+
+export interface Properties {
+  title: string
+}
+
+export const initialProperties = ({
+  title
+}: Parameters): Promise => {
+  return Promise.resolve({ title });
+};
+
+export const component = ({ title }: Properties): JSX.Element => (
+  
+{title}
+  
+);
diff --git a/src/common/routers/api.ts b/src/common/routers/api.ts
index dc2fd96..7aa655a 100644
--- a/src/common/routers/api.ts
+++ b/src/common/routers/api.ts
@@ -1,4 +1,5 @@
 import { Route } from "./route";
+import { Properties as WikiProperties } from "../components/pages/wiki";
 
 export const index: Route = {
   path: "/",
@@ -18,7 +19,18 @@
   status: 200
 };
 
+export const wiki: Route = {
+  path: "/wiki/:title",
+  endpoint: () =>
+import(/* webpackChunkName: "components/pages/wiki" */
+"../components/pages/wiki"),
+  chunkName: "components/pages/wiki",
+  status: 200
+};
+
 export const notFound: Route = {
+  // `(.*)` is the new `*`. See
+  // https://github.com/pillarjs/path-to-regexp/issues/37.
   path: "(.*)",
   endpoint: () =>
 import(/* webpackChunkName: "components/pages/not-found" */
@@ -27,4 +39,4 @@
   status: 404
 };
 
-export const routes: Route[] = [index, about, notFound];
+export const routes: Route[] = [index, about, wiki, notFound];
diff --git a/src/common/routers/route.ts b/src/common/routers/route.ts
index b68d45b..4f82ad0 100644
--- a/src/common/routers/route.ts
+++ b/src/common/routers/route.ts
@@ -12,9 +12,7 @@
* A function that returns a Promise for the dependencies needed to construct
* the view component such as a remote resource.
*/
-  initialProperties?: (parameters: { parameters: RouteParameters }) => Promise<
-Properties
-  >
+  initialProperties?: (parameters: RouteParameters) => Promise
 }
 
 export interface Route {
diff --git a/src/common/routers/router.ts b/src/common/routers/router.ts
index 19c0b30..86eb3fd 100644
--- a/src/common/routers/router.ts
+++ b/src/common/routers/router.ts
@@ -35,7 +35,7 @@
 
 const newRouteParameters = (
   parameterNames: pathToRegExp.Key[],
-  parameterValues: RegExpExecArray
+  parameterValues: string[]
 ): RouteParameters =>
   parameterNames.reduce(
 (
@@ -54,7 +54,7 @@
   parameters: RouteParameters
 ): Promise {
   if (endpoint.initialProperties) {
-return endpoint.initialProperties({ parameters });
+return endpoint.initialProperties(parameters);
   }
   return Promise.resolve({});
 }
@@ -87,7 +87,11 @@
   for (const route of parsedRoutes) {
 const matches = route.regularExpression.exec(url);
 if (matches) {
-  const parameters = newRouteParameters(route.parameterNames, matches);
+  const [url, ...parameterValues] = matches;
+  const parameters = newRouteParameters(
+route.parameterNames,
+parameterValues
+  );
   return respond(route, url, parameters);
 }
   }

-- 
To view, visit https://gerrit.wikimedia.org/r/377374
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6a90d39fa1feb39011ece7ecc00db37125d8ebc4
Gerrit-PatchSet: 1
Gerrit-Project: marvin
Gerrit-Branch: master
Gerrit-Owner: Niedzielski 
Gerrit-Reviewer: Sniedzielski 

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org