add hw2
This commit is contained in:
		
							
								
								
									
										78
									
								
								node_modules/langium/lib/workspace/uri-trie.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								node_modules/langium/lib/workspace/uri-trie.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| /****************************************************************************** | ||||
|  * Copyright 2024 TypeFox GmbH | ||||
|  * This program and the accompanying materials are made available under the | ||||
|  * terms of the MIT License, which is available in the project root. | ||||
|  ******************************************************************************/ | ||||
| export class UriTrie { | ||||
|     constructor() { | ||||
|         this.root = { name: '', children: new Map() }; | ||||
|     } | ||||
|     clear() { | ||||
|         this.root.children.clear(); | ||||
|     } | ||||
|     insert(uri, element) { | ||||
|         const node = this.getNode(uri, true); | ||||
|         node.element = element; | ||||
|     } | ||||
|     delete(uri) { | ||||
|         const nodeToDelete = this.getNode(uri, false); | ||||
|         if (nodeToDelete === null || nodeToDelete === void 0 ? void 0 : nodeToDelete.parent) { | ||||
|             nodeToDelete.parent.children.delete(nodeToDelete.name); | ||||
|         } | ||||
|     } | ||||
|     has(uri) { | ||||
|         var _a; | ||||
|         return Boolean((_a = this.getNode(uri, false)) === null || _a === void 0 ? void 0 : _a.element); | ||||
|     } | ||||
|     find(uri) { | ||||
|         var _a; | ||||
|         return (_a = this.getNode(uri, false)) === null || _a === void 0 ? void 0 : _a.element; | ||||
|     } | ||||
|     all() { | ||||
|         return this.collectDocuments(this.root); | ||||
|     } | ||||
|     findAll(prefix) { | ||||
|         const node = this.getNode(prefix, false); | ||||
|         if (!node) { | ||||
|             return []; | ||||
|         } | ||||
|         return this.collectDocuments(node); | ||||
|     } | ||||
|     getNode(uri, create) { | ||||
|         const parts = uri.split('/'); | ||||
|         if (uri.charAt(uri.length - 1) === '/') { | ||||
|             // Remove the last part if the URI ends with a slash | ||||
|             parts.pop(); | ||||
|         } | ||||
|         let current = this.root; | ||||
|         for (const part of parts) { | ||||
|             let child = current.children.get(part); | ||||
|             if (!child) { | ||||
|                 if (create) { | ||||
|                     child = { | ||||
|                         name: part, | ||||
|                         children: new Map(), | ||||
|                         parent: current | ||||
|                     }; | ||||
|                     current.children.set(part, child); | ||||
|                 } | ||||
|                 else { | ||||
|                     return undefined; | ||||
|                 } | ||||
|             } | ||||
|             current = child; | ||||
|         } | ||||
|         return current; | ||||
|     } | ||||
|     collectDocuments(node) { | ||||
|         const result = []; | ||||
|         if (node.element) { | ||||
|             result.push(node.element); | ||||
|         } | ||||
|         for (const child of node.children.values()) { | ||||
|             result.push(...this.collectDocuments(child)); | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
| } | ||||
| //# sourceMappingURL=uri-trie.js.map | ||||
		Reference in New Issue
	
	Block a user
	 nik
					nik