{"id":15908619,"url":"https://github.com/capjamesg/lispdot","last_synced_at":"2026-03-18T17:11:05.395Z","repository":{"id":104873223,"uuid":"539464831","full_name":"capjamesg/lispDOT","owner":"capjamesg","description":"A DOT DSL implemented in Common Lisp.","archived":false,"fork":false,"pushed_at":"2022-10-16T19:30:54.000Z","size":30,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-28T19:16:39.439Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit-0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/capjamesg.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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-21T11:59:39.000Z","updated_at":"2022-09-21T15:27:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"356aeb73-7ca7-4d9b-9c74-f1ee4ab98731","html_url":"https://github.com/capjamesg/lispDOT","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/capjamesg%2FlispDOT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/capjamesg%2FlispDOT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/capjamesg%2FlispDOT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/capjamesg%2FlispDOT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/capjamesg","download_url":"https://codeload.github.com/capjamesg/lispDOT/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246916740,"owners_count":20854511,"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","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":[],"created_at":"2024-10-06T14:22:49.912Z","updated_at":"2026-01-16T00:45:58.241Z","avatar_url":"https://github.com/capjamesg.png","language":"Common Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# lispDOT\n\nLispDOT is a DOT Document Description Language implemented in Common Lisp.\n\nDOT is a syntax used to describe the contents of a graph. Graph visualisation tools like [Graphviz](https://gitlab.com/graphviz/graphviz) interpret the contents of a DOT file and render a graph based on its contents.\n\n## Getting Started\n\nTo use lispDOT, first load the `dot.lisp` file into your project:\n\n    (load \"dot.lisp\")\n\n### Creating a Graph\n\nTo create a graph, use the `(makegraph)` function.\n\nThis function accepts the following values:\n\n    (graphtype name nodes metainformation)\n\n- `graphtype`: the type of the graph, either \"graph\" (undirected) or \"digraph\" (directed).\n- `name`: the name of the graph.\n- `nodes`: a `(list)` object that contains either `(udc)` or `(dc)` items (see below for a description of these items).\n- `metainformation`: any `(meta)` nodes that describe a value for a graph.\n\n#### Nodes in Directed Graphs\n\nDirected graphs are graphs where each connection describes the flow between two objects.\n\nTo define a node in a directed graph, use the following syntax:\n\n    (dc (l \"Item 1\" \"Item 2\"))\n\nThis creates a directed connection between \"Item 1\" and \"Item 2\".\n\nThis connection creates the following DOT code:\n\n    \"Item 1\" -\u003e \"Item 2\";\n\n#### Nodes in Undirected Graphs\n\nUndirected graphs are graphs where each connection describes a relationship between two objects.\n\nTo define a node in an undirected graph, use the following syntax:\n\n    (udc (l \"Item 1\" \"Item 2\"))\n\nThis creates an undirected connection between \"Item 1\" and \"Item 2\".\n\nThis connection translates into the following DOT code:\n\n    \"Item 1\" -- \"Item 2\";\n\n### Graph Meta Information\n\nYou may want to specify meta information about a graph (i.e. the graph size).\n\nYou can do this by specifying meta objects after your `nodes` list.\n\nHere's an example piece of meta information:\n\n    (meta \"size\" \"5,5\")\n\nThis creates a meta attribute. Here is the DOT code translation:\n\n    meta [size=\"5,5\"]\n\n### Example\n\nHere is an example of a simple undirected graph called \"apples\":\n\n(princ\n    (makegraph\n        \"graph\"\n        \"apples\"\n        (l\n            (udc (l \"Apples\" \"Pink Lady\"))\n            (udc (l \"Apples\" \"Gala\"))))\n\nThis graph defines three nodes:\n\n- Apples\n- Pink Lady\n- Gala\n\n`Pink Lady` and `Gala` are both connected to the `Apples` node.\n\nThe graph is printed to the console using the Lisp `(printc)` function.\n\nHere is the DOT file version of this graph:\n\ngraph apples { \n        \"Apples\" -- \"Pink Lady\"; \n        \"Apples\" -- \"Gala\"; \n}\n\nHere is an image representation of the graph, generated using [Graphviz Visual Editor](http://magjac.com/graphviz-visual-editor/):\n\n![A graph with three nodes. The \"Apples\" node is connected to both the \"Pink Lady\" and the \"Gala\" nodes.](graph.png)\n\n## License\n\nThis project is licensed under an [MIT License](LICENSE).\n\n## Contributors\n\n- capjamesg","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcapjamesg%2Flispdot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcapjamesg%2Flispdot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcapjamesg%2Flispdot/lists"}