2019-03-27 08:49:29 +00:00
|
|
|
'use strict';
|
|
|
|
|
2019-07-03 09:58:58 +00:00
|
|
|
const TagLanguages = {
|
|
|
|
SIMPLE: 'simple',
|
|
|
|
HBS: 'hbs'
|
|
|
|
};
|
|
|
|
|
|
|
|
const allTagLanguages = [TagLanguages.SIMPLE, TagLanguages.HBS];
|
|
|
|
|
2019-07-05 21:23:02 +00:00
|
|
|
function renderTag(tagLanguage, tag) {
|
|
|
|
if (tagLanguage === TagLanguages.SIMPLE) {
|
|
|
|
return `[${tag}]`;
|
|
|
|
} else if (tagLanguage === TagLanguages.HBS) {
|
|
|
|
return `{{${tag}}}`;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-03-27 08:49:29 +00:00
|
|
|
function _getBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl) {
|
|
|
|
if (trustedBaseUrl.endsWith('/')) {
|
|
|
|
trustedBaseUrl = trustedBaseUrl.substring(0, trustedBaseUrl.length - 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sandboxBaseUrl.endsWith('/')) {
|
|
|
|
sandboxBaseUrl = sandboxBaseUrl.substring(0, sandboxBaseUrl.length - 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (publicBaseUrl.endsWith('/')) {
|
|
|
|
publicBaseUrl = publicBaseUrl.substring(0, publicBaseUrl.length - 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
return {trustedBaseUrl, sandboxBaseUrl, publicBaseUrl};
|
|
|
|
}
|
|
|
|
|
|
|
|
function getMergeTagsForBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl) {
|
|
|
|
const bases = _getBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl);
|
|
|
|
|
|
|
|
return {
|
|
|
|
URL_BASE: bases.publicBaseUrl,
|
|
|
|
TRUSTED_URL_BASE: bases.trustedBaseUrl,
|
|
|
|
SANDBOX_URL_BASE: bases.sandboxBaseUrl,
|
|
|
|
ENCODED_URL_BASE: encodeURIComponent(bases.publicBaseUrl),
|
|
|
|
ENCODED_TRUSTED_URL_BASE: encodeURIComponent(bases.trustedBaseUrl),
|
|
|
|
ENCODED_SANDBOX_URL_BASE: encodeURIComponent(bases.sandboxBaseUrl)
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2019-08-11 19:50:06 +00:00
|
|
|
function base(text, tagLanguage, trustedBaseUrl, sandboxBaseUrl, publicBaseUrl) {
|
2019-03-27 08:49:29 +00:00
|
|
|
const bases = _getBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl);
|
|
|
|
|
2019-08-11 19:50:06 +00:00
|
|
|
text = text.split(renderTag(tagLanguage, 'URL_BASE')).join(bases.publicBaseUrl);
|
|
|
|
text = text.split(renderTag(tagLanguage, 'TRUSTED_URL_BASE')).join(bases.trustedBaseUrl);
|
|
|
|
text = text.split(renderTag(tagLanguage, 'SANDBOX_URL_BASE')).join(bases.sandboxBaseUrl);
|
|
|
|
text = text.split(renderTag(tagLanguage, 'ENCODED_URL_BASE')).join(encodeURIComponent(bases.publicBaseUrl));
|
|
|
|
text = text.split(renderTag(tagLanguage, 'ENCODED_TRUSTED_URL_BASE')).join(encodeURIComponent(bases.trustedBaseUrl));
|
|
|
|
text = text.split(renderTag(tagLanguage, 'ENCODED_SANDBOX_URL_BASE')).join(encodeURIComponent(bases.sandboxBaseUrl));
|
2019-03-27 08:49:29 +00:00
|
|
|
|
|
|
|
return text;
|
|
|
|
}
|
|
|
|
|
2019-08-11 19:50:06 +00:00
|
|
|
function unbase(text, tagLanguage, trustedBaseUrl, sandboxBaseUrl, publicBaseUrl, treatAllAsPublic = false) {
|
2019-03-27 08:49:29 +00:00
|
|
|
const bases = _getBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl);
|
|
|
|
|
2019-08-11 19:50:06 +00:00
|
|
|
text = text.split(bases.publicBaseUrl).join(renderTag(tagLanguage, 'URL_BASE'));
|
|
|
|
text = text.split(bases.trustedBaseUrl).join(renderTag(tagLanguage, treatAllAsPublic ? 'URL_BASE' : 'TRUSTED_URL_BASE'));
|
|
|
|
text = text.split(bases.sandboxBaseUrl).join(renderTag(tagLanguage, treatAllAsPublic ? 'URL_BASE' : 'SANDBOX_URL_BASE'));
|
|
|
|
text = text.split(encodeURIComponent(bases.publicBaseUrl)).join(renderTag(tagLanguage, 'ENCODED_URL_BASE'));
|
|
|
|
text = text.split(encodeURIComponent(bases.trustedBaseUrl)).join(renderTag(tagLanguage, treatAllAsPublic ? 'ENCODED_URL_BASE' : 'ENCODED_TRUSTED_URL_BASE'));
|
|
|
|
text = text.split(encodeURIComponent(bases.sandboxBaseUrl)).join(renderTag(tagLanguage, treatAllAsPublic ? 'ENCODED_URL_BASE' : 'ENCODED_SANDBOX_URL_BASE'));
|
2019-03-27 08:49:29 +00:00
|
|
|
|
|
|
|
return text;
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
base,
|
|
|
|
unbase,
|
2019-07-03 09:58:58 +00:00
|
|
|
getMergeTagsForBases,
|
|
|
|
TagLanguages,
|
2019-07-05 21:23:02 +00:00
|
|
|
allTagLanguages,
|
|
|
|
renderTag
|
2018-05-09 02:07:01 +00:00
|
|
|
};
|