2022-11-27 20:22:42 +08:00

80 lines
1.7 KiB
TypeScript
Raw 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';
export default class InsertRule implements RuleInterface {
/**
* 开始位置
*/
start: number;
/**
* 记录当前的值是多少
*/
currentIndex: number;
/**
* 增量
*/
increment: number;
/**
* 是否填充0
*/
addZero: boolean;
/**
* 填充后长度
*/
numLength: number;
/**
* 插入位置,front:前缀backend后缀at位置
*/
insertType: string;
/**
* 插入的位置
*/
insertValue: number;
/**
* 忽略拓展名
*/
ignorePostfix: boolean;
constructor(data: any) {
this.start = data.start;
this.currentIndex = data.start;
this.increment = data.increment;
this.addZero = data.addZero;
this.numLength = data.numLength;
this.insertType = data.insertType;
this.insertValue = data.insertValue;
this.ignorePostfix = data.ignorePostfix;
}
deal(file: FileObj): void {
let length = this.currentIndex.toString().length;
let numStr = (this.addZero && this.numLength > length ? "0".repeat(this.numLength - length) : "") + this.currentIndex;
let str = this.ignorePostfix ? file.realName : file.name;
switch (this.insertType) {
case "front":
str = numStr + str;
break;
case "backend":
str = str + numStr;
break;
case "at":
str = str.substring(0, this.insertValue - 1) + numStr + str.substring(this.insertValue - 1);
break;
}
this.currentIndex += this.increment;
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;
}
}