# 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