Skip to content

Commit

Permalink
adding clone by path / insert folder with seed
Browse files Browse the repository at this point in the history
  • Loading branch information
iotshaman committed Feb 5, 2018
1 parent afc531d commit 7253e66
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 6 deletions.
14 changes: 12 additions & 2 deletions dist/file-tree.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/file-tree.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "node-json-file-tree",
"version": "2.0.5",
"version": "2.0.6",
"description": "Node Js module to generate a tree structure representation of a folder structure / file system.",
"main": "scripts/index.js",
"repository": {
Expand Down
38 changes: 38 additions & 0 deletions src/file-tree.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,21 @@ describe('File Tree - Delete Folders', () => {
done();
}
});
it('Delete Folder - Folder in Root', () => {
var files = ['/path1/file1.txt', '/path2/file2.txt'];
var folders = ['/path1/', '/path2/'];
let tree = new FileTree(files, folders);
var test = tree.getDirectoryFromPath('/');
expect(test["path2"]).not.toBeUndefined();
expect(test["path2"]).not.toBeNull();
tree.deleteFolder('/path2/');
test = tree.getDirectoryFromPath('/');
expect(test).not.toBeNull();
expect(test).not.toBeUndefined();
expect(test["path1"]).not.toBeUndefined();
expect(test["path1"]).not.toBeNull();
expect(test["path2"]).toBeUndefined();
});
it('Delete Folder - Folder Not Found', () => {
var files = ['/path/to/file.txt', '/path/to/inner/file1.txt', '/path/to/inner/file2.txt'];
var folders = ['/path/to/', '/path/to/inner'];
Expand All @@ -145,6 +160,17 @@ describe('File Tree - Add Folder', () => {
expect(test['NewFolder']['_files_']).not.toBe(null);
expect(test['NewFolder']['_files_'].length).toBe(0);
});
it('Add Folder with Seed', () => {
var files = ['/path/to/file.txt'];
var folders = ['/path/to/'];
let tree = new FileTree(files, folders);
tree.addFolder('/path/to/', 'NewFolder', { '_files_': ['test1.txt'] });
var test = tree.getDirectoryFromPath('/path/to/');
expect(test).not.toBe(null);
expect(test['NewFolder']).not.toBe(null);
expect(test['NewFolder']['_files_']).not.toBe(null);
expect(test['NewFolder']['_files_'].length).toBe(1);
});
it('Add Folder - Path Already Exists', (done: any) => {
var files = ['/path/to/file.txt'];
var folders = ['/path/to/'];
Expand Down Expand Up @@ -229,4 +255,16 @@ describe('File Tree - Copy Folder', () => {
done();
}
});
});

describe('File Tree - Clone Node By Path', () => {
it('Add Folder', () => {
var files = ['/path/file1.txt', '/path/file2.txt'];
var folders = ['/path/'];
let tree = new FileTree(files, folders);
var test = tree.cloneNodeByPath('/path/');
expect(test['_files_']).not.toBeNull();
expect(test['_files_']).not.toBeUndefined();
expect(test['_files_'].length).toBe(2);
});
});
13 changes: 11 additions & 2 deletions src/file-tree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,16 @@ export class FileTree {
this.nodes = this.utils.generateNodeTree(files, this.nodes);
}

public addFolder = (path: string, folderName: string) => {
public addFolder = (path: string, folderName: string, seed: any = null) => {
var dir = this.getDirectoryFromPath(path);
if (dir[folderName]) {
throw new Error('Folder already exists');
}
dir[folderName] = { '_files_': [] };
if (!seed) {
dir[folderName] = { '_files_': [] };
} else {
dir[folderName] = seed;
}
}

public renameFile = (path: string, oldName: string, newName: string) => {
Expand Down Expand Up @@ -133,6 +137,11 @@ export class FileTree {
}
}

public cloneNodeByPath = (path: string) => {
var node = this.getDirectoryFromPath(path);
return this.cloneNode(node);
}

private cloneNode = (node: any) => {
return JSON.parse(JSON.stringify(node));
}
Expand Down

0 comments on commit 7253e66

Please sign in to comment.