{
  "definitions": [
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "readTemplateContract",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        },
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "readTemplateContract",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 17,
      "name": "quotedItems",
      "signature": "const quotedItems = function quotedItems(value: string): string[] {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "leadingNumber",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        },
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "objectKeys",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        },
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "quotedItems",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        },
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "quotedItems",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "tools/core/coordinators/checklist.coordinator.ts",
          "name": "contractOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-coordinators-checklist-coordinator-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/coordinators/checklist.coordinator.ts",
            "label": "tools/core/coordinators/checklist.coordinator.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/coordinators/checklist.coordinator.ts.md",
            "ref": "anatomy:file-coordination-tools-core-coordinators-checklist-coordinator-ts"
          }
        }
      ],
      "exported": true,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 108,
      "name": "readTemplateContract",
      "signature": "export const readTemplateContract = function readTemplateContract(source: string): TemplateContract {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "cellsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        },
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "unticked",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "tools/core/coordinators/checklist.coordinator.ts",
          "name": "rowMarkersOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-coordinators-checklist-coordinator-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/coordinators/checklist.coordinator.ts",
            "label": "tools/core/coordinators/checklist.coordinator.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/coordinators/checklist.coordinator.ts.md",
            "ref": "anatomy:file-coordination-tools-core-coordinators-checklist-coordinator-ts"
          }
        }
      ],
      "exported": true,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 92,
      "name": "readRowMarkers",
      "signature": "export const readRowMarkers = function readRowMarkers(source: string): string[] {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "isNumeric",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "readTemplateContract",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        }
      ],
      "exported": false,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 28,
      "name": "leadingNumber",
      "signature": "const leadingNumber = function leadingNumber(value: string): number {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "leadingNumber",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 24,
      "name": "isNumeric",
      "signature": "const isNumeric = function isNumeric(char: string): boolean {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "readTemplateContract",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 57,
      "name": "objectKeys",
      "signature": "const objectKeys = function objectKeys(source: string, marker: string): string[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "readRowMarkers",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 72,
      "name": "cellsOf",
      "signature": "const cellsOf = function cellsOf(line: string): string[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "tools/core/readers/template.reader.ts",
          "name": "readRowMarkers",
          "source": {
            "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
            "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/template.reader.ts",
            "label": "tools/core/readers/template.reader.ts",
            "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.md",
            "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 76,
      "name": "unticked",
      "signature": "const unticked = function unticked(cell: string): string {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 3,
      "name": "GRAPH_MARKER",
      "signature": "const GRAPH_MARKER = \"graph_4d: {\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 5,
      "name": "ASSIGN",
      "signature": "const ASSIGN = \"SET \";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 7,
      "name": "SEPARATOR",
      "signature": "const SEPARATOR = \" = \";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 9,
      "name": "QUOTE",
      "signature": "const QUOTE = '\"';"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 11,
      "name": "LIST_CLOSE",
      "signature": "const LIST_CLOSE = \"]\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 13,
      "name": "RENDERED_COLUMN",
      "signature": "const RENDERED_COLUMN = \"rendered as\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 15,
      "name": "MARKER_EDGE",
      "signature": "const MARKER_EDGE = \"*\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 18,
      "name": "parts",
      "signature": "const parts = value.split(QUOTE);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 19,
      "name": "stop",
      "signature": "const stop = parts.findIndex((part, index) => index % 2 === 0 && part.includes(LIST_CLOSE));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 20,
      "name": "bounded",
      "signature": "const bounded = stop === -1 ? parts : parts.slice(0, stop + 1);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 38,
      "name": "parsed",
      "signature": "const parsed = Number(value.slice(start, end));"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 42,
      "name": "assignmentOf",
      "signature": "const assignmentOf = function assignmentOf(raw: string): [string, string] | null {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 43,
      "name": "line",
      "signature": "const line = raw.trim();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 45,
      "name": "name",
      "signature": "const name = line.startsWith(ASSIGN) && at !== -1 ? line.slice(ASSIGN.length, at).trim() : \"\";"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 49,
      "name": "assignmentsIn",
      "signature": "const assignmentsIn = function assignmentsIn(source: string): Map<string, string> {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 50,
      "name": "entries",
      "signature": "const entries = source"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 58,
      "name": "at",
      "signature": "const at = source.indexOf(marker);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 63,
      "name": "body",
      "signature": "const body = source.slice(at + marker.length);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 64,
      "name": "close",
      "signature": "const close = body.indexOf(\"}\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 77,
      "name": "start",
      "signature": "let start = 0;"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 88,
      "name": "isRowMarker",
      "signature": "const isRowMarker = function isRowMarker(marker: string): boolean {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 93,
      "name": "lines",
      "signature": "const lines = source.split(\"\\n\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 94,
      "name": "header",
      "signature": "const header = lines.findIndex((line) => cellsOf(line).includes(RENDERED_COLUMN));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 99,
      "name": "column",
      "signature": "const column = cellsOf(lines[header] ?? \"\").indexOf(RENDERED_COLUMN);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 100,
      "name": "rows",
      "signature": "const rows = lines.slice(header + 2).map((line) => line.trim());"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 101,
      "name": "end",
      "signature": "const end = rows.findIndex((line) => !line.startsWith(\"|\"));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 109,
      "name": "assignments",
      "signature": "const assignments = assignmentsIn(source);"
    }
  ],
  "document": null,
  "findings": [],
  "generated": false,
  "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-template-reader-ts",
  "language": "typescript",
  "layer": "processing",
  "name": "template.reader.ts",
  "path": "tools/core/readers/template.reader.ts",
  "ref": "anatomy:file-coordination-tools-core-readers-template-reader-ts",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/coordination#folder-coordination-tools-core-readers",
          "json": "https://banes-lab.com/json/anatomy/coordination/folder-coordination-tools-core-readers",
          "label": "tools/core/readers",
          "markdown": "https://banes-lab.com/anatomy/coordination/folder-coordination-tools-core-readers.md",
          "ref": "chapter:/anatomy/coordination#folder-coordination-tools-core-readers"
        }
      ],
      "relation": "contained-in"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-coordinators-checklist-coordinator-ts",
          "json": "https://banes-lab.com/json/source/coordination/tools/core/coordinators/checklist.coordinator.ts",
          "label": "tools/core/coordinators/checklist.coordinator.ts",
          "markdown": "https://banes-lab.com/source/coordination/tools/core/coordinators/checklist.coordinator.ts.md",
          "ref": "anatomy:file-coordination-tools-core-coordinators-checklist-coordinator-ts"
        }
      ],
      "relation": "used-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/coordination#folder-coordination-tools-core-coordinators",
          "json": "https://banes-lab.com/json/anatomy/coordination/folder-coordination-tools-core-coordinators",
          "label": "tools/core/coordinators",
          "markdown": "https://banes-lab.com/anatomy/coordination/folder-coordination-tools-core-coordinators.md",
          "ref": "chapter:/anatomy/coordination#folder-coordination-tools-core-coordinators"
        },
        {
          "href": "https://banes-lab.com/anatomy/coordination#folder-coordination-tools-core-readers",
          "json": "https://banes-lab.com/json/anatomy/coordination/folder-coordination-tools-core-readers",
          "label": "tools/core/readers",
          "markdown": "https://banes-lab.com/anatomy/coordination/folder-coordination-tools-core-readers.md",
          "ref": "chapter:/anatomy/coordination#folder-coordination-tools-core-readers"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "slots": {
    "concern": "reader",
    "subject": "template",
    "variant": null
  },
  "stats": {
    "bytes": 3905,
    "callable": 11,
    "definitions": 35,
    "edges": 7,
    "exported": 8,
    "files": 1,
    "findings": {},
    "flows": {
      "leaf": 5,
      "relay": 3,
      "isolated": 27
    },
    "lines": {
      "blank": 23,
      "code": 94,
      "total": 117
    }
  },
  "summary": "94 lines of code and 35 definitions.",
  "text": "https://banes-lab.com/source/coordination/tools/core/readers/template.reader.ts.txt",
  "tree": "coordination",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-token-reader-ts",
      "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/token.reader.ts",
      "label": "tools/core/readers/token.reader.ts",
      "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/token.reader.ts.md",
      "ref": "anatomy:file-coordination-tools-core-readers-token-reader-ts"
    },
    "previous": {
      "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-readers-source-reader-ts",
      "json": "https://banes-lab.com/json/source/coordination/tools/core/readers/source.reader.ts",
      "label": "tools/core/readers/source.reader.ts",
      "markdown": "https://banes-lab.com/source/coordination/tools/core/readers/source.reader.ts.md",
      "ref": "anatomy:file-coordination-tools-core-readers-source-reader-ts"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/source/coordination/tools/core/readers",
    "label": "tools/core/readers",
    "markdown": "https://banes-lab.com/api/source/coordination/tools/core/readers.md",
    "ref": "api:source/coordination/tools/core/readers"
  }
}
