UNPKG

compound-binary-file-js

Version:

This is an implementation of [Compound Binary File v.3](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-cfb/53989ce4-7b05-4f8d-829b-d08d6148375b) \ Allows reading existing files, creation of the/write operation

46 lines (39 loc) 1.77 kB
import {StorageDirectoryEntry} from "./StorageDirectoryEntry"; import {DirectoryEntryChain} from "./DirectoryEntryChain"; import {CFDataview} from "../dataview/СFDataview"; import {ColorFlag, DirectoryEntry, ObjectType} from "./DirectoryEntry"; import {Color} from "../tree/Node"; import {DirectoryEntryNode} from "./DirectoryEntryNode"; export class RootStorageDirectoryEntry extends StorageDirectoryEntry { static readonly NAME = "Root Entry"; public static readonly ID = 0; constructor(id: number, directoryEntryChain: DirectoryEntryChain, view: CFDataview, name?: string, colorFlag?: ColorFlag , objectType: ObjectType = ObjectType.Storage) { super(id, directoryEntryChain, view, name, colorFlag, objectType); const child = this.getChild(); if(child != null) { this.tree.setRoot(new DirectoryEntryNode(child, Color.BLACK)); } } getChild(): DirectoryEntry { if(this.getChildPosition() === RootStorageDirectoryEntry.ID) { throw new Error("Root Entry child cannot have ID == 0"); } return super.getChild(); } setRightSibling(rightSibling: DirectoryEntry): void { if(rightSibling != null) { throw new Error("Root Storage cannot have siblings"); } } setLeftSibling(leftSibling: DirectoryEntry): void { if(leftSibling != null) { throw new Error("Root Storage cannot have siblings"); } } setDirectoryEntryName(name: string): void { if("Root Entry" !== name) { throw new Error(`Name of Root Storage directory entry is always ${RootStorageDirectoryEntry.NAME}`); } super.setDirectoryEntryName(name); } }