{"id":34775923,"url":"https://github.com/msinger/nlconv","last_synced_at":"2026-05-21T13:36:28.947Z","repository":{"id":63157103,"uuid":"548614328","full_name":"msinger/nlconv","owner":"msinger","description":"Netlist converter","archived":false,"fork":false,"pushed_at":"2025-11-09T21:03:25.000Z","size":188,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-09T23:15:43.186Z","etag":null,"topics":["electronics","game-boy","gameboy","reverse-engineering"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/msinger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-10-09T23:06:11.000Z","updated_at":"2025-11-09T21:03:29.000Z","dependencies_parsed_at":"2024-06-14T02:42:43.150Z","dependency_job_id":"55eaca84-7533-484f-9f76-691a2a7b4269","html_url":"https://github.com/msinger/nlconv","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/msinger/nlconv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msinger%2Fnlconv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msinger%2Fnlconv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msinger%2Fnlconv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msinger%2Fnlconv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msinger","download_url":"https://codeload.github.com/msinger/nlconv/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msinger%2Fnlconv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28024480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electronics","game-boy","gameboy","reverse-engineering"],"created_at":"2025-12-25T08:16:49.406Z","updated_at":"2026-05-21T13:36:28.928Z","avatar_url":"https://github.com/msinger.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"Netlist converter\n=================\n\nCSharp application for converting a custom netlist format to HTML files or PNG images. It was made for documenting\nall the cells and traces on the Game Boy chip DMG-CPU B.\n\nRead [INSTALL](INSTALL) for build/install instructions.\n\nThis HTML file was generated by this tool:\u003cbr\u003e\n[DMG-CPU B Netlist](http://iceboy.a-singer.de/doc/dmg_cpu_b_netlist.html)\n\nPNGs generated by this tool can be seen in this browser map of the chip:\u003cbr\u003e\n[DMG-CPU B Map](http://iceboy.a-singer.de/dmg_cpu_b_map/)\u003cbr\u003e\n\n\nUsage\n-----\n\nGenerate HTML file containing all types, cells and wires:\n```\nnlconv --html \u003cinput.nl \u003eoutput.html\n```\n\nGenerate PNG image containing all cells:\n```\nnlconv --png-cells \u003cinput.nl \u003eoutput.png\n```\n\nGenerate PNG image containing all wires:\n```\nnlconv --png-wires \u003cinput.nl \u003eoutput.png\n```\n\nGenerate PNG image containing all labels:\n```\nnlconv --png-labels \u003cinput.nl \u003eoutput.png\n```\n\nGenerate PNG image containing a floorplan:\n```\nnlconv --png-floor \u003cinput.nl \u003eoutput.png\n```\n\nGenerate PNG image containing everything:\n```\nnlconv --png \u003cinput.nl \u003eoutput.png\n```\n\nGenerate Java Script containing all coordinates to be used by the [map](https://github.com/msinger/dmg_cpu_b_map):\n```\nnlconv --js \u003cinput.nl \u003eoutput.js\n```\n\nGenerate SystemVerilog code:\n```\nnlconv --sv \u003cinput.nl \u003eoutput.sv\n```\n\nThe option `--cond \u003cconditional\u003e` can be used to specify conditional tags that control which `TYPE`, `CELL` or `WIRE`\ndefinitions are actually processed. The type 'foo' in this example will only be defined when `--cond moo` was added on\ncommand line:\n```\nTYPE:moo foo:black a b c ...\n```\nConditionals can be inverted with a `-` (minus) symbol. In this example, the type 'foo' will only be defined when\n`--cond moo` was **not** added on command line:\n```\nTYPE:-moo foo:black a b c ...\n```\n\nInput format\n------------\n\nAll keywords are case-insensitive. User defined names are case-sensitive.\nThe netlist that gets fed into STDIN of this application can contain type, signal, cell, wire, label and\ncategory definitions in any order.\n\n\n### Type definition\n\nThe `TYPE` keyword is used to define cell types. Those cell types can then be used for defining instances of cells using\nthe `CELL` keyword.\n\n```\nTYPE[:\u003cconditional\u003e] \u003ctype-name\u003e[:\u003ccolor\u003e] \u003cport-name\u003e[:\u003cport-dir\u003e]\n                                           [\u003cport-name\u003e[:\u003cport-dir\u003e]...]\n                     [@\u003ccell-coordinates\u003e]\n                     [\u003cport-name\u003e@\u003cport-coordinates\u003e...]\n                     [\"\u003cdescription-string\u003e\" [DOC \"\u003cdocumentation-url\u003e\"]];\n```\n\n\u003cdl\u003e\n  \u003cdt\u003e\u0026lt;type-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eUnique name of the cell type, like \u003ccode\u003enand2\u003c/code\u003e for example.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;color\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Color that will be used when drawing cell instances of this type.\n    Can be one of: \u003ccode\u003eBLACK\u003c/code\u003e, \u003ccode\u003eBLUE\u003c/code\u003e, \u003ccode\u003eCYAN\u003c/code\u003e, \u003ccode\u003eGREEN\u003c/code\u003e, \u003ccode\u003eLIME\u003c/code\u003e,\n    \u003ccode\u003eMAGENTA\u003c/code\u003e, \u003ccode\u003eORANGE\u003c/code\u003e, \u003ccode\u003ePURPLE\u003c/code\u003e, \u003ccode\u003eRED\u003c/code\u003e, \u003ccode\u003eTEAL\u003c/code\u003e,\n    \u003ccode\u003eYELLOW\u003c/code\u003e, \u003ccode\u003ePINK\u003c/code\u003e, \u003ccode\u003eNAVY\u003c/code\u003e, \u003ccode\u003eBROWN\u003c/code\u003e, \u003ccode\u003eGRAY\u003c/code\u003e or\n    \u003ccode\u003eWHITE\u003c/code\u003e. Defaults to \u003ccode\u003eBLACK\u003c/code\u003e if not given.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;port-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Name of a port that cells of this type have. Can occur multiple times. When followed by a space or\n    colon, it defines the port itself. When followed by a \u003ccode\u003e@\u003c/code\u003e, it specifies the coordinates of that port.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;port-dir\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Port direction. Can be one of: \u003ccode\u003eIN\u003c/code\u003e, \u003ccode\u003eOUT\u003c/code\u003e, \u003ccode\u003eTRI\u003c/code\u003e, \u003ccode\u003eINOUT\u003c/code\u003e,\n    \u003ccode\u003eOUT0\u003c/code\u003e, \u003ccode\u003eOUT1\u003c/code\u003e or \u003ccode\u003eNC\u003c/code\u003e. Defaults to \u003ccode\u003eIN\u003c/code\u003e.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;cell-coordinates\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Two two-dimensional vectors, describing the bounding box of a cell of this type.\n    This is used to convert the absolute \u003cb\u003e\u0026lt;port-coordinates\u0026gt;\u003c/b\u003e to coordinates relative to the\n    center of this bounding box, so they can be used as default coordinates for all cells of this type that\n    do not have them explicitly specified.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;port-coordinates\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    One or two two-dimensional vectors, describing either a point or line, where this port is located. Those port\n    coordinates will be used for all cells of this type that do not have port coordinates explicitely specified\n    alongside their own \u003ccode\u003eCELL\u003c/code\u003e definition.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;description-string\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eA string in double quotes that describes the function of cells of this type.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;documentation-url\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eAn URL in double quotes that contains more detailed information about cells of this type.\u003c/dd\u003e\n\u003c/dl\u003e\n\n\n### Signal definition\n\nThe `SIGNAL` keyword is used to define wire signal classes. Those wire signal classes can then be used for defining\ninstances of wires using the `WIRE` keyword.\n\n```\nSIGNAL \u003csignal-name\u003e[:\u003ccolor\u003e] [\"\u003cdescription-string\u003e\"];\n```\n\n\u003cdl\u003e\n  \u003cdt\u003e\u0026lt;signal-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eUnique name of the wire signal class, like \u003ccode\u003eclock\u003c/code\u003e for example.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;color\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Color that will be used when drawing wire instances of this signal class.\n    Can be one of: \u003ccode\u003eBLACK\u003c/code\u003e, \u003ccode\u003eBLUE\u003c/code\u003e, \u003ccode\u003eCYAN\u003c/code\u003e, \u003ccode\u003eGREEN\u003c/code\u003e, \u003ccode\u003eLIME\u003c/code\u003e,\n    \u003ccode\u003eMAGENTA\u003c/code\u003e, \u003ccode\u003eORANGE\u003c/code\u003e, \u003ccode\u003ePURPLE\u003c/code\u003e, \u003ccode\u003eRED\u003c/code\u003e, \u003ccode\u003eTEAL\u003c/code\u003e,\n    \u003ccode\u003eYELLOW\u003c/code\u003e, \u003ccode\u003ePINK\u003c/code\u003e, \u003ccode\u003eNAVY\u003c/code\u003e, \u003ccode\u003eBROWN\u003c/code\u003e, \u003ccode\u003eGRAY\u003c/code\u003e or\n    \u003ccode\u003eWHITE\u003c/code\u003e. Defaults to \u003ccode\u003eBLACK\u003c/code\u003e if not given.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;description-string\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eA string in double quotes that describes this wire signal class.\u003c/dd\u003e\n\u003c/dl\u003e\n\n\n### Cell definition\n\nThe `CELL` keyword is used to define cell instances.\n\n```\nCELL[:\u003cconditional\u003e] \u003ccell-name\u003e:\u003ctype-name\u003e [\u003corientation\u003e[,FLIP]]\n                     [@\u003ccell-coordinates\u003e] [\u003cport-name\u003e@\u003cport-coordinates\u003e...]\n                     [\u003cflags\u003e...] [-\u003e \u003ccategory\u003e] [\"\u003cdescription-string\u003e\"]\n                     [ATTRIB \"\u003cattrib-assignments\u003e\"...];\n```\n\n\u003cdl\u003e\n  \u003cdt\u003e\u0026lt;cell-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eUnique name of the cell instance.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;type-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eCell type being instanciated.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;orientation\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Defines the clock-wise rotation of the cell. Can be one of: \u003ccode\u003eROT0\u003c/code\u003e, \u003ccode\u003eROT90\u003c/code\u003e,\n    \u003ccode\u003eROT180\u003c/code\u003e or \u003ccode\u003eROT270\u003c/code\u003e. If not given, then orientation will be undefined and the\n    cell may not be drawn in images. Can be appended with \u003ccode\u003e,FLIP\u003c/code\u003e, which means that the cell is\n    flipped horizontally (reflected along the central vertical axis) before the rotation is applied.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;cell-coordinates\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eTwo two-dimensional vectors, describing the bounding box of the cell instance.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;port-coordinates\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eOne or two two-dimensional vectors, describing either a point or line, where this port is located.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;flags\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Any combination of the following flags may be applied to the cell:\n    \u003cul\u003e\n      \u003cli\u003e\u003ccode\u003eSPARE\u003c/code\u003e:   This is a spare cell that has no relevant function.\u003c/li\u003e\n      \u003cli\u003e\u003ccode\u003eVIRTUAL\u003c/code\u003e: This cell does not actually exist in the circuit. May just be used to please the\n                                electrical rules checker.\u003c/li\u003e\n      \u003cli\u003e\u003ccode\u003eCOMP\u003c/code\u003e:    This cell may not be drawn in the schematics, because it just provides a complement\n                                clock for some latches or flip-flops.\u003c/li\u003e\n      \u003cli\u003e\u003ccode\u003eTRIVIAL\u003c/code\u003e: This cell is not drawn in the schematics, because it is basically just wiring.\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;category\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    The optional category describes to which part of the circuit this cell belongs to. It is used when drawing the\n    floorplan. Categories can be defined with the \u003ccode\u003eCATEGORY\u003c/code\u003e keyword.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;description-string\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eA string in double quotes that describes the function of this cell instance within the circuit.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;attrib-assignments\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    One or more strings representing custom attributes linked to this cell. Right now, this is only used when\n    generating SystemVerilog code for adding custom module parameters. \u003ccode\u003e\"sv:param=123\"\u003c/code\u003e would be\n    translated to \u003ccode\u003e.param(123)\u003c/code\u003e and added inside \u003ccode\u003e#( ... )\u003c/code\u003e alongside the automatically\n    generated wire length parameters.\n  \u003c/dd\u003e\n\u003c/dl\u003e\n\nCells can have alias names. This is useful for example when a cell got renamed at some point. Then it can still\nhave an alias with its old name, so it can still be found in the HTML document when someone searches for it by\nthat old name. Aliases are specified with separate statements that must come somewhere after the cell definition:\n\n```\nALIAS CELL \u003calias\u003e... -\u003e \u003ccell-name\u003e;\n```\n\n\u003cdl\u003e\n  \u003cdt\u003e\u0026lt;alias\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eOne or more alias names for the cell. Each of them must be unique within the cell namespace.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;cell-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eName of the cell instance.\u003c/dd\u003e\n\u003c/dl\u003e\n\n\n### Wire definition\n\nThe `WIRE` keyword is used to define connections between cell ports.\n\n```\nWIRE[:\u003cconditional\u003e] \u003cwire-name\u003e[:\u003csignal-class\u003e] [UNCHECKED] \u003csource-ports\u003e...\n                     [-\u003e \u003cdrain-ports\u003e...] [@\u003cwire-coordinates\u003e...] [\"\u003cdescription-string\u003e\"];\n```\n\n\u003cdl\u003e\n  \u003cdt\u003e\u0026lt;wire-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eUnique name of the wire.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;signal-class\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Optional wire signal class. Used for drawing wires in different colors. Wire signal classes can be defined with the\n    \u003ccode\u003eSIGNAL\u003c/code\u003e keyword.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;source-ports\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    One or more source ports in the form \u003ccode\u003e\u0026lt;cell\u0026gt;.\u0026lt;port\u0026gt;[:\u0026lt;conditional\u0026gt;]\u003c/code\u003e that are driving\n    this wire. Only ports with the following directions are allowed as source ports: \u003ccode\u003eOUT\u003c/code\u003e, \u003ccode\u003eTRI\u003c/code\u003e,\n    \u003ccode\u003eINOUT\u003c/code\u003e, \u003ccode\u003eOUT0\u003c/code\u003e or \u003ccode\u003eOUT1\u003c/code\u003e. If direction is \u003ccode\u003eOUT\u003c/code\u003e, then the wire must\n    have only one source port. If one port has the direction \u003ccode\u003eOUT0\u003c/code\u003e or \u003ccode\u003eOUT1\u003c/code\u003e, then all source\n    ports must have the same direction. Only \u003ccode\u003eTRI\u003c/code\u003e and \u003ccode\u003eINOUT\u003c/code\u003e ports can be intermixed. Placing\n    \u003ccode\u003eUNCHECKED\u003c/code\u003e before the first source port allows having multiple ports with \u003ccode\u003eOUT\u003c/code\u003e direction.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;drain-ports\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Zero or more input ports in the form \u003ccode\u003e\u0026lt;cell\u0026gt;.\u0026lt;port\u0026gt;[:\u0026lt;conditional\u0026gt;]\u003c/code\u003e that are\n    receiving the signal from this wire. Only ports with direction \u003ccode\u003eIN\u003c/code\u003e are allowed as drain ports.\n    \u003ccode\u003eINOUT\u003c/code\u003e ports are technically inputs too, but they have to be listed under source ports, because they\n    can also drive the wire.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;wire-coordinates\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eList of two-dimensional vectors, describing a continuous strip of lines fitting the shape of the wire.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;description-string\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eA string in double quotes that describes the signal carried by this wire within the circuit.\u003c/dd\u003e\n\u003c/dl\u003e\n\nWires can have alias names. This is useful for example when a wire got renamed at some point. Then it can still\nhave an alias with its old name, so it can still be found in the HTML document when someone searches for it by\nthat old name. Aliases are specified with separate statements that must come somewhere after the wire definition:\n\n```\nALIAS WIRE \u003calias\u003e... -\u003e \u003cwire-name\u003e;\n```\n\n\u003cdl\u003e\n  \u003cdt\u003e\u0026lt;alias\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eOne or more alias names for the wire. Each of them must be unique within the wire namespace.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;wire-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eName of the wire instance.\u003c/dd\u003e\n\u003c/dl\u003e\n\n\n### Label definition\n\nThe `LABEL` keyword is used to define custom labels placed when generating the labels image.\n\n```\nLABEL \"\u003ctext\u003e\"[:\u003ccolor\u003e] [\u003corientation\u003e[,FLIP]]\n      @\u003clabel-coordinates\u003e [\u003calignment\u003e];\n```\n\n\u003cdl\u003e\n  \u003cdt\u003e\u0026lt;text\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eText in double quotes. This is the actual label text that will be drawn.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;color\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Color that will be used when drawing this label.\n    Can be one of: \u003ccode\u003eBLACK\u003c/code\u003e, \u003ccode\u003eBLUE\u003c/code\u003e, \u003ccode\u003eCYAN\u003c/code\u003e, \u003ccode\u003eGREEN\u003c/code\u003e, \u003ccode\u003eLIME\u003c/code\u003e,\n    \u003ccode\u003eMAGENTA\u003c/code\u003e, \u003ccode\u003eORANGE\u003c/code\u003e, \u003ccode\u003ePURPLE\u003c/code\u003e, \u003ccode\u003eRED\u003c/code\u003e, \u003ccode\u003eTEAL\u003c/code\u003e,\n    \u003ccode\u003eYELLOW\u003c/code\u003e, \u003ccode\u003ePINK\u003c/code\u003e, \u003ccode\u003eNAVY\u003c/code\u003e, \u003ccode\u003eBROWN\u003c/code\u003e, \u003ccode\u003eGRAY\u003c/code\u003e or\n    \u003ccode\u003eWHITE\u003c/code\u003e. Defaults to \u003ccode\u003eBLACK\u003c/code\u003e if not given.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;orientation\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Defines the clock-wise rotation of the label. Can be one of: \u003ccode\u003eROT0\u003c/code\u003e, \u003ccode\u003eROT90\u003c/code\u003e,\n    \u003ccode\u003eROT180\u003c/code\u003e or \u003ccode\u003eROT270\u003c/code\u003e. Can be appended with \u003ccode\u003e,FLIP\u003c/code\u003e, which means that the text\n    will be flipped horizontally (reflected along the central vertical axis) before the rotation is applied.\n    If not given, defaults to \u003ccode\u003eROT0\u003c/code\u003e, not flipped.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;label-coordinates\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eA two-dimensional vector, describing the location where this label gets drawn.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;alignment\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Defines the alignment of the label to the location described by \u0026lt;label-coordinates\u0026gt;. Can be one of:\n    \u003ccode\u003eCENTER\u003c/code\u003e, \u003ccode\u003eTOP-LEFT\u003c/code\u003e, \u003ccode\u003eTOP-CENTER\u003c/code\u003e, \u003ccode\u003eTOP-RIGHT\u003c/code\u003e,\n    \u003ccode\u003eCENTER-LEFT\u003c/code\u003e, \u003ccode\u003eCENTER-RIGHT\u003c/code\u003e, \u003ccode\u003eBOTTOM-LEFT\u003c/code\u003e, \u003ccode\u003eBOTTOM-CENTER\u003c/code\u003e\n    or \u003ccode\u003eBOTTOM-RIGHT\u003c/code\u003e. Defaults to \u003ccode\u003eCENTER\u003c/code\u003e if not given.\n  \u003c/dd\u003e\n\u003c/dl\u003e\n\n\n### Category definition\n\nThe `CATEGORY` keyword is used to define cell categories. A cell can optionally have a category assigned to it,\nwhich is used for determining its color when drawing the floorplan.\n\n```\nCATEGORY \u003ccategory-name\u003e[:\u003ccolor\u003e] [\"\u003cdescription-string\u003e\"];\n```\n\n\u003cdl\u003e\n  \u003cdt\u003e\u0026lt;category-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eUnique name of the category.\u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;color\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Color that will be used when drawing cells of this category in the floorplan.\n    Can be one of: \u003ccode\u003eBLACK\u003c/code\u003e, \u003ccode\u003eBLUE\u003c/code\u003e, \u003ccode\u003eCYAN\u003c/code\u003e, \u003ccode\u003eGREEN\u003c/code\u003e, \u003ccode\u003eLIME\u003c/code\u003e,\n    \u003ccode\u003eMAGENTA\u003c/code\u003e, \u003ccode\u003eORANGE\u003c/code\u003e, \u003ccode\u003ePURPLE\u003c/code\u003e, \u003ccode\u003eRED\u003c/code\u003e, \u003ccode\u003eTEAL\u003c/code\u003e,\n    \u003ccode\u003eYELLOW\u003c/code\u003e, \u003ccode\u003ePINK\u003c/code\u003e, \u003ccode\u003eNAVY\u003c/code\u003e, \u003ccode\u003eBROWN\u003c/code\u003e, \u003ccode\u003eGRAY\u003c/code\u003e or\n    \u003ccode\u003eWHITE\u003c/code\u003e. If no color is given, then it is not drawn in the floorplan.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;description-string\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003eA string in double quotes that describes this category.\u003c/dd\u003e\n\u003c/dl\u003e\n\n\n### String definition\n\nThe `DEFINE` keyword is used to define strings that can influence the output file.\n\n```\nDEFINE \u003cstring-name\u003e [\"\u003cstring-value\u003e\"...];\n```\nor\n```\nDEFINE \u003cstring-name\u003e \u003cfloat-value\u003e;\n```\n\n\u003cdl\u003e\n  \u003cdt\u003e\u0026lt;string-name\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Name of the string. Can be any valid identifier name, but only the following have an effect:\n    \u003cul\u003e\n      \u003cli\u003e\u003ccode\u003edefault-doc-url\u003c/code\u003e: Provides a default value for the documentation URL of type definitions.\n                                        Use \u003ccode\u003e%t\u003c/code\u003e as substitution for the name of the type.\u003c/li\u003e\n      \u003cli\u003e\u003ccode\u003emap-url\u003c/code\u003e:         The URL to the Leaflet map which is used in generated HTML code.\u003c/li\u003e\n      \u003cli\u003e\u003ccode\u003ehtml-title\u003c/code\u003e:      Title and headline of generated HTML file.\u003c/li\u003e\n      \u003cli\u003e\u003ccode\u003ehtml-navbar\u003c/code\u003e:     Code inserted as navigation bar in generated HTML file.\u003c/li\u003e\n      \u003cli\u003e\u003ccode\u003ehtml-footer\u003c/code\u003e:     Code inserted as footer in generated HTML file.\u003c/li\u003e\n      \u003cli\u003e\u003ccode\u003epng-scale\u003c/code\u003e:       Scaling of lines and crosses in generated PNG file.\u003c/li\u003e\n      \u003cli\u003e\u003ccode\u003ejs-wire-scale\u003c/code\u003e:   Scaling of wire width for collision detection in generated JavaScript file.\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;string-value\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Zero or more string literals containing the value that is assigned to the string definition. All given string literals\n    get concatenated. Zero string literals are equivalent to the empty string.\n  \u003c/dd\u003e\n\n  \u003cdt\u003e\u0026lt;float-value\u0026gt;\u003c/dt\u003e\n  \u003cdd\u003e\n    Float literal gets converted to a string. Or in other words, if second argument is a float value, then the\n    quotes can be omitted: \u003ccode\u003e1.23\u003c/code\u003e is equal to \u003ccode\u003e\"1.23\"\u003c/code\u003e.\n  \u003c/dd\u003e\n\u003c/dl\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsinger%2Fnlconv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsinger%2Fnlconv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsinger%2Fnlconv/lists"}