pgadmin4/web/pgadmin/static/js/url_for.js

48 lines
1.4 KiB
JavaScript
Raw Normal View History

2019-01-02 04:24:12 -06:00
/////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
2023-01-02 00:23:55 -06:00
// Copyright (C) 2013 - 2023, The pgAdmin Development Team
2019-01-02 04:24:12 -06:00
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
define(['pgadmin.browser.endpoints'], function(endpoints) {
/***
* This method behaves as a drop-in replacement for flask url_for function.
* It uses the exposed URLs file under the hood, and replace the substitions provided by the modules.
*
* ex.
* url_for("help.static", {filename: "server_dialog.html"}) will produce the
* output string '/help/help/server_dialog.html' from the url ->
* '/help/help/<path:filename>'.
*
* @param {String} text
* @param {Object} substitutions
*/
return function url_for(endpoint, substitutions) {
2022-09-08 07:38:58 -05:00
let rawURL = endpoints[endpoint];
// captures things of the form <path:substitutionName>
2022-09-08 07:38:58 -05:00
let substitutionGroupsRegExp = /([<])([^:^>]*:)?([^>]+)([>])/g,
interpolated = rawURL;
if (!rawURL)
return rawURL;
interpolated = interpolated.replace(
substitutionGroupsRegExp,
function(_origin, _1, _2, substitutionName) {
if (substitutionName in substitutions) {
return substitutions[substitutionName];
}
return _origin;
}
);
return interpolated;
};
});