{"version":3,"sources":["../src/index.ts","../src/Functional.ts","../src/ParserBase.ts","../src/Specifications.ts","../src/EntitiesParser/Arc.ts","../src/EntitiesParser/Attdef.ts","../src/EntitiesParser/Attrib.ts","../src/EntitiesParser/Circle.ts","../src/EntitiesParser/Ellipse.ts","../src/EntitiesParser/Face3D.ts","../src/EntitiesParser/Hatch.ts","../src/EntitiesParser/Seqend.ts","../src/EntitiesParser/Insert.ts","../src/EntitiesParser/Line.ts","../src/EntitiesParser/LWPolyline.ts","../src/EntitiesParser/Point.ts","../src/EntitiesParser/Vertex.ts","../src/EntitiesParser/Polyline.ts","../src/EntitiesParser/Solid.ts","../src/EntitiesParser/Solid3D.ts","../src/EntitiesParser/Spline.ts","../src/EntitiesParser/Text.ts","../src/BlocksParser/BlockParser.ts","../src/BlocksParser/BlocksParser.ts","../src/ClassesParser/ClassesParser.ts","../src/EntitiesParser/EntitiesParser.ts","../src/HeaderParser/HeaderParser.ts","../src/ObjectsParser/ObjectsParser.ts","../src/TablesParser/TableParser.ts","../src/TablesParser/AppIdParser.ts","../src/TablesParser/BlockRecordParser.ts","../src/TablesParser/DimStyleParser.ts","../src/TablesParser/LayerParser.ts","../src/TablesParser/LTypeParser.ts","../src/TablesParser/StyleParser.ts","../src/TablesParser/UcsParser.ts","../src/TablesParser/ViewParser.ts","../src/TablesParser/VPortParser.ts","../src/TablesParser/TablesParser.ts","../src/Tokenizer.ts","../src/Parser.ts"],"sourcesContent":["export { Parser } from './Parser';\r\nexport * from './Interfaces'\r\n","import { Tokenizer } from './Tokenizer';\r\nimport { obj_t, matcher_t, spec_t, tokens_t, token_t } from './Types';\r\n\r\n/**\r\n * Trim an split dxf content into trimmed lines.\r\n *\r\n * @param content - The dxf content.\r\n * @returns An array of trimmed lines.\r\n */\r\nexport function lines(content: string): string[] {\r\n    if (content === '') return [];\r\n    return content\r\n        .trim()\r\n        .split(/\\r\\n|\\r|\\n/gm)\r\n        .map((line) => line.trim());\r\n}\r\n\r\n/**\r\n * Create a token object.\r\n *\r\n * @param code - The group code.\r\n * @param value - The group code's value\r\n * @param line - The line number where this token starts.\r\n * @returns The token object.\r\n */\r\nexport function token(code: number, value: string, line: number): token_t {\r\n    return {\r\n        code,\r\n        value,\r\n        line,\r\n    };\r\n}\r\n\r\n/**\r\n * Return true if the string is all digits, otherwise return false.\r\n *\r\n * @param str - The string to be tested.\r\n * @returns A boolean value.\r\n */\r\nexport function numeric(str: string) {\r\n    return /^\\d+$/.test(str);\r\n}\r\n\r\n/**\r\n * Create a error message.\r\n *\r\n * @param value - The expected value.\r\n * @param line - The line of the expected value.\r\n * @returns The error message.\r\n */\r\nexport function expected(value: string, line: number) {\r\n    return `Expected ${value} at line ${line}.`;\r\n}\r\n\r\n/**\r\n * Create a error message.\r\n *\r\n * @param value - The unexpected value.\r\n * @param line - The line of the unexpected value.\r\n * @returns The error message.\r\n */\r\nexport function unexpected(value: string, line: number) {\r\n    return `Unexpected ${value} at line ${line}.`;\r\n}\r\n\r\n/**\r\n * Create an array of tokens from the array of lines,\r\n * otherwise returns a error message.\r\n *\r\n * @param lines - The array of dxf lines.\r\n * @returns An array of tokens or an error message.\r\n */\r\nexport function tokens(lines: string[]): string | tokens_t {\r\n    const length = lines.length;\r\n    const tokens: tokens_t = [];\r\n    for (let i = 0; i < length; i++) {\r\n        if (i % 2 === 0) {\r\n            const code = lines[i++].trim();\r\n            if (!numeric(code)) return expected('code', i);\r\n            if (i >= length) return expected('value', i + 1);\r\n            if (code !== '999')\r\n                tokens.push(token(parseInt(code), lines[i].trim(), i));\r\n        }\r\n    }\r\n    return tokens;\r\n}\r\n\r\nexport function type(value: string): matcher_t {\r\n    return function (token: token_t) {\r\n        return token.value === value && token.code === 0;\r\n    };\r\n}\r\n\r\nexport function code(code: number): matcher_t {\r\n    return function (token: token_t) {\r\n        return token.code === code;\r\n    };\r\n}\r\n\r\nexport function cZero(token: token_t) {\r\n    return token.code === 0;\r\n}\r\n\r\nexport function c102(token: token_t) {\r\n    return token.code === 102;\r\n}\r\n\r\nexport function c102End(token: token_t) {\r\n    return token.code === 102 && token.value === '}';\r\n}\r\n\r\nexport function variable(token: token_t) {\r\n    return token.code === 9;\r\n}\r\n\r\nexport function lTypeElement(token: token_t) {\r\n    return token.code === 49;\r\n}\r\n\r\nexport function eclass(token: token_t) {\r\n    return token.code === 0 && token.value === 'CLASS';\r\n}\r\n\r\nexport function ename(value: string): matcher_t {\r\n    return function (token: token_t) {\r\n        return token.value === value && token.code === 2;\r\n    };\r\n}\r\n\r\nexport function comment(token: token_t) {\r\n    return token.code === 999;\r\n}\r\n\r\nexport const section = type('SECTION');\r\nexport const endsec = type('ENDSEC');\r\nexport const block = type('BLOCK');\r\nexport const endblk = type('ENDBLK');\r\nexport const table = type('TABLE');\r\nexport const endtab = type('ENDTAB');\r\nexport const eof = type('EOF');\r\n\r\nexport function value(token: token_t): string | number | boolean {\r\n    if (\r\n        (token.code >= 10 && token.code <= 59) ||\r\n        (token.code >= 110 && token.code <= 149) ||\r\n        (token.code >= 460 && token.code <= 469) ||\r\n        (token.code >= 210 && token.code <= 239) ||\r\n        (token.code >= 1010 && token.code <= 1059)\r\n    )\r\n        return parseFloat(token.value);\r\n    else if (\r\n        (token.code >= 60 && token.code <= 99) ||\r\n        (token.code >= 160 && token.code <= 179) ||\r\n        (token.code >= 270 && token.code <= 289) ||\r\n        (token.code >= 370 && token.code <= 389) ||\r\n        (token.code >= 400 && token.code <= 409) ||\r\n        (token.code >= 420 && token.code <= 429) ||\r\n        (token.code >= 440 && token.code <= 459) ||\r\n        (token.code >= 1060 && token.code <= 1071)\r\n    )\r\n        return parseInt(token.value);\r\n    else if (token.code >= 290 && token.code <= 299)\r\n        return Boolean(Number(token.value));\r\n    return token.value;\r\n}\r\n\r\nexport function last<T>(arr: T[]) {\r\n    return arr[arr.length - 1];\r\n}\r\n\r\nexport function defineProperty(tk: Tokenizer, obj: obj_t, spec: spec_t): void {\r\n    const token = tk.next();\r\n    if (spec.has(token.code)) {\r\n        const property = spec.get(token.code) as string;\r\n        if (Array.isArray(obj[property])) {\r\n            (obj[property] as any[]).push(value(token));\r\n        } else {\r\n            if (obj[property]) tk.unexpected('code', token.line);\r\n            obj[property] = value(token);\r\n        }\r\n    } else {\r\n        if (!obj.unknowns) obj.unknowns = [];\r\n        obj.unknowns.push(token);\r\n    }\r\n}\r\n","import { Tokenizer } from './Tokenizer';\r\n\r\nexport abstract class ParserBase {\r\n    name: string;\r\n\r\n    constructor(name: string) {\r\n        this.name = name;\r\n    }\r\n\r\n    abstract parse(tk: Tokenizer): void;\r\n\r\n    abstract match(tk: Tokenizer): boolean;\r\n}\r\n","import { spec_t } from './Types';\r\n\r\nexport function extend(target: spec_t, from: spec_t) {\r\n    from.forEach((value, key) => {\r\n        target.set(key, value);\r\n    });\r\n}\r\n\r\nexport const CommonsSpec: spec_t = new Map();\r\nCommonsSpec.set(5, 'handle');\r\nCommonsSpec.set(330, 'ownerObjectHandle');\r\nCommonsSpec.set(100, 'subclassMarker');\r\n\r\nexport const TableCommonsSpec: spec_t = new Map();\r\nextend(TableCommonsSpec, CommonsSpec);\r\nTableCommonsSpec.set(70, 'numberOfRecords');\r\n\r\nexport const TableRecordCommonsSpec: spec_t = new Map();\r\nextend(TableRecordCommonsSpec, CommonsSpec);\r\n\r\n// APPID\r\nexport const AppIdRecordSpec: spec_t = new Map();\r\nextend(AppIdRecordSpec, TableRecordCommonsSpec);\r\nAppIdRecordSpec.set(2, 'name');\r\nAppIdRecordSpec.set(70, 'flags');\r\n\r\n// BLOCK_RECORD\r\nexport const BlockRecordSpec: spec_t = new Map();\r\nextend(BlockRecordSpec, TableRecordCommonsSpec);\r\nBlockRecordSpec.set(2, 'name');\r\nBlockRecordSpec.set(340, 'layoutObject');\r\nBlockRecordSpec.set(280, 'explodability');\r\nBlockRecordSpec.set(281, 'scalability');\r\nBlockRecordSpec.set(70, 'insertionUnits');\r\n\r\n// LAYER\r\nexport const LayerRecordSpec: spec_t = new Map();\r\nextend(LayerRecordSpec, TableRecordCommonsSpec);\r\nLayerRecordSpec.set(2, 'name');\r\nLayerRecordSpec.set(70, 'flags');\r\nLayerRecordSpec.set(62, 'color');\r\nLayerRecordSpec.set(6, 'lineType');\r\nLayerRecordSpec.set(290, 'plottingFlag');\r\nLayerRecordSpec.set(370, 'lineweight');\r\nLayerRecordSpec.set(390, 'plotStyleNameObject');\r\nLayerRecordSpec.set(347, 'materialObject');\r\n\r\n// DIMSTYLE\r\nexport const DimStyleRecordSpec: spec_t = new Map();\r\nextend(DimStyleRecordSpec, TableRecordCommonsSpec);\r\nDimStyleRecordSpec.delete(5);\r\nDimStyleRecordSpec.set(105, 'handle');\r\nDimStyleRecordSpec.set(2, 'name');\r\nDimStyleRecordSpec.set(70, 'flags');\r\nDimStyleRecordSpec.set(3, 'DIMPOST');\r\nDimStyleRecordSpec.set(4, 'DIMAPOST');\r\nDimStyleRecordSpec.set(5, 'DIMBLK');\r\nDimStyleRecordSpec.set(6, 'DIMBLK1');\r\nDimStyleRecordSpec.set(7, 'DIMBLK2');\r\nDimStyleRecordSpec.set(40, 'DIMSCALE');\r\nDimStyleRecordSpec.set(41, 'DIMASZ');\r\nDimStyleRecordSpec.set(42, 'DIMEXO');\r\nDimStyleRecordSpec.set(43, 'DIMDLI');\r\nDimStyleRecordSpec.set(44, 'DIMEXE');\r\nDimStyleRecordSpec.set(45, 'DIMRND');\r\nDimStyleRecordSpec.set(46, 'DIMDLE');\r\nDimStyleRecordSpec.set(47, 'DIMTP');\r\nDimStyleRecordSpec.set(48, 'DIMTM');\r\nDimStyleRecordSpec.set(140, 'DIMTXT');\r\nDimStyleRecordSpec.set(141, 'DIMCEN');\r\nDimStyleRecordSpec.set(142, 'DIMTSZ');\r\nDimStyleRecordSpec.set(143, 'DIMALTF');\r\nDimStyleRecordSpec.set(144, 'DIMLFAC');\r\nDimStyleRecordSpec.set(145, 'DIMTVP');\r\nDimStyleRecordSpec.set(146, 'DIMTFAC');\r\nDimStyleRecordSpec.set(147, 'DIMGAP');\r\nDimStyleRecordSpec.set(148, 'DIMALTRND');\r\nDimStyleRecordSpec.set(71, 'DIMTOL');\r\nDimStyleRecordSpec.set(72, 'DIMLIM');\r\nDimStyleRecordSpec.set(73, 'DIMTIH');\r\nDimStyleRecordSpec.set(74, 'DIMTOH');\r\nDimStyleRecordSpec.set(75, 'DIMSE1');\r\nDimStyleRecordSpec.set(76, 'DIMSE2');\r\nDimStyleRecordSpec.set(77, 'DIMTAD');\r\nDimStyleRecordSpec.set(78, 'DIMZIN');\r\nDimStyleRecordSpec.set(79, 'DIMAZIN');\r\nDimStyleRecordSpec.set(170, 'DIMALT');\r\nDimStyleRecordSpec.set(171, 'DIMALTD');\r\nDimStyleRecordSpec.set(172, 'DIMTOFL');\r\nDimStyleRecordSpec.set(173, 'DIMSAH');\r\nDimStyleRecordSpec.set(174, 'DIMTIX');\r\nDimStyleRecordSpec.set(175, 'DIMSOXD');\r\nDimStyleRecordSpec.set(176, 'DIMCLRD');\r\nDimStyleRecordSpec.set(177, 'DIMCLRE');\r\nDimStyleRecordSpec.set(178, 'DIMCLRT');\r\nDimStyleRecordSpec.set(179, 'DIMADEC');\r\nDimStyleRecordSpec.set(270, 'DIMUNIT');\r\nDimStyleRecordSpec.set(271, 'DIMDEC');\r\nDimStyleRecordSpec.set(272, 'DIMTDEC');\r\nDimStyleRecordSpec.set(273, 'DIMALTU');\r\nDimStyleRecordSpec.set(274, 'DIMALTTD');\r\nDimStyleRecordSpec.set(275, 'DIMAUNIT');\r\nDimStyleRecordSpec.set(276, 'DIMFRAC');\r\nDimStyleRecordSpec.set(277, 'DIMLUNIT');\r\nDimStyleRecordSpec.set(278, 'DIMDSEP');\r\nDimStyleRecordSpec.set(279, 'DIMTMOVE');\r\nDimStyleRecordSpec.set(280, 'DIMJUST');\r\nDimStyleRecordSpec.set(281, 'DIMSD1');\r\nDimStyleRecordSpec.set(282, 'DIMSD2');\r\nDimStyleRecordSpec.set(283, 'DIMTOLJ');\r\nDimStyleRecordSpec.set(284, 'DIMTZIN');\r\nDimStyleRecordSpec.set(285, 'DIMALTZ');\r\nDimStyleRecordSpec.set(286, 'DIMALTTZ');\r\nDimStyleRecordSpec.set(287, 'DIMFIT');\r\nDimStyleRecordSpec.set(288, 'DIMUPT');\r\nDimStyleRecordSpec.set(289, 'DIMATFIT');\r\nDimStyleRecordSpec.set(340, 'DIMTXSTY');\r\nDimStyleRecordSpec.set(341, 'DIMLDRBLK');\r\nDimStyleRecordSpec.set(342, 'DIMBLK');\r\nDimStyleRecordSpec.set(343, 'DIMBLK1');\r\nDimStyleRecordSpec.set(344, 'DIMBLK2');\r\nDimStyleRecordSpec.set(371, 'DIMLWD');\r\nDimStyleRecordSpec.set(372, 'DIMLWE');\r\n\r\n// STYLE\r\nexport const StyleRecordSpec: spec_t = new Map();\r\nextend(StyleRecordSpec, TableRecordCommonsSpec);\r\nStyleRecordSpec.set(2, 'name');\r\nStyleRecordSpec.set(70, 'flags');\r\nStyleRecordSpec.set(40, 'textHeight');\r\nStyleRecordSpec.set(41, 'widthFactor');\r\nStyleRecordSpec.set(50, 'obliqueAngle');\r\nStyleRecordSpec.set(71, 'textGenerationFlags');\r\nStyleRecordSpec.set(42, 'lastHeight');\r\nStyleRecordSpec.set(3, 'primaryFontFile');\r\nStyleRecordSpec.set(4, 'bigFontFile');\r\nStyleRecordSpec.set(1071, 'trueTypeFont');\r\n\r\n// LTYPE\r\nexport const LTypeRecordSpec: spec_t = new Map();\r\nextend(LTypeRecordSpec, TableRecordCommonsSpec);\r\nLTypeRecordSpec.set(2, 'name');\r\nLTypeRecordSpec.set(70, 'flags');\r\nLTypeRecordSpec.set(3, 'descriptive');\r\nLTypeRecordSpec.set(72, 'alignmentCode');\r\nLTypeRecordSpec.set(73, 'numberOfElements');\r\nLTypeRecordSpec.set(40, 'patternLength');\r\n\r\n// LTYPE Element\r\nexport const LTypeElementSpec: spec_t = new Map();\r\nLTypeElementSpec.set(49, 'length');\r\nLTypeElementSpec.set(74, 'complexType');\r\nLTypeElementSpec.set(75, 'shapeNumber');\r\nLTypeElementSpec.set(340, 'styleObject');\r\nLTypeElementSpec.set(46, 'scale');\r\nLTypeElementSpec.set(50, 'rotation');\r\nLTypeElementSpec.set(44, 'offsetX');\r\nLTypeElementSpec.set(45, 'offsetY');\r\nLTypeElementSpec.set(9, 'text');\r\n\r\n// Point\r\nexport const PointSpec: spec_t = new Map();\r\nPointSpec.set(10, 'x');\r\nPointSpec.set(20, 'y');\r\nPointSpec.set(30, 'z');\r\n\r\n// CLASS\r\nexport const ClassSpec: spec_t = new Map();\r\nClassSpec.set(1, 'recordName');\r\nClassSpec.set(2, 'className');\r\nClassSpec.set(3, 'applicationName');\r\nClassSpec.set(90, 'proxyFlag');\r\nClassSpec.set(91, 'instanceCount');\r\nClassSpec.set(280, 'wasProxyFlag');\r\nClassSpec.set(281, 'isEntityFlag');\r\n\r\nexport const EntityCommonsSpec: spec_t = new Map();\r\nEntityCommonsSpec.set(5, 'handle');\r\nEntityCommonsSpec.set(330, 'ownerBlockRecordHandle');\r\nEntityCommonsSpec.set(100, 'subclassMarker');\r\nEntityCommonsSpec.set(67, 'inPaperSpace');\r\nEntityCommonsSpec.set(410, 'layoutTabName');\r\nEntityCommonsSpec.set(8, 'layerName');\r\nEntityCommonsSpec.set(6, 'linetypeName');\r\nEntityCommonsSpec.set(347, 'materialObjectHandle');\r\nEntityCommonsSpec.set(62, 'colorNumber');\r\nEntityCommonsSpec.set(370, 'lineweightEnumValue');\r\nEntityCommonsSpec.set(48, 'linetypeScale');\r\nEntityCommonsSpec.set(60, 'visibilty');\r\n// TODO Codes 92 and 310\r\nEntityCommonsSpec.set(420, 'trueColor');\r\nEntityCommonsSpec.set(430, 'colorName');\r\nEntityCommonsSpec.set(440, 'transparency');\r\nEntityCommonsSpec.set(390, 'plotstyleObjectHandle');\r\nEntityCommonsSpec.set(284, 'shadowMode');\r\n\r\n// POINT\r\nexport const PointEntitySpec: spec_t = new Map();\r\nextend(PointEntitySpec, EntityCommonsSpec);\r\nPointEntitySpec.set(10, 'x');\r\nPointEntitySpec.set(20, 'y');\r\nPointEntitySpec.set(30, 'z');\r\nPointEntitySpec.set(39, 'thickness');\r\nPointEntitySpec.set(50, 'xAxisAngle');\r\n\r\n// ARC\r\nexport const ArcEntitySpec: spec_t = new Map();\r\nextend(ArcEntitySpec, EntityCommonsSpec);\r\nArcEntitySpec.set(39, 'thickness');\r\nArcEntitySpec.set(10, 'centerX');\r\nArcEntitySpec.set(20, 'centerY');\r\nArcEntitySpec.set(30, 'centerZ');\r\nArcEntitySpec.set(40, 'radius');\r\nArcEntitySpec.set(50, 'startAngle');\r\nArcEntitySpec.set(51, 'endAngle');\r\n\r\n// 3DFACE\r\nexport const Face3DEntitySpec: spec_t = new Map();\r\nextend(Face3DEntitySpec, EntityCommonsSpec);\r\nFace3DEntitySpec.set(10, 'firstX');\r\nFace3DEntitySpec.set(20, 'firstY');\r\nFace3DEntitySpec.set(30, 'firstZ');\r\nFace3DEntitySpec.set(11, 'secondX');\r\nFace3DEntitySpec.set(21, 'secondY');\r\nFace3DEntitySpec.set(31, 'secondZ');\r\nFace3DEntitySpec.set(12, 'thirdX');\r\nFace3DEntitySpec.set(22, 'thirdY');\r\nFace3DEntitySpec.set(32, 'thirdZ');\r\nFace3DEntitySpec.set(13, 'fourthX');\r\nFace3DEntitySpec.set(23, 'fourthY');\r\nFace3DEntitySpec.set(33, 'fourthZ');\r\nFace3DEntitySpec.set(70, 'invisibleEdgeFlag');\r\n\r\n// 3DSOLID\r\nexport const Solid3DEntitySpec: spec_t = new Map();\r\nextend(Solid3DEntitySpec, EntityCommonsSpec);\r\nSolid3DEntitySpec.set(70, 'modelerFormatVersion');\r\nSolid3DEntitySpec.set(1, 'proprietaryData');\r\nSolid3DEntitySpec.set(3, 'lastProprietrayData');\r\nSolid3DEntitySpec.set(350, 'historyObjectHandle');\r\n\r\n// SOLID\r\nexport const SolidEntitySpec: spec_t = new Map();\r\nextend(SolidEntitySpec, EntityCommonsSpec);\r\nSolidEntitySpec.set(10, 'firstX');\r\nSolidEntitySpec.set(20, 'firstY');\r\nSolidEntitySpec.set(30, 'firstZ');\r\nSolidEntitySpec.set(11, 'secondX');\r\nSolidEntitySpec.set(21, 'secondY');\r\nSolidEntitySpec.set(31, 'secondZ');\r\nSolidEntitySpec.set(12, 'thirdX');\r\nSolidEntitySpec.set(22, 'thirdY');\r\nSolidEntitySpec.set(32, 'thirdZ');\r\nSolidEntitySpec.set(13, 'fourthX');\r\nSolidEntitySpec.set(23, 'fourthY');\r\nSolidEntitySpec.set(33, 'fourthZ');\r\nSolidEntitySpec.set(39, 'thickness');\r\n\r\n// CIRCLE\r\nexport const CircleEntitySpec: spec_t = new Map();\r\nextend(CircleEntitySpec, EntityCommonsSpec);\r\nCircleEntitySpec.set(39, 'thickness');\r\nCircleEntitySpec.set(10, 'centerX');\r\nCircleEntitySpec.set(20, 'centerY');\r\nCircleEntitySpec.set(30, 'centerZ');\r\nCircleEntitySpec.set(40, 'radius');\r\n\r\n// ELLIPSE\r\nexport const EllipseEntitySpec: spec_t = new Map();\r\nextend(EllipseEntitySpec, EntityCommonsSpec);\r\nEllipseEntitySpec.set(10, 'centerX');\r\nEllipseEntitySpec.set(20, 'centerY');\r\nEllipseEntitySpec.set(30, 'centerZ');\r\nEllipseEntitySpec.set(11, 'majorAxisX');\r\nEllipseEntitySpec.set(21, 'majorAxisY');\r\nEllipseEntitySpec.set(31, 'majorAxisZ');\r\nEllipseEntitySpec.set(40, 'ratioOfMinorAxisToMajorAxis');\r\nEllipseEntitySpec.set(41, 'startParameter');\r\nEllipseEntitySpec.set(42, 'endParameter');\r\n\r\n// LWPOLYLINE\r\nexport const LWPolylineEntitySpec: spec_t = new Map();\r\nextend(LWPolylineEntitySpec, EntityCommonsSpec);\r\nLWPolylineEntitySpec.set(90, 'numberOfVertices');\r\nLWPolylineEntitySpec.set(70, 'flag');\r\nLWPolylineEntitySpec.set(43, 'constantWidth');\r\nLWPolylineEntitySpec.set(38, 'elevation');\r\nLWPolylineEntitySpec.set(39, 'thickness');\r\n\r\n// LWPOLYLINE vertex\r\nexport const LWPolylineVertexSpec: spec_t = new Map();\r\nLWPolylineVertexSpec.set(10, 'x');\r\nLWPolylineVertexSpec.set(20, 'y');\r\nLWPolylineVertexSpec.set(40, 'startingWidth');\r\nLWPolylineVertexSpec.set(41, 'endWidth');\r\nLWPolylineVertexSpec.set(42, 'bulge');\r\n\r\n// POLYLINE\r\nexport const PolylineEntitySpec: spec_t = new Map();\r\nextend(PolylineEntitySpec, EntityCommonsSpec);\r\nPolylineEntitySpec.set(66, 'entitiesFollowFlag');\r\nPolylineEntitySpec.set(10, 'x');\r\nPolylineEntitySpec.set(20, 'y');\r\nPolylineEntitySpec.set(30, 'z');\r\nPolylineEntitySpec.set(39, 'thickness');\r\nPolylineEntitySpec.set(70, 'flag');\r\nPolylineEntitySpec.set(40, 'startingWidth');\r\nPolylineEntitySpec.set(41, 'endWidth');\r\nPolylineEntitySpec.set(71, 'mVertexCount');\r\nPolylineEntitySpec.set(72, 'nVertexCount');\r\nPolylineEntitySpec.set(73, 'mDensity');\r\nPolylineEntitySpec.set(74, 'nDensity');\r\nPolylineEntitySpec.set(75, 'curvesAndSmoothSurface');\r\n\r\n// VERTEX\r\nexport const VertexEntitySpec: spec_t = new Map();\r\nextend(VertexEntitySpec, EntityCommonsSpec);\r\nVertexEntitySpec.set(10, 'x');\r\nVertexEntitySpec.set(20, 'y');\r\nVertexEntitySpec.set(30, 'z');\r\nVertexEntitySpec.set(40, 'startingWidth');\r\nVertexEntitySpec.set(41, 'endWidth');\r\nVertexEntitySpec.set(42, 'bulge');\r\nVertexEntitySpec.set(70, 'flag');\r\nVertexEntitySpec.set(50, 'tangentDirection');\r\nVertexEntitySpec.set(71, 'meshVertexIndex1');\r\nVertexEntitySpec.set(72, 'meshVertexIndex2');\r\nVertexEntitySpec.set(73, 'meshVertexIndex3');\r\nVertexEntitySpec.set(74, 'meshVertexIndex4');\r\nVertexEntitySpec.set(91, 'identifier');\r\n\r\n// INSERT\r\nexport const InsertEntitySpec: spec_t = new Map();\r\nextend(InsertEntitySpec, EntityCommonsSpec);\r\nInsertEntitySpec.set(66, 'attributesFollowFlag');\r\nInsertEntitySpec.set(2, 'blockName');\r\nInsertEntitySpec.set(10, 'x');\r\nInsertEntitySpec.set(20, 'y');\r\nInsertEntitySpec.set(30, 'z');\r\nInsertEntitySpec.set(41, 'xScale');\r\nInsertEntitySpec.set(42, 'yScale');\r\nInsertEntitySpec.set(43, 'zScale');\r\nInsertEntitySpec.set(50, 'rotation');\r\nInsertEntitySpec.set(70, 'columnCount');\r\nInsertEntitySpec.set(71, 'rowCount');\r\nInsertEntitySpec.set(44, 'columnSpacing');\r\nInsertEntitySpec.set(45, 'rowSpacing');\r\n\r\n// LINE\r\nexport const LineEntitySpec: spec_t = new Map();\r\nextend(LineEntitySpec, EntityCommonsSpec);\r\nLineEntitySpec.set(39, 'thickness');\r\nLineEntitySpec.set(10, 'startX');\r\nLineEntitySpec.set(20, 'startY');\r\nLineEntitySpec.set(30, 'startZ');\r\nLineEntitySpec.set(11, 'endX');\r\nLineEntitySpec.set(21, 'endY');\r\nLineEntitySpec.set(31, 'endZ');\r\n\r\n// TEXT\r\nexport const TextEntitySpec: spec_t = new Map();\r\nextend(TextEntitySpec, EntityCommonsSpec);\r\nTextEntitySpec.set(39, 'thickness');\r\nTextEntitySpec.set(10, 'firstAlignmentX');\r\nTextEntitySpec.set(20, 'firstAlignmentY');\r\nTextEntitySpec.set(30, 'firstAlignmentZ');\r\nTextEntitySpec.set(40, 'textHeight');\r\nTextEntitySpec.set(1, 'text');\r\nTextEntitySpec.set(50, 'rotation');\r\nTextEntitySpec.set(41, 'factorWidth');\r\nTextEntitySpec.set(51, 'obliqueAngle');\r\nTextEntitySpec.set(7, 'styleName');\r\nTextEntitySpec.set(71, 'generationFlags');\r\nTextEntitySpec.set(72, 'horizontalJustification');\r\nTextEntitySpec.set(11, 'secondAlignmentendX');\r\nTextEntitySpec.set(21, 'secondAlignmentendY');\r\nTextEntitySpec.set(31, 'secondAlignmentendZ');\r\nTextEntitySpec.set(73, 'verticalJustification');\r\n\r\n// SPLINE\r\nexport const SplineEntitySpec: spec_t = new Map();\r\nextend(SplineEntitySpec, EntityCommonsSpec);\r\nSplineEntitySpec.set(210, 'normalVectorX');\r\nSplineEntitySpec.set(220, 'normalVectory');\r\nSplineEntitySpec.set(230, 'normalVectorZ');\r\nSplineEntitySpec.set(70, 'flags');\r\nSplineEntitySpec.set(71, 'degree');\r\nSplineEntitySpec.set(72, 'numberOfKnots');\r\nSplineEntitySpec.set(73, 'numberOfControlPoints');\r\nSplineEntitySpec.set(74, 'numberOfFitPoints');\r\nSplineEntitySpec.set(42, 'knotTolerance');\r\nSplineEntitySpec.set(43, 'controlPointTolerance');\r\nSplineEntitySpec.set(44, 'fitTolerance');\r\nSplineEntitySpec.set(12, 'startTangentX');\r\nSplineEntitySpec.set(22, 'startTangentY');\r\nSplineEntitySpec.set(32, 'startTangentZ');\r\nSplineEntitySpec.set(13, 'endTangentX');\r\nSplineEntitySpec.set(23, 'endTangentY');\r\nSplineEntitySpec.set(33, 'endTangentZ');\r\n\r\nexport const SplineControlPointSpec: spec_t = new Map();\r\nSplineControlPointSpec.set(10, 'x');\r\nSplineControlPointSpec.set(20, 'y');\r\nSplineControlPointSpec.set(30, 'z');\r\n\r\nexport const SplineFitPointSpec: spec_t = new Map();\r\nSplineFitPointSpec.set(11, 'x');\r\nSplineFitPointSpec.set(21, 'y');\r\nSplineFitPointSpec.set(31, 'z');\r\n\r\n// SPLINE\r\nexport const BlockSpec: spec_t = new Map();\r\nextend(BlockSpec, EntityCommonsSpec);\r\nBlockSpec.set(8, 'layerName');\r\nBlockSpec.set(2, 'name');\r\nBlockSpec.set(70, 'typeFlags');\r\nBlockSpec.set(10, 'basePointX');\r\nBlockSpec.set(20, 'basePointY');\r\nBlockSpec.set(30, 'basePointZ');\r\nBlockSpec.set(3, 'name2');\r\nBlockSpec.set(1, 'xRefPathName');\r\nBlockSpec.set(4, 'description');\r\n\r\n// ATTDEF\r\nexport const AttdefEntitySpec: spec_t = new Map();\r\nextend(AttdefEntitySpec, EntityCommonsSpec);\r\nAttdefEntitySpec.set(39, 'thickness');\r\nAttdefEntitySpec.set(10, 'firstAlignmentPointX');\r\nAttdefEntitySpec.set(20, 'firstAlignmentPointY');\r\nAttdefEntitySpec.set(30, 'firstAlignmentPointZ');\r\nAttdefEntitySpec.set(40, 'height');\r\nAttdefEntitySpec.set(1, 'value');\r\nAttdefEntitySpec.set(50, 'rotation');\r\nAttdefEntitySpec.set(41, 'relativeXScaleFactor');\r\nAttdefEntitySpec.set(51, 'obliqueAngle');\r\nAttdefEntitySpec.set(7, 'styleName');\r\nAttdefEntitySpec.set(71, 'generationFlags');\r\nAttdefEntitySpec.set(72, 'horizontalJustification');\r\nAttdefEntitySpec.set(11, 'secondAlignmentPointX');\r\nAttdefEntitySpec.set(21, 'secondAlignmentPointY');\r\nAttdefEntitySpec.set(31, 'secondAlignmentPointZ');\r\n// AttdefSpec.set(280, '');\r\nAttdefEntitySpec.set(3, 'prompt');\r\nAttdefEntitySpec.set(2, 'tag');\r\nAttdefEntitySpec.set(70, 'flags');\r\nAttdefEntitySpec.set(74, 'verticalJustification');\r\n// AttdefSpec.set(280, '');\r\n\r\n// ATTRIB\r\nexport const AttribEntitySpec: spec_t = new Map();\r\nextend(AttribEntitySpec, EntityCommonsSpec);\r\nAttribEntitySpec.set(39, 'thickness');\r\nAttribEntitySpec.set(10, 'startPointX');\r\nAttribEntitySpec.set(20, 'startPointY');\r\nAttribEntitySpec.set(30, 'startPointZ');\r\nAttribEntitySpec.set(40, 'height');\r\nAttribEntitySpec.set(1, 'value');\r\nAttribEntitySpec.set(50, 'rotation');\r\nAttribEntitySpec.set(41, 'relativeXScaleFactor');\r\nAttribEntitySpec.set(51, 'obliqueAngle');\r\nAttribEntitySpec.set(7, 'styleName');\r\nAttribEntitySpec.set(71, 'generationFlags');\r\nAttribEntitySpec.set(72, 'horizontalJustification');\r\nAttribEntitySpec.set(11, 'alignmentPointX');\r\nAttribEntitySpec.set(21, 'alignmentPointY');\r\nAttribEntitySpec.set(31, 'alignmentPointZ');\r\n// AttribSpec.set(280, '');\r\nAttribEntitySpec.set(2, 'tag');\r\nAttribEntitySpec.set(70, 'flags');\r\nAttribEntitySpec.set(74, 'verticalJustification');\r\n// AttribSpec.set(280, '');\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { ArcEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { ArcEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Arc extends ParserBase {\r\n    arcs: ArcEntity[];\r\n    constructor() {\r\n        super('ARC');\r\n        this.arcs = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const arc: ArcEntity = {} as ArcEntity;\r\n        arc.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(ArcEntitySpec)) {\r\n                defineProperty(tk, arc, ArcEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.arcs.push(arc);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { arcs: this.arcs };\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { AttdefEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { AttdefEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Attdef extends ParserBase {\r\n    attdefs: AttdefEntity[];\r\n    constructor() {\r\n        super('ATTDEF');\r\n        this.attdefs = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const attdef: AttdefEntity = {} as AttdefEntity;\r\n        attdef.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(AttdefEntitySpec)) {\r\n                defineProperty(tk, attdef, AttdefEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.attdefs.push(attdef);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { attdefs: this.attdefs };\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { AttribEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { AttribEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Attrib extends ParserBase {\r\n    attribs: AttribEntity[];\r\n    constructor() {\r\n        super('ATTRIB');\r\n        this.attribs = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const attrib: AttribEntity = {} as AttribEntity;\r\n        attrib.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(AttribEntitySpec)) {\r\n                defineProperty(tk, attrib, AttribEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.attribs.push(attrib);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { attribs: this.attribs };\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { CircleEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { CircleEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Circle extends ParserBase {\r\n    circles: CircleEntity[];\r\n    constructor() {\r\n        super('CIRCLE');\r\n        this.circles = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const circle: CircleEntity = {} as CircleEntity;\r\n        circle.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(CircleEntitySpec)) {\r\n                defineProperty(tk, circle, CircleEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.circles.push(circle);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { circles: this.circles };\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { EllipseEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { EllipseEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Ellipse extends ParserBase {\r\n    ellipses: EllipseEntity[];\r\n    constructor() {\r\n        super('ELLIPSE');\r\n        this.ellipses = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const ellipse: EllipseEntity = {} as EllipseEntity;\r\n        ellipse.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(EllipseEntitySpec)) {\r\n                defineProperty(tk, ellipse, EllipseEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.ellipses.push(ellipse);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { ellipses: this.ellipses };\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { Face3DEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Face3DEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Face3D extends ParserBase {\r\n    face3ds: Face3DEntity[];\r\n    constructor() {\r\n        super('3DFACE');\r\n        this.face3ds = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const face: Face3DEntity = {} as Face3DEntity;\r\n        face.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(Face3DEntitySpec)) {\r\n                defineProperty(tk, face, Face3DEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.face3ds.push(face);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { face3ds: this.face3ds };\r\n    }\r\n}\r\n","import { cZero, type } from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Hatch extends ParserBase {\r\n    constructor() {\r\n        super('HATCH');\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            tk.next();\r\n        }\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n}\r\n","import { cZero, type } from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Seqend extends ParserBase {\r\n    constructor() {\r\n        super('SEQEND');\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            tk.next();\r\n        }\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\nimport { ParserBase } from '../ParserBase';\nimport { Tokenizer } from '../Tokenizer';\nimport { InsertEntity } from '../Interfaces';\nimport { InsertEntitySpec } from '../Specifications';\nimport { Attrib } from './Attrib';\nimport { Seqend } from './Seqend';\n\nexport class Insert extends ParserBase {\n    inserts: InsertEntity[];\n    attrib: Attrib;\n    seqend: Seqend;\n\n    constructor() {\n        super('INSERT');\n        this.inserts = [];\n        this.attrib = new Attrib();\n        this.seqend = new Seqend();\n    }\n\n    parse(tk: Tokenizer): void {\n        const insert: InsertEntity = {} as InsertEntity;\n        insert.subclassMarker = [];\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\n            if (tk.existInSpec(InsertEntitySpec)) {\n                defineProperty(tk, insert, InsertEntitySpec);\n            } else tk.next();\n        }\n        if (insert.attributesFollowFlag === 1) {\n            while (this.attrib.match(tk)) this.attrib.parse(tk);\n            if (this.seqend.match(tk)) this.seqend.parse(tk);\n        }\n        insert.attribs = this.attrib.attribs;\n        this.inserts.push(insert);\n    }\n\n    match(tk: Tokenizer): boolean {\n        return tk.is(type(this.name), true);\n    }\n\n    objectify() {\n        return { inserts: this.inserts };\n    }\n}\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { LineEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { LineEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Line extends ParserBase {\r\n    lines: LineEntity[];\r\n    constructor() {\r\n        super('LINE');\r\n        this.lines = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const line: LineEntity = {} as LineEntity;\r\n        line.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(LineEntitySpec)) {\r\n                defineProperty(tk, line, LineEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.lines.push(line);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { lines: this.lines };\r\n    }\r\n}\r\n","import { code, cZero, defineProperty, type } from '../Functional';\r\nimport { LWPolylineEntity, LWPolylineVertex } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { LWPolylineEntitySpec, LWPolylineVertexSpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class LWPolyline extends ParserBase {\r\n    lwPolylines: LWPolylineEntity[];\r\n    constructor() {\r\n        super('LWPOLYLINE');\r\n        this.lwPolylines = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const lwPolyline: LWPolylineEntity = {} as LWPolylineEntity;\r\n        lwPolyline.subclassMarker = [];\r\n        lwPolyline.vertices = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.is(code(10))) {\r\n                this.parseVertex(tk, lwPolyline);\r\n            } else if (tk.existInSpec(LWPolylineEntitySpec)) {\r\n                defineProperty(tk, lwPolyline, LWPolylineEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.lwPolylines.push(lwPolyline);\r\n    }\r\n\r\n    private parseVertex(tk: Tokenizer, lwPolyline: LWPolylineEntity) {\r\n        const vertex: LWPolylineVertex = {} as LWPolylineVertex;\r\n        do {\r\n            if (tk.existInSpec(LWPolylineVertexSpec)) {\r\n                defineProperty(tk, vertex, LWPolylineVertexSpec);\r\n            } else tk.next();\r\n        } while (\r\n            tk.isNotSectionOrEof() &&\r\n            tk.isNot(cZero) &&\r\n            tk.isNot(code(10))\r\n        );\r\n        lwPolyline.vertices.push(vertex);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { lwPolylines: this.lwPolylines };\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { PointEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { PointEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Point extends ParserBase {\r\n    points: PointEntity[];\r\n    constructor() {\r\n        super('POINT');\r\n        this.points = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const point: PointEntity = {} as PointEntity;\r\n        point.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(PointEntitySpec)) {\r\n                defineProperty(tk, point, PointEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.points.push(point);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { points: this.points };\r\n    }\r\n}\r\n","import {cZero, defineProperty, type} from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\nimport { VertexEntity} from \"../Interfaces\";\r\nimport { VertexEntitySpec} from \"../Specifications\";\r\n\r\nexport class Vertex extends ParserBase {\r\n    vertices: VertexEntity[];\r\n    constructor() {\r\n        super('VERTEX');\r\n        this.vertices = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const vertex: VertexEntity = {} as VertexEntity;\r\n        vertex.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(VertexEntitySpec)) {\r\n                defineProperty(tk, vertex, VertexEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.vertices.push(vertex);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { vertices: this.vertices };\r\n    }\r\n}\r\n","import {cZero, defineProperty, type} from '../Functional';\r\nimport {ParserBase} from '../ParserBase';\r\nimport {Tokenizer} from '../Tokenizer';\r\nimport {PolylineEntitySpec} from \"../Specifications\";\r\nimport {PolylineEntity} from \"../Interfaces\";\r\nimport {Vertex} from \"./Vertex\";\r\n\r\nexport class Polyline extends ParserBase {\r\n    polylines: PolylineEntity[];\r\n\r\n    constructor() {\r\n        super('POLYLINE');\r\n        this.polylines = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const polyline: PolylineEntity = {} as PolylineEntity;\r\n        polyline.subclassMarker = [];\r\n        const vertex = new Vertex();\r\n        while (tk.isNotSectionOrEof() && (tk.is(type(\"VERTEX\")) || tk.isNot(cZero))) {\r\n            if (tk.existInSpec(PolylineEntitySpec)) {\r\n                defineProperty(tk, polyline, PolylineEntitySpec);\r\n            } else if (vertex.match(tk)) {\r\n                vertex.parse(tk);\r\n            } else tk.next();\r\n        }\r\n        polyline.vertices = vertex.vertices;\r\n        this.polylines.push(polyline);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return {polylines: this.polylines};\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { SolidEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { SolidEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Solid extends ParserBase {\r\n    solids: SolidEntity[];\r\n    constructor() {\r\n        super('SOLID');\r\n        this.solids = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const solid: SolidEntity = {} as SolidEntity;\r\n        solid.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(SolidEntitySpec)) {\r\n                defineProperty(tk, solid, SolidEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.solids.push(solid);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { solids: this.solids };\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { Solid3DEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Solid3DEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Solid3D extends ParserBase {\r\n    solid3ds: Solid3DEntity[];\r\n    constructor() {\r\n        super('3DFACE');\r\n        this.solid3ds = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const solid3d: Solid3DEntity = {} as Solid3DEntity;\r\n        solid3d.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(Solid3DEntitySpec)) {\r\n                defineProperty(tk, solid3d, Solid3DEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.solid3ds.push(solid3d);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { solid3ds: this.solid3ds };\r\n    }\r\n}\r\n","import { code, cZero, defineProperty, type, value } from '../Functional';\r\nimport { SplineEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport {\r\n    SplineControlPointSpec,\r\n    SplineEntitySpec,\r\n    SplineFitPointSpec,\r\n} from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\nimport { point_t } from '../Types';\r\n\r\nexport class Spline extends ParserBase {\r\n    splines: SplineEntity[];\r\n    constructor() {\r\n        super('SPLINE');\r\n        this.splines = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const spline: SplineEntity = {} as SplineEntity;\r\n        spline.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.is(code(10))) {\r\n                this.parseControlPoints(tk, spline);\r\n            } else if (tk.is(code(11))) {\r\n                this.parseFitPoints(tk, spline);\r\n            } else if (tk.is(code(40))) {\r\n                if (!spline.knots) spline.knots = [];\r\n                spline.knots.push(value(tk.next()) as number);\r\n            } else if (tk.is(code(41))) {\r\n                if (!spline.weights) spline.weights = [];\r\n                spline.weights.push(value(tk.next()) as number);\r\n            } else if (tk.existInSpec(SplineEntitySpec)) {\r\n                defineProperty(tk, spline, SplineEntitySpec);\r\n            } else tk.unexpected('code', tk.cline);\r\n        }\r\n        this.splines.push(spline);\r\n    }\r\n\r\n    private parseControlPoints(tk: Tokenizer, spline: SplineEntity) {\r\n        if (!spline.controlPoints) spline.controlPoints = [];\r\n        const controlPoint: point_t = {} as point_t;\r\n        do {\r\n            if (tk.existInSpec(SplineControlPointSpec)) {\r\n                defineProperty(tk, controlPoint, SplineControlPointSpec);\r\n            } else tk.next();\r\n        } while (\r\n            tk.isNotSectionOrEof() &&\r\n            tk.isNot(cZero) &&\r\n            tk.isNot(code(10))\r\n        );\r\n        spline.controlPoints.push(controlPoint);\r\n    }\r\n\r\n    private parseFitPoints(tk: Tokenizer, spline: SplineEntity) {\r\n        if (!spline.fitPoints) spline.fitPoints = [];\r\n        const fitPoint: point_t = {} as point_t;\r\n        do {\r\n            if (tk.existInSpec(SplineFitPointSpec)) {\r\n                defineProperty(tk, fitPoint, SplineFitPointSpec);\r\n            } else tk.next();\r\n        } while (\r\n            tk.isNotSectionOrEof() &&\r\n            tk.isNot(cZero) &&\r\n            tk.isNot(code(11))\r\n        );\r\n        spline.fitPoints.push(fitPoint);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { splines: this.splines };\r\n    }\r\n}\r\n","import { cZero, defineProperty, type } from '../Functional';\r\nimport { TextEntity } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { TextEntitySpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class Text extends ParserBase {\r\n    texts: TextEntity[];\r\n    constructor() {\r\n        super('TEXT');\r\n        this.texts = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        const text: TextEntity = {} as TextEntity;\r\n        text.subclassMarker = [];\r\n        while (tk.isNotSectionOrEof() && tk.isNot(cZero)) {\r\n            if (tk.existInSpec(TextEntitySpec)) {\r\n                defineProperty(tk, text, TextEntitySpec);\r\n            } else tk.next();\r\n        }\r\n        this.texts.push(text);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(type(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return { texts: this.texts };\r\n    }\r\n}\r\n","import { Arc } from '../EntitiesParser/Arc';\nimport { Attdef } from '../EntitiesParser/Attdef';\nimport { Attrib } from '../EntitiesParser/Attrib';\nimport { Circle } from '../EntitiesParser/Circle';\nimport { Ellipse } from '../EntitiesParser/Ellipse';\nimport { Face3D } from '../EntitiesParser/Face3D';\nimport { Hatch } from '../EntitiesParser/Hatch';\nimport { Insert } from '../EntitiesParser/Insert';\nimport { Line } from '../EntitiesParser/Line';\nimport { LWPolyline } from '../EntitiesParser/LWPolyline';\nimport { Point } from '../EntitiesParser/Point';\nimport { Polyline } from '../EntitiesParser/Polyline';\nimport { Seqend } from '../EntitiesParser/Seqend';\nimport { Solid } from '../EntitiesParser/Solid';\nimport { Solid3D } from '../EntitiesParser/Solid3D';\nimport { Spline } from '../EntitiesParser/Spline';\nimport { Text } from '../EntitiesParser/Text';\nimport { Vertex } from '../EntitiesParser/Vertex';\nimport { block, cZero, defineProperty, endblk } from '../Functional';\nimport { Block } from '../Interfaces';\nimport { BlockSpec } from '../Specifications';\nimport { Tokenizer } from '../Tokenizer';\n\nexport class BlockParser {\n    block: Block;\n    face3d: Face3D;\n    solid3d: Solid3D;\n    arc: Arc;\n    attdef: Attdef;\n    attrib: Attrib;\n    circle: Circle;\n    ellipse: Ellipse;\n    hatch: Hatch;\n    insert: Insert;\n    line: Line;\n    lwPolyline: LWPolyline;\n    point: Point;\n    polyline: Polyline;\n    seqend: Seqend;\n    solid: Solid;\n    spline: Spline;\n    text: Text;\n    vertex: Vertex;\n\n    constructor() {\n        this.block = {} as Block;\n        this.face3d = new Face3D();\n        this.solid3d = new Solid3D();\n        this.arc = new Arc();\n        this.attdef = new Attdef();\n        this.attrib = new Attrib();\n        this.circle = new Circle();\n        this.ellipse = new Ellipse();\n        this.hatch = new Hatch();\n        this.insert = new Insert();\n        this.line = new Line();\n        this.lwPolyline = new LWPolyline();\n        this.point = new Point();\n        this.polyline = new Polyline();\n        this.seqend = new Seqend();\n        this.solid = new Solid();\n        this.spline = new Spline();\n        this.text = new Text();\n        this.vertex = new Vertex();\n    }\n\n    parse(tk: Tokenizer): void {\n        this.parseBlock(tk);\n        this.parseEntities(tk);\n    }\n\n    parseBlock(tk: Tokenizer) {\n        this.block.subclassMarker = [];\n        while (tk.isNot(cZero)) {\n            defineProperty(tk, this.block, BlockSpec);\n        }\n    }\n\n    parseEntities(tk: Tokenizer) {\n        while (tk.isNotSectionOrEof() && tk.isNot(block) && tk.isNot(endblk)) {\n            if (tk.is(cZero)) {\n                if (this.face3d.match(tk)) this.face3d.parse(tk);\n                else if (this.solid3d.match(tk)) this.solid3d.parse(tk);\n                else if (this.arc.match(tk)) this.arc.parse(tk);\n                else if (this.attdef.match(tk)) this.attdef.parse(tk);\n                else if (this.attrib.match(tk)) this.attrib.parse(tk);\n                else if (this.circle.match(tk)) this.circle.parse(tk);\n                else if (this.ellipse.match(tk)) this.ellipse.parse(tk);\n                else if (this.hatch.match(tk)) this.hatch.parse(tk);\n                else if (this.insert.match(tk)) this.insert.parse(tk);\n                else if (this.line.match(tk)) this.line.parse(tk);\n                else if (this.lwPolyline.match(tk)) this.lwPolyline.parse(tk);\n                else if (this.point.match(tk)) this.point.parse(tk);\n                else if (this.polyline.match(tk)) this.polyline.parse(tk);\n                else if (this.solid.match(tk)) this.solid.parse(tk);\n                else if (this.spline.match(tk)) this.spline.parse(tk);\n                else if (this.text.match(tk)) this.text.parse(tk);\n                else tk.next();\n            } else tk.next();\n        }\n    }\n\n    objectify(): Block {\n        return {\n            ...this.block,\n            entities: {\n                ...this.point.objectify(),\n                ...this.arc.objectify(),\n                ...this.attdef.objectify(),\n                ...this.attrib.objectify(),\n                ...this.face3d.objectify(),\n                ...this.solid3d.objectify(),\n                ...this.solid.objectify(),\n                ...this.circle.objectify(),\n                ...this.ellipse.objectify(),\n                ...this.insert.objectify(),\n                ...this.lwPolyline.objectify(),\n                ...this.polyline.objectify(),\n                ...this.line.objectify(),\n                ...this.text.objectify(),\n                ...this.spline.objectify(),\n            },\n        };\n    }\n}\n","import { block, ename } from '../Functional';\r\nimport { Block } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\nimport { BlockParser } from './BlockParser';\r\n\r\nexport class BlocksParser extends ParserBase {\r\n    blocks: Block[];\r\n    constructor() {\r\n        super('BLOCKS');\r\n        this.blocks = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotSectionOrEof()) {\r\n            if (tk.is(block, true)) {\r\n                const bp = new BlockParser();\r\n                bp.parse(tk);\r\n                this.blocks.push(bp.objectify());\r\n            }\r\n            tk.next();\r\n        }\r\n        tk.endsec();\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return {\r\n            blocks: this.blocks,\r\n        };\r\n    }\r\n}\r\n","import { defineProperty, eclass, ename } from '../Functional';\r\nimport { ClassRecord } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { ClassSpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class ClassesParser extends ParserBase {\r\n    records: ClassRecord[];\r\n    constructor() {\r\n        super('CLASSES');\r\n        this.records = [];\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotSectionOrEof()) {\r\n            if (tk.is(eclass, true)) {\r\n                this.parseClass(tk);\r\n            } else tk.unexpected('code', tk.cline);\r\n        }\r\n        tk.endsec();\r\n    }\r\n\r\n    parseClass(tk: Tokenizer) {\r\n        const clas: ClassRecord = {} as ClassRecord;\r\n        while (tk.existInSpec(ClassSpec)) {\r\n            defineProperty(tk, clas, ClassSpec);\r\n        }\r\n        this.records.push(clas);\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return {\r\n            classes: this.records,\r\n        };\r\n    }\r\n}\r\n","import { ename } from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\nimport { Vertex } from './Vertex';\r\nimport { Text } from './Text';\r\nimport { Spline } from './Spline';\r\nimport { Solid } from './Solid';\r\nimport { Seqend } from './Seqend';\r\nimport { Polyline } from './Polyline';\r\nimport { Point } from './Point';\r\nimport { LWPolyline } from './LWPolyline';\r\nimport { Line } from './Line';\r\nimport { Insert } from './Insert';\r\nimport { Hatch } from './Hatch';\r\nimport { Ellipse } from './Ellipse';\r\nimport { Circle } from './Circle';\r\nimport { Arc } from './Arc';\r\nimport { Solid3D } from './Solid3D';\r\nimport { Face3D } from './Face3D';\r\nimport { Attdef } from './Attdef';\r\nimport { Attrib } from './Attrib';\r\n\r\nexport class EntitiesParser extends ParserBase {\r\n    face3D: Face3D;\r\n    solid3D: Solid3D;\r\n    arc: Arc;\r\n    attdef: Attdef;\r\n    attrib: Attrib;\r\n    circle: Circle;\r\n    ellipse: Ellipse;\r\n    hatch: Hatch;\r\n    insert: Insert;\r\n    line: Line;\r\n    lwPolyline: LWPolyline;\r\n    point: Point;\r\n    polyline: Polyline;\r\n    seqend: Seqend;\r\n    solid: Solid;\r\n    spline: Spline;\r\n    text: Text;\r\n    vertex: Vertex;\r\n    constructor() {\r\n        super('ENTITIES');\r\n        this.face3D = new Face3D();\r\n        this.solid3D = new Solid3D();\r\n        this.arc = new Arc();\r\n        this.attdef = new Attdef();\r\n        this.attrib = new Attrib();\r\n        this.circle = new Circle();\r\n        this.ellipse = new Ellipse();\r\n        this.hatch = new Hatch();\r\n        this.insert = new Insert();\r\n        this.line = new Line();\r\n        this.lwPolyline = new LWPolyline();\r\n        this.point = new Point();\r\n        this.polyline = new Polyline();\r\n        this.seqend = new Seqend();\r\n        this.solid = new Solid();\r\n        this.spline = new Spline();\r\n        this.text = new Text();\r\n        this.vertex = new Vertex();\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotSectionOrEof()) {\r\n            if (this.face3D.match(tk)) this.face3D.parse(tk);\r\n            else if (this.solid3D.match(tk)) this.solid3D.parse(tk);\r\n            else if (this.arc.match(tk)) this.arc.parse(tk);\r\n            else if (this.attdef.match(tk)) this.attdef.parse(tk);\r\n            else if (this.attrib.match(tk)) this.attrib.parse(tk);\r\n            else if (this.circle.match(tk)) this.circle.parse(tk);\r\n            else if (this.ellipse.match(tk)) this.ellipse.parse(tk);\r\n            else if (this.hatch.match(tk)) this.hatch.parse(tk);\r\n            else if (this.insert.match(tk)) this.insert.parse(tk);\r\n            else if (this.line.match(tk)) this.line.parse(tk);\r\n            else if (this.lwPolyline.match(tk)) this.lwPolyline.parse(tk);\r\n            else if (this.point.match(tk)) this.point.parse(tk);\r\n            else if (this.polyline.match(tk)) this.polyline.parse(tk);\r\n            else if (this.solid.match(tk)) this.solid.parse(tk);\r\n            else if (this.spline.match(tk)) this.spline.parse(tk);\r\n            else if (this.text.match(tk)) this.text.parse(tk);\r\n            else tk.next();\r\n        }\r\n        tk.endsec();\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return {\r\n            entities: {\r\n                ...this.point.objectify(),\r\n                ...this.arc.objectify(),\r\n                ...this.attdef.objectify(),\r\n                ...this.attrib.objectify(),\r\n                ...this.face3D.objectify(),\r\n                ...this.solid3D.objectify(),\r\n                ...this.solid.objectify(),\r\n                ...this.circle.objectify(),\r\n                ...this.ellipse.objectify(),\r\n                ...this.insert.objectify(),\r\n                ...this.lwPolyline.objectify(),\r\n                ...this.polyline.objectify(),\r\n                ...this.line.objectify(),\r\n                ...this.text.objectify(),\r\n                ...this.spline.objectify(),\r\n            },\r\n        };\r\n    }\r\n}\r\n","import { defineProperty, ename, value, variable } from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { PointSpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\nimport { obj_t } from '../Types';\r\n\r\nexport class HeaderParser extends ParserBase {\r\n    variables: obj_t;\r\n    private currentVariable: string | null;\r\n    constructor() {\r\n        super('HEADER');\r\n        this.variables = {};\r\n        this.currentVariable = null;\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotSectionOrEof()) {\r\n            if (tk.is(variable)) {\r\n                this.currentVariable = tk.next().value;\r\n            }\r\n            if (this.currentVariable) {\r\n                if (tk.existInSpec(PointSpec)) {\r\n                    if (!this.variables[this.currentVariable])\r\n                        this.variables[this.currentVariable] = {};\r\n                    this.parsePoint(tk);\r\n                } else {\r\n                    if (this.variables[this.currentVariable])\r\n                        tk.unexpected('code', tk.cline);\r\n                    else\r\n                        this.variables[this.currentVariable] = value(tk.next());\r\n                }\r\n            } else tk.unexpected('code', tk.cline);\r\n        }\r\n        this.currentVariable = null;\r\n        tk.endsec();\r\n    }\r\n\r\n    private parsePoint(tk: Tokenizer) {\r\n        if (this.currentVariable) {\r\n            defineProperty(tk, this.variables[this.currentVariable], PointSpec);\r\n        }\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return {\r\n            header: this.variables,\r\n        };\r\n    }\r\n}\r\n","import { ename } from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class ObjectsParser extends ParserBase {\r\n    constructor() {\r\n        super('OBJECTS');\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotSectionOrEof()) {\r\n            // if (tk.is(cZero)) {\r\n            //     console.log(tk.next());\r\n            // }\r\n            tk.next();\r\n        }\r\n        tk.endsec();\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n}\r\n","import {\r\n    c102,\r\n    c102End,\r\n    cZero,\r\n    defineProperty,\r\n    ename,\r\n    last,\r\n    type,\r\n} from '../Functional';\r\nimport { RecordCommons, TableCommons } from '../Interfaces';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { TableCommonsSpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\nimport { spec_t } from '../Types';\r\n\r\nexport class TableParser<\r\n    Record extends RecordCommons,\r\n    Multi = false\r\n> extends ParserBase {\r\n    protected commonsParsed: boolean;\r\n    readonly table: TableCommons<Partial<Record>, Multi>;\r\n    readonly spec: spec_t;\r\n\r\n    constructor(name: string, spec: spec_t, multipleSubclassMarkers = false) {\r\n        super(name);\r\n        this.spec = spec;\r\n        this.commonsParsed = false;\r\n        this.table = {\r\n            records: [] as Partial<Record>[],\r\n        } as TableCommons<Partial<Record>, Multi>;\r\n        if (multipleSubclassMarkers) {\r\n            (this.table['subclassMarker'] as string[]) = [];\r\n        }\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotTable()) {\r\n            if (!this.commonsParsed) this.parseCommons(tk);\r\n            if (tk.is(c102)) this.parse102(tk);\r\n            this.parseRecords(tk);\r\n        }\r\n        tk.endtab();\r\n    }\r\n\r\n    protected parseCommons(tk: Tokenizer) {\r\n        while (tk.isNotTable() && tk.isNot(cZero)) {\r\n            if (tk.is(c102)) this.parse102(tk);\r\n            defineProperty(tk, this.table, TableCommonsSpec);\r\n        }\r\n        this.commonsParsed = true;\r\n    }\r\n\r\n    private parse102(tk: Tokenizer) {\r\n        const name = tk.next().value.replace('{', '');\r\n        const ownerDictionariesHandle: string[] = [];\r\n        while (tk.isNotTable() && tk.isNot(c102End, true)) {\r\n            ownerDictionariesHandle.push(tk.next().value);\r\n        }\r\n        this.table[name] = { ownerDictionariesHandle };\r\n    }\r\n\r\n    protected parseRecords(tk: Tokenizer) {\r\n        const records = this.table.records;\r\n        if (tk.is(type(this.name))) {\r\n            records.push({\r\n                subclassMarker: [] as string[],\r\n            } as Record);\r\n            tk.next();\r\n        }\r\n        const record = last(records);\r\n        if (record) defineProperty(tk, record, this.spec);\r\n        else tk.unexpected('code', tk.cline);\r\n    }\r\n}\r\n","import { AppIdRecord } from '../Interfaces';\r\nimport { AppIdRecordSpec } from '../Specifications';\r\nimport { TableParser } from './TableParser';\r\n\r\nexport class AppIdParser extends TableParser<AppIdRecord> {\r\n    constructor() {\r\n        super('APPID', AppIdRecordSpec);\r\n    }\r\n}\r\n","import { BlockRecord } from '../Interfaces';\r\nimport { BlockRecordSpec } from '../Specifications';\r\nimport { TableParser } from './TableParser';\r\n\r\nexport class BlockRecordParser extends TableParser<BlockRecord> {\r\n    constructor() {\r\n        super('BLOCK_RECORD', BlockRecordSpec);\r\n    }\r\n}\r\n","import { DimStyleRecord } from '../Interfaces';\r\nimport { DimStyleRecordSpec } from '../Specifications';\r\nimport { TableParser } from './TableParser';\r\n\r\nexport class DimStyleParser extends TableParser<DimStyleRecord, true> {\r\n    constructor() {\r\n        super('DIMSTYLE', DimStyleRecordSpec, true);\r\n    }\r\n}\r\n","import { LayerRecord } from '../Interfaces';\r\nimport { LayerRecordSpec } from '../Specifications';\r\nimport { TableParser } from './TableParser';\r\n\r\nexport class LayerParser extends TableParser<LayerRecord> {\r\n    constructor() {\r\n        super('LAYER', LayerRecordSpec);\r\n    }\r\n}\r\n","import { defineProperty, last, lTypeElement } from '../Functional';\r\nimport { LTypeElement, LTypeRecord } from '../Interfaces';\r\nimport { LTypeElementSpec, LTypeRecordSpec } from '../Specifications';\r\nimport { Tokenizer } from '../Tokenizer';\r\nimport { TableParser } from './TableParser';\r\n\r\nexport class LTypeParser extends TableParser<LTypeRecord> {\r\n    constructor() {\r\n        super('LTYPE', LTypeRecordSpec);\r\n    }\r\n\r\n    override parse(tk: Tokenizer): void {\r\n        while (tk.isNotTable()) {\r\n            if (!this.commonsParsed) this.parseCommons(tk);\r\n            this.parseRecords(tk);\r\n            this.parselTypeElements(tk);\r\n        }\r\n        tk.endtab();\r\n    }\r\n\r\n    private parselTypeElements(tk: Tokenizer) {\r\n        while (tk.existInSpec(LTypeElementSpec)) {\r\n            const records = this.table.records;\r\n            const record = last(records);\r\n            if (record) {\r\n                if (tk.is(lTypeElement)) {\r\n                    if (!record.elements) record.elements = [];\r\n                    record.elements.push({} as LTypeElement);\r\n                }\r\n                const elements = record.elements;\r\n                if (elements) {\r\n                    const lastElement = last(elements);\r\n                    if (lastElement)\r\n                        defineProperty(tk, lastElement, LTypeElementSpec);\r\n                    else tk.unexpected('code', tk.cline);\r\n                } else tk.unexpected('code', tk.cline);\r\n            } else tk.unexpected('code', tk.cline);\r\n        }\r\n    }\r\n}\r\n","import { StyleRecord } from '../Interfaces';\r\nimport { StyleRecordSpec } from '../Specifications';\r\nimport { TableParser } from './TableParser';\r\n\r\nexport class StyleParser extends TableParser<StyleRecord> {\r\n    constructor() {\r\n        super('STYLE', StyleRecordSpec);\r\n    }\r\n}\r\n","import { ename } from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class UcsParser extends ParserBase {\r\n    constructor() {\r\n        super('UCS');\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotTable()) {\r\n            tk.next();\r\n        }\r\n        tk.endtab();\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n}\r\n","import { ename } from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class ViewParser extends ParserBase {\r\n    constructor() {\r\n        super('VIEW');\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotTable()) {\r\n            tk.next();\r\n        }\r\n        tk.endtab();\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n}\r\n","import { ename } from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\n\r\nexport class VPortParser extends ParserBase {\r\n    constructor() {\r\n        super('VPORT');\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotTable()) {\r\n            tk.next();\r\n        }\r\n        tk.endtab();\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n}\r\n","import { ename, table } from '../Functional';\r\nimport { ParserBase } from '../ParserBase';\r\nimport { Tokenizer } from '../Tokenizer';\r\nimport { AppIdParser } from './AppIdParser';\r\nimport { BlockRecordParser } from './BlockRecordParser';\r\nimport { DimStyleParser } from './DimStyleParser';\r\nimport { LayerParser } from './LayerParser';\r\nimport { LTypeParser } from './LTypeParser';\r\nimport { StyleParser } from './StyleParser';\r\nimport { UcsParser } from './UcsParser';\r\nimport { ViewParser } from './ViewParser';\r\nimport { VPortParser } from './VPortParser';\r\n\r\nexport class TablesParser extends ParserBase {\r\n    appId: AppIdParser;\r\n    blockRecord: BlockRecordParser;\r\n    dimStyle: DimStyleParser;\r\n    layer: LayerParser;\r\n    lType: LTypeParser;\r\n    style: StyleParser;\r\n    ucs: UcsParser;\r\n    view: ViewParser;\r\n    vPort: VPortParser;\r\n    constructor() {\r\n        super('TABLES');\r\n        this.appId = new AppIdParser();\r\n        this.blockRecord = new BlockRecordParser();\r\n        this.dimStyle = new DimStyleParser();\r\n        this.layer = new LayerParser();\r\n        this.lType = new LTypeParser();\r\n        this.style = new StyleParser();\r\n        this.ucs = new UcsParser();\r\n        this.view = new ViewParser();\r\n        this.vPort = new VPortParser();\r\n    }\r\n\r\n    parse(tk: Tokenizer): void {\r\n        while (tk.isNotSectionOrEof()) {\r\n            if (tk.is(table, true)) {\r\n                if (this.appId.match(tk)) this.appId.parse(tk);\r\n                else if (this.blockRecord.match(tk)) this.blockRecord.parse(tk);\r\n                else if (this.dimStyle.match(tk)) this.dimStyle.parse(tk);\r\n                else if (this.layer.match(tk)) this.layer.parse(tk);\r\n                else if (this.lType.match(tk)) this.lType.parse(tk);\r\n                else if (this.style.match(tk)) this.style.parse(tk);\r\n                else if (this.ucs.match(tk)) this.ucs.parse(tk);\r\n                else if (this.view.match(tk)) this.view.parse(tk);\r\n                else if (this.vPort.match(tk)) this.vPort.parse(tk);\r\n                else tk.unexpected('code', tk.cline);\r\n            } else tk.unexpected('code', tk.cline);\r\n        }\r\n        tk.endsec();\r\n    }\r\n\r\n    match(tk: Tokenizer): boolean {\r\n        return tk.is(ename(this.name), true);\r\n    }\r\n\r\n    objectify() {\r\n        return {\r\n            tables: {\r\n                appId: this.appId.table,\r\n                blockRecord: this.blockRecord.table,\r\n                dimStyle: this.dimStyle.table,\r\n                layer: this.layer.table,\r\n                lType: this.lType.table,\r\n                style: this.style.table,\r\n            },\r\n        };\r\n    }\r\n}\r\n","import {\r\n    endsec,\r\n    endtab,\r\n    eof,\r\n    expected,\r\n    lines,\r\n    section,\r\n    table,\r\n    tokens,\r\n    unexpected,\r\n} from './Functional';\r\nimport { matcher_t, spec_t, tokens_t, token_t } from './Types';\r\n\r\nexport class Tokenizer {\r\n    readonly tokens: tokens_t = [];\r\n    error?: string;\r\n    private index = 0;\r\n\r\n    get cline(): number {\r\n        return this.index * 2 + 1; // The line number of the code.\r\n    }\r\n\r\n    get vline(): number {\r\n        return this.index * 2 + 2; // The line number of the value.\r\n    }\r\n\r\n    constructor(content: string) {\r\n        const _lines = lines(content);\r\n        const _tokensOrError = tokens(_lines);\r\n        if (Array.isArray(_tokensOrError)) this.tokens = _tokensOrError;\r\n        else this.error = _tokensOrError;\r\n    }\r\n\r\n    hasNext(): boolean {\r\n        return this.index < this.tokens.length && !this.hasError();\r\n    }\r\n\r\n    next(): token_t {\r\n        return this.tokens[this.index++];\r\n    }\r\n\r\n    peek(): token_t {\r\n        return this.tokens[this.index];\r\n    }\r\n\r\n    advance(step = 1): void {\r\n        this.index += step;\r\n    }\r\n\r\n    is(matcher: matcher_t, advance = false): boolean {\r\n        const res = matcher(this.peek());\r\n        if (res && advance) this.advance();\r\n        return res;\r\n    }\r\n\r\n    isNot(matcher: matcher_t, advance = false): boolean {\r\n        return !this.is(matcher, advance);\r\n    }\r\n\r\n    isNotSectionOrEof(): boolean {\r\n        return (\r\n            this.hasNext() &&\r\n            !this.is(section) &&\r\n            !this.is(endsec) &&\r\n            !this.is(eof)\r\n        );\r\n    }\r\n\r\n    isNotTable(): boolean {\r\n        return this.isNotSectionOrEof() && !this.is(table) && !this.is(endtab);\r\n    }\r\n\r\n    existInSpec(spec: spec_t): boolean {\r\n        return spec.has(this.peek().code);\r\n    }\r\n\r\n    hasError(): boolean {\r\n        return this.error !== undefined;\r\n    }\r\n\r\n    expected(value: string, line: number): void {\r\n        if (!this.hasError()) this.error = expected(value, line);\r\n    }\r\n\r\n    unexpected(value: string, line: number): void {\r\n        if (!this.hasError()) this.error = unexpected(value, line);\r\n    }\r\n\r\n    endsec(): void {\r\n        if (!this.hasNext() || !this.is(endsec, true))\r\n            this.expected('ENDSEC', this.cline);\r\n    }\r\n\r\n    endtab(): void {\r\n        if (!this.hasNext() || !this.is(endtab, true))\r\n            this.expected('ENDTAB', this.cline);\r\n    }\r\n}\r\n","import { endsec, eof, section } from './Functional';\r\n\r\nimport { BlocksParser } from './BlocksParser/BlocksParser';\r\nimport { ClassesParser } from './ClassesParser/ClassesParser';\r\nimport { DxfGlobalObject } from './Interfaces';\r\nimport { EntitiesParser } from './EntitiesParser/EntitiesParser';\r\nimport { HeaderParser } from './HeaderParser/HeaderParser';\r\nimport { ObjectsParser } from './ObjectsParser/ObjectsParser';\r\nimport { TablesParser } from './TablesParser/TablesParser';\r\nimport { Tokenizer } from './Tokenizer';\r\n\r\nexport class Parser {\r\n    readonly header: HeaderParser;\r\n    readonly classes: ClassesParser;\r\n    readonly tables: TablesParser;\r\n    readonly blocks: BlocksParser;\r\n    readonly entities: EntitiesParser;\r\n    readonly objects: ObjectsParser;\r\n    constructor() {\r\n        this.header = new HeaderParser();\r\n        this.classes = new ClassesParser();\r\n        this.tables = new TablesParser();\r\n        this.blocks = new BlocksParser();\r\n        this.entities = new EntitiesParser();\r\n        this.objects = new ObjectsParser();\r\n    }\r\n\r\n    parse(content: string): Promise<DxfGlobalObject> {\r\n        return new Promise((resolve, reject) => {\r\n            const tk = new Tokenizer(content);\r\n            while (tk.hasNext()) {\r\n                if (tk.is(eof)) break;\r\n                if (tk.is(section, true)) {\r\n                    if (this.header.match(tk)) this.header.parse(tk);\r\n                    else if (this.classes.match(tk)) this.classes.parse(tk);\r\n                    else if (this.tables.match(tk)) this.tables.parse(tk);\r\n                    else if (this.blocks.match(tk)) this.blocks.parse(tk);\r\n                    else if (this.entities.match(tk)) this.entities.parse(tk);\r\n                    else if (this.objects.match(tk)) this.objects.parse(tk);\r\n                    else while (!tk.is(endsec, true)) tk.next();\r\n                } else tk.expected('SECTION', tk.vline);\r\n                if (!tk.hasNext()) tk.expected('EOF', tk.vline);\r\n            }\r\n            if (tk.hasError()) reject(tk.error);\r\n            resolve({\r\n                ...this.header.objectify(),\r\n                ...this.classes.objectify(),\r\n                ...this.tables.objectify(),\r\n                ...this.blocks.objectify(),\r\n                ...this.entities.objectify(),\r\n            });\r\n        });\r\n    }\r\n}\r\n"],"mappings":"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","names":["code","value","lines","tokens","token","token","value","value"]}