rigjs
Version:
A multi-repos dev tool based on yarn and git.Rigjs is intended to be the simplest way to develop,share and deliver codes between different developers or different projects.
50 lines (44 loc) • 1.2 kB
text/typescript
import regex from '../../utils/regexHelper';
/**
* contain attributes of every level in the directory schema
*/
class DirLevel {
/**
* Means that is this level's name can be set dynamically.
* @type {boolean}
*/
dynamic: boolean;
/**
* The meaning of this level.Can be changed when [this.dynamic] is true.
* % matches all dir name.
* @type {string}
*/
name: string | '%';
/**
* The level in the directory schema
* @type {number}
*/
level: number;
constructor(dirName: string, level: number) {
this.dynamic = regex.dynamicDir.test(dirName);
this.name = dirName;
this.level = level;
}
static createSchema(treeSchema: string) {
let dirStrArr = treeSchema.split('/');
dirStrArr = dirStrArr.filter(dirStr => dirStr.length > 0);
return dirStrArr.map((dirStr, index) => {
return new DirLevel(dirStr, index);
});
}
static createDirArr(dir: string, schema: DirLevel[]) {
let dirStrArr = dir.split('/');
dirStrArr = dirStrArr.filter(dirStr => dirStr.length > 0);
return dirStrArr.map((dirStr, index) => {
const level = new DirLevel(dirStr, index);
level.dynamic = schema[index].dynamic;
return level;
});
}
}
export default DirLevel;