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); // } } |