Merge pull request #129 from kelszo/index-array-operator
Add index operator for arrays when templating
This commit is contained in:
commit
73a8a62332
2 changed files with 17 additions and 6 deletions
|
|
@ -65,7 +65,8 @@ export class MediaTypeManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
getFileName(mediaTypeModel: MediaTypeModel): string {
|
getFileName(mediaTypeModel: MediaTypeModel): string {
|
||||||
return replaceTags(this.mediaFileNameTemplateMap.get(mediaTypeModel.getMediaType()), mediaTypeModel);
|
// Ignore undefined tags since some search APIs do not return all properties in the model and produce clean file names even if errors occur
|
||||||
|
return replaceTags(this.mediaFileNameTemplateMap.get(mediaTypeModel.getMediaType()), mediaTypeModel, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getTemplate(mediaTypeModel: MediaTypeModel, app: App): Promise<string> {
|
async getTemplate(mediaTypeModel: MediaTypeModel, app: App): Promise<string> {
|
||||||
|
|
|
||||||
|
|
@ -22,11 +22,11 @@ export function replaceIllegalFileNameCharactersInString(string: string): string
|
||||||
return string.replace(/[\\,#%&{}/*<>$"@.?]*/g, '').replace(/:+/g, ' -');
|
return string.replace(/[\\,#%&{}/*<>$"@.?]*/g, '').replace(/:+/g, ' -');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function replaceTags(template: string, mediaTypeModel: MediaTypeModel): string {
|
export function replaceTags(template: string, mediaTypeModel: MediaTypeModel, ignoreUndefined: boolean = false): string {
|
||||||
return template.replace(new RegExp('{{.*?}}', 'g'), (match: string) => replaceTag(match, mediaTypeModel));
|
return template.replace(new RegExp('{{.*?}}', 'g'), (match: string) => replaceTag(match, mediaTypeModel, ignoreUndefined));
|
||||||
}
|
}
|
||||||
|
|
||||||
function replaceTag(match: string, mediaTypeModel: MediaTypeModel): string {
|
function replaceTag(match: string, mediaTypeModel: MediaTypeModel, ignoreUndefined: boolean): string {
|
||||||
let tag = match;
|
let tag = match;
|
||||||
tag = tag.substring(2);
|
tag = tag.substring(2);
|
||||||
tag = tag.substring(0, tag.length - 2);
|
tag = tag.substring(0, tag.length - 2);
|
||||||
|
|
@ -39,7 +39,7 @@ function replaceTag(match: string, mediaTypeModel: MediaTypeModel): string {
|
||||||
const obj = traverseMetaData(path, mediaTypeModel);
|
const obj = traverseMetaData(path, mediaTypeModel);
|
||||||
|
|
||||||
if (obj === undefined) {
|
if (obj === undefined) {
|
||||||
return '{{ INVALID TEMPLATE TAG - object undefined }}';
|
return ignoreUndefined ? '' : '{{ INVALID TEMPLATE TAG - object undefined }}';
|
||||||
}
|
}
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
|
|
@ -51,7 +51,7 @@ function replaceTag(match: string, mediaTypeModel: MediaTypeModel): string {
|
||||||
const obj = traverseMetaData(path, mediaTypeModel);
|
const obj = traverseMetaData(path, mediaTypeModel);
|
||||||
|
|
||||||
if (obj === undefined) {
|
if (obj === undefined) {
|
||||||
return '{{ INVALID TEMPLATE TAG - object undefined }}';
|
return ignoreUndefined ? '' : '{{ INVALID TEMPLATE TAG - object undefined }}';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (operator === 'LIST') {
|
if (operator === 'LIST') {
|
||||||
|
|
@ -64,6 +64,16 @@ function replaceTag(match: string, mediaTypeModel: MediaTypeModel): string {
|
||||||
return '{{ INVALID TEMPLATE TAG - operator ENUM is only applicable on an array }}';
|
return '{{ INVALID TEMPLATE TAG - operator ENUM is only applicable on an array }}';
|
||||||
}
|
}
|
||||||
return obj.join(', ');
|
return obj.join(', ');
|
||||||
|
} else if (operator === 'FIRST') {
|
||||||
|
if (!Array.isArray(obj)) {
|
||||||
|
return '{{ INVALID TEMPLATE TAG - operator FIRST is only applicable on an array }}';
|
||||||
|
}
|
||||||
|
return obj[0];
|
||||||
|
} else if (operator === 'LAST') {
|
||||||
|
if (!Array.isArray(obj)) {
|
||||||
|
return '{{ INVALID TEMPLATE TAG - operator LAST is only applicable on an array }}';
|
||||||
|
}
|
||||||
|
return obj[obj.length - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
return `{{ INVALID TEMPLATE TAG - unknown operator ${operator} }}`;
|
return `{{ INVALID TEMPLATE TAG - unknown operator ${operator} }}`;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue