# Map A wardley mapping tool: Write some text, get a diagram ## Building Open the project in Xcode and press the run button (or `make build`) ## Testing Open the project in Xcode and press the test button (or `make test`) ## Formatting and Linting In order to format and lint the code, the project provides a Makefile that uses [swift-format][swift-format]. * To format: `make format` * To lint: `make lint` These commands run on every `.swift` file in the directory. ## Language Reference ### Nodes Nodes should be of the format `Name (x,y)`. The name can contain spaces, and the `x`/`y` can be integers or decimals. All dimensions go from 0 - 100, so 50 means 50% of the way through. eg. - `Node (1,2)` - `My Cool Node (1.0,2.0)` - `A (1, 2.0)` ### Edges Edges connect two nodes. They use the format `Node -- Node` (line only) or `Node -> Node` (with arrowhead). eg. - `Node -- My Cool Node` - `A -> Node` ### Blockers You can place a blocker in front of a node by using `[Blocker] Node`. eg. - `[Blocker] My Cool Node` - `[Blocker] A` ### Evolution You can draw evolution arrows by using `[Evolution] Node +x` or `[Evolution] Node -x`. eg. - `[Evolution] My Cool Node -10` - `[Evolution] A +15` ### Modifying the axes If you need more space for one of the four segments you can use `[I] x`, `[II] x`, or `[III] x`. eg. - `[I] 15` - `[II] 35.5` - `[III] 80` The parser doesn't enforce position, so if you put axis iii before axis i, you'll get some rendering issues. ### Groups You can group nodes together by using `[Group] NodeA, NodeB...`. eg. - `[Group] Tinker, Tailor, Soldier` - `[Group] Two Words, Three Words Here` ### Notes You can add notes `[Note] (x, y) Text` where x and y are numbers, and Text is any text with spaces or `\n`. - `[Note] (30, 45) Here we want to call out an explanation or context.` - `[Note] (90, 25) We're close to the edge \n so we can multiline it.` [swift-format]: https://github.com/apple/swift-format.git ## Statement of Former LLM Use At a point during construction of this app, I begun LLM use. Features that were built with this assistance are some of the preference panes, sharing, and tests. Since then I've stopped using LLMs and don't plan to use them, as such I am trying to remove the llm contributions and replace them from a nonslop base. As I no longer use macOS as my main OS, this will be a bit of a slow process.