mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-15 14:02:17 +00:00
94 lines
2.6 KiB
JavaScript
94 lines
2.6 KiB
JavaScript
// collection of relative and absolute regex to replace legacy links
|
|
const GROUP_REPLACEMENT_STRATEGIES = {
|
|
QUERY_PARAMETERS:'QUERY_PARAMETERS',
|
|
PATH_SEGMENTS:'PATH_SEGMENTS',
|
|
}
|
|
|
|
const regexList = {
|
|
relative:[
|
|
{
|
|
priority: 1,
|
|
regex: new RegExp(/^\.\.\/cms\/content\.php\?content_id=([0-9]+)/),
|
|
replacement: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/CisVue/Cms/content',
|
|
group_replacement_strategy:GROUP_REPLACEMENT_STRATEGIES.PATH_SEGMENTS,
|
|
},
|
|
{
|
|
priority: 2,
|
|
regex: new RegExp(/^\.\.\/cms\/news\.php/),
|
|
replacement: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/CisVue/Cms/news',
|
|
},
|
|
{
|
|
priority: 3,
|
|
regex: new RegExp(/^\.\.\/index\.ci\.php/),
|
|
replacement: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router,
|
|
},
|
|
{
|
|
priority: 10,
|
|
regex: new RegExp(/^\.\.\//),
|
|
replacement: FHC_JS_DATA_STORAGE_OBJECT.app_root,
|
|
},
|
|
],
|
|
absolute:[
|
|
{}
|
|
]
|
|
};
|
|
|
|
// sorts the relative regex array by priority ascending
|
|
const relative_regex = regexList.relative
|
|
.sort((a, b) => {
|
|
return a.priority - b.priority;
|
|
})
|
|
.map(regex => {
|
|
return {
|
|
regex: regex.regex,
|
|
replacement: regex.replacement,
|
|
group_replacement_strategy: regex.group_replacement_strategy,
|
|
}
|
|
});
|
|
|
|
// sorts the absolute regex array by priority ascending
|
|
const absolute_regex = regexList.absolute
|
|
.sort((a, b) => {
|
|
return a.priority - b.priority;
|
|
})
|
|
.map(regex => {
|
|
return {
|
|
regex: regex.regex,
|
|
replacement: regex.replacement,
|
|
group_replacement_strategy: regex.group_replacement_strategy,
|
|
}
|
|
})
|
|
|
|
|
|
export function replaceRelativeLegacyLink(relativeLegacyLink){
|
|
for (let {regex,replacement,group_replacement_strategy} of relative_regex){
|
|
// if any of the regex matches the relativeLegacyLink, replace the matched part with the new app_root path
|
|
let match = relativeLegacyLink.match(regex);
|
|
if (match) {
|
|
let new_link = relativeLegacyLink.replace(regex, replacement);
|
|
|
|
switch (group_replacement_strategy){
|
|
case 'QUERY_PARAMETERS':
|
|
//TODO: this doesn't really work yet because the query parameter are key/value pairs
|
|
new_link = new_link.concat(`?${match[1]}`);
|
|
for (let query_parameter of match.slice(2)) {
|
|
new_link = new_link.concat(`&${query_parameter}`);
|
|
}
|
|
break;
|
|
case 'PATH_SEGMENTS':
|
|
for (let query_parameter of match.slice(1)) {
|
|
new_link = new_link.concat(`/${query_parameter}`);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return new_link;
|
|
}
|
|
}
|
|
// if none of the regex matched with the string return the original path
|
|
return relativeLegacyLink;
|
|
}
|
|
|