2023-04-09 21:51:02 +08:00

95 lines
2.6 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import RuleInterface from "./RuleInterface";
import FileObj from "../../vo/FileObj";
import path from 'path';
import {getSeason} from "../../../util/MediaUtil";
export default class InsertRule implements RuleInterface {
/**
* 插入内容
*/
insertContent: string;
/**
* 操作类别front前缀backend后缀at:位置replace:替换当前文件名
*/
type: string;
/**
* 当type为at,时的位置,从1开始
*/
atInput: number;
/**
* 当type为at,时的方向true:从右到左false:从左到右
*/
atIsRightToleft: boolean;
/**
* 忽略拓展名true:忽略false不忽略
*/
ignorePostfix: boolean;
/**
自动识别季号
*/
autoSeason: boolean;
/**
后缀过滤是否开启
*/
endFilter: boolean;
/**
有效后缀
*/
validEnd: Array<String>;
constructor(data: any) {
this.insertContent = data.insertContent;
this.type = data.type;
this.atInput = data.atInput;
this.atIsRightToleft = data.atIsRightToleft;
this.ignorePostfix = data.ignorePostfix;
this.autoSeason = data.autoSeason;
this.endFilter = data.endFilter;
this.validEnd = data.validEnd;
}
deal(file: FileObj): void {
if (this.endFilter && file.expandName.length > 0 && this.validEnd.indexOf(file.expandName.substring(1)) == -1) {
//拓展名不符,跳过
return;
}
let str = this.ignorePostfix ? file.realName : file.name;
let season = '';
if (this.autoSeason) {
season = getSeason(path.basename(file.path));
}
switch (this.type) {
case "front":
str = this.insertContent + season + str;
break;
case "backend":
str = str + this.insertContent + season;
break;
case "at":
let index = this.atIsRightToleft ? str.length - this.atInput + 1 : this.atInput - 1;
str = str.substring(0, index) + this.insertContent + season + str.substring(index);
break;
case "replace":
str = this.insertContent + season;
break;
}
if (this.ignorePostfix) {
file.realName = str;
} else {
file.expandName = path.extname(str);
if (file.expandName.length > 0) {
file.realName = str.substring(0, str.lastIndexOf("."));
} else {
file.realName = str;
}
}
file.name = file.realName + file.expandName;
}
}