Templates for file names #8

This commit is contained in:
mProjectsCode 2022-05-22 12:59:14 +02:00
parent 16299feced
commit 2c57094332
14 changed files with 231 additions and 115 deletions

7
src/utils/MediaType.ts Normal file
View file

@ -0,0 +1,7 @@
export enum MediaType {
Movie = 'movie',
Series = 'series',
Game = 'game',
MusicRelease = 'musicRelease',
Wiki = 'wiki',
}

View file

@ -0,0 +1,52 @@
import {MediaDbPluginSettings} from '../settings/Settings';
import {MediaType} from './MediaType';
import {MediaTypeModel} from '../models/MediaTypeModel';
import {replaceTags} from './Utils';
import {App, TFile} from 'obsidian';
export class MediaTypeManager {
mediaFileNameTemplateMap: Map<MediaType, string>;
mediaTemplateMap: Map<MediaType, string>;
constructor(settings: MediaDbPluginSettings) {
this.updateTemplates(settings);
}
updateTemplates(settings: MediaDbPluginSettings) {
this.mediaFileNameTemplateMap = new Map<MediaType, string>();
this.mediaFileNameTemplateMap.set(MediaType.Movie, settings.movieFileNameTemplate);
this.mediaFileNameTemplateMap.set(MediaType.Series, settings.seriesFileNameTemplate);
this.mediaFileNameTemplateMap.set(MediaType.Game, settings.gameFileNameTemplate);
this.mediaFileNameTemplateMap.set(MediaType.Wiki, settings.wikiFileNameTemplate);
this.mediaFileNameTemplateMap.set(MediaType.MusicRelease, settings.musicReleaseFileNameTemplate);
this.mediaTemplateMap = new Map<MediaType, string>();
this.mediaTemplateMap.set(MediaType.Movie, settings.movieTemplate);
this.mediaTemplateMap.set(MediaType.Series, settings.seriesTemplate);
this.mediaTemplateMap.set(MediaType.Game, settings.gameTemplate);
this.mediaTemplateMap.set(MediaType.Wiki, settings.wikiTemplate);
this.mediaTemplateMap.set(MediaType.MusicRelease, settings.musicReleaseTemplate);
}
getFileName(mediaTypeModel: MediaTypeModel): string {
return replaceTags(this.mediaFileNameTemplateMap.get(mediaTypeModel.getMediaType()), mediaTypeModel);
}
async getContent(mediaTypeModel: MediaTypeModel, app: App) {
const templateFileName = this.mediaTemplateMap.get(mediaTypeModel.getMediaType());
if (!templateFileName) {
return '';
}
const templateFile: TFile = app.vault.getFiles().filter((f: TFile) => f.name === templateFileName).first();
if (!templateFile) {
return '';
}
const template = await app.vault.cachedRead(templateFile);
// console.log(template);
return replaceTags(template, mediaTypeModel);
}
}

View file

@ -1,5 +1,4 @@
import {MediaTypeModel} from '../models/MediaTypeModel';
import {TFile} from 'obsidian';
export const pluginName: string = 'obsidian-media-db-plugin';
@ -8,7 +7,6 @@ export const mediaDbTag: string = 'mediaDB';
export const mediaDbVersion: string = '0.1.8';
export const debug: boolean = false;
export function wrapAround(value: number, size: number): number {
return ((value % size) + size) % size;
}
@ -86,7 +84,3 @@ function traverseMetaData(path: Array<string>, mediaTypeModel: MediaTypeModel):
return o;
}
export function updateNote(file: TFile) {
}