This project provides a Python script (mindmapconverter.py) to facilitate the conversion between Freeplane/Freemind XML mind map files (.mm) and PlantUML mind map definitions (.puml). This enables users to leverage Freeplane/Freemind for visual mind map creation and then convert these maps into a PlantUML format suitable for embedding in documentation, especially in environments that support PlantUML rendering (e.g., GitLab, Confluence, Markdown viewers with Kroki integration).
- Convert Freeplane/Freemind (
.mm) to PlantUML (.puml). - Convert PlantUML (
.puml) to Freeplane/Freemind (.mm). - Supports both standard PlantUML syntax (
* Node) and legacy underscore syntax (*_ Node). - Command-line interface with proper argument parsing.
- Python 3.x
pip install mindmapconverter- Clone the repository:
git clone https://github.com/your-username/mindmapconverter.git cd mindmapconverter - Install the package:
Or for development (editable mode):
pip install .pip install -e .
The script automatically detects the conversion direction based on the input file's extension.
python mindmapconverter.py input_file [-o output_file]To convert a Freeplane/Freemind .mm file to PlantUML:
python mindmapconverter.py input_file.mm -o output_file.pumlExample:
python mindmapconverter.py my_mindmap.mm -o my_mindmap.pumlIf -o is omitted, the output is printed to stdout:
python mindmapconverter.py my_mindmap.mm > my_mindmap.pumlTo convert a PlantUML .puml file to Freeplane/Freemind XML:
python mindmapconverter.py input_file.puml -o output_file.mmExample:
python mindmapconverter.py my_mindmap.puml -o my_mindmap.mmThe converter supports the standard PlantUML MindMap syntax using asterisks for hierarchy:
@startmindmap
* Root
** Child 1
** Child 2
*** Grandchild
@endmindmapIt also supports the legacy syntax with underscores (*_ Node).
To run the included unit tests:
python3 test_mindmapconverter.pyContributions are welcome! If you have suggestions for improvements, bug reports, or want to add new features, please feel free to:
- Fork the repository.
- Create a new branch (
git checkout -b feature/YourFeature). - Make your changes and add tests.
- Commit your changes (
git commit -m 'Add some feature'). - Push to the branch (
git push origin feature/YourFeature). - Open a Pull Request.
This project is licensed under the MIT License.