Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | 2x 2x 2x 2x 2x 2x 4x 2x 4x 2x 2x 1x 1x 4x 4x 1x 3x 2x 2x 1x 1x 1x 1x 1x | import { ContentsManager, Drive, Contents } from '@jupyterlab/services';
export interface ICodeSnippet {
name: string;
description: string;
language: string;
// code separated by new line
code: string[];
id: number;
tags?: string[];
}
/**
* Singleton contentsService class
*/
export class CodeSnippetContentsService {
drive: Drive;
contentsManager: ContentsManager;
private static instance: CodeSnippetContentsService;
private constructor() {
const drive = new Drive({ name: 'snippetDrive ' });
const contentsManager = new ContentsManager({ defaultDrive: drive });
this.drive = drive;
this.contentsManager = contentsManager;
}
static getInstance(): CodeSnippetContentsService {
if (!this.instance) {
this.instance = new CodeSnippetContentsService();
}
return this.instance;
}
/**
* Get the metadata information in the given path
* @param path path to a file/directory
*/
async getData(
path: string,
type: Contents.ContentType
): Promise<Contents.IModel> {
try {
const data = await this.contentsManager.get(path, {
type: type,
// format: 'text',
content: true
});
return data;
} catch (error) {
return error;
}
// const data = await this.contentsManager.get(path, {
// type: type,
// // format: 'text',
// content: true
// });
// return data;
}
/**
* Create a file/directory if it does not exist. Otherwise, save the change in a file/directory in the given path
* @param path path to a file/directory
* @param options options that specify if it's a file or directory and additial information
* Usage: save('snippets', { type: 'directory' }) to create/save a directory
* save('snippets/test.json', {type: 'file', format: 'text', content: 'Lorem ipsum dolor sit amet'})
*/
async save(
path: string,
options?: Partial<Contents.IModel>
): Promise<Contents.IModel> {
try {
const changedModel = await this.contentsManager.save(path, options);
return changedModel;
} catch (error) {
return error;
}
}
/**
* Change the order of snippets
* @param oldPath
* @param newPath
*/
/**
* Rename the file or directory (not case sensitive)
* @param oldPath change from
* @param newPath change to
*/
async rename(oldPath: string, newPath: string): Promise<Contents.IModel> {
try {
const changedModel = await this.contentsManager.rename(oldPath, newPath);
return changedModel;
} catch (error) {
return error;
}
// const changedModel = await this.contentsManager.rename(oldPath, newPath);
// return changedModel;
}
/**
* Delete the file/directory in the given path
* @param path path to a file/directory
*/
async delete(path: string): Promise<void> {
try {
await this.contentsManager.delete(path);
} catch (error) {
return;
}
}
// async renameAndSave(
// oldPath: string,
// newPath: string
// ): Promise<Contents.IModel> {
// this.rename(oldPath, newPath);
// this.save(newPath);
// }
}
|