class Role { beginTokenIndex:number; length: number; name: string; isPredicate: boolean; constructor(beginTokenIndex: number, length: number, name: string, isPredicate: boolean) { this.beginTokenIndex = beginTokenIndex; this.length = length; this.name = name; this.isPredicate = isPredicate; Object.freeze(this); } static parseHypergraph(json: [number, number, string], isPredicate: boolean) { return new Role(json[0],json[1]-json[0],json[2], isPredicate); } static parseJson(json: [number, number, string], isPredicate: boolean) { return new Role(json[0],json[1]-json[0],json[2], isPredicate); } static toHypergraphJson(role:Role):[number,number,string] { return [role.beginTokenIndex, role.beginTokenIndex + role.length, role.name]; } static toJson(role:Role):[number,number,string] { return [role.beginTokenIndex, role.beginTokenIndex + role.length, role.name]; } static isDisjoint(begin1: number, length1: number, begin2:number, length2:number):boolean { const end1 = begin1 + length1; const end2 = begin2 + length2; if(end1 <= begin2) return true; if(end2 <= begin1) return true; return false; } } export default Role;