lazo-next
Version:
A client-server web framework built on Node.js that allows front-end developers to easily create a 100% SEO compliant, component MVC structured web application with an optimized first page load.
34 lines (25 loc) • 971 B
JavaScript
define(function () {
'use strict';
var _subRegEx = /\{\{\s*([^|}]+?)\s*(?:\|([^}]*))?\s*\}\}/g;
var REGEX_QUERY_STRING = /(\(?\?.*)$/;
var REGEX_PATH_PARAM = /:(\w+)/g;
var REGEX_OPT_PATH_PARAM = /\(\/\{(\w+)\}(\/?)\)$/;
var REGEX_OPT_TRAILING_SLASH = /(.*)\(\/\)$/;
return {
transform: function (route) {
var routeNoTrailingSlash = null;
route = '/' + route;
route = route.replace(REGEX_QUERY_STRING, '');
route = route.replace(REGEX_PATH_PARAM, '{$1}');
route = route.replace(REGEX_OPT_PATH_PARAM, '/{$1?}$2');
if (REGEX_OPT_TRAILING_SLASH.test(route)) {
routeNoTrailingSlash = route.replace(REGEX_OPT_TRAILING_SLASH, '$1');
route = routeNoTrailingSlash + '/';
}
return {
routeNoTrailingSlash: routeNoTrailingSlash,
route: route
};
}
};
});