Turn asterisk-indented text lines into mind maps

Overview

Crumbs

Turn asterisk-indented text lines into mind maps.

Organize your notes in a hierarchical tree structure, using a simple text editor.

  • an asterisk at the beginning of the line means level 1
  • two asterisk at the beginning of the line means level 2
  • and so on...

How crumbs works?

Example (without icons)

Create a simple text file - let's say meeting-ideas.txt:

* main idea
** topic 1
*** sub topic
*** sub topic
**** sub topic
**** sub topic
** topic 2
*** sub topic

To create the PNG image you can

  • "inject" the text file to crumbs and then the result to dot redirecting the output to the file meeting-ideas.png - (I love the Linux command pipelines! 😍 )
cat meeting-ideas.txt | crumbs | dot -Tpng > meeting-ideas.png
  • or as alternative you can specify your text file to crumbs directly:
crumbs meeting-ideas.txt | dot -Tpng > meeting-ideas.png

Here the output:


Example (with icons)

You can, eventually, add images too (one for text line) using a special syntax: [[path/to/image.png]]

  • if you specify the flag -image-path you can write [[image.png]] instead of [[path/to/image.png]]
  • if you specify the flag -image-type you can write [[path/to/image]] instead of [[path/to/image.png]]
  • therefore if you specify both you can write [[image]] instead of [[path/to/image.png]]
* [[./png/bulb.png]] main idea
** topic 1
*** sub topic
*** sub topic
**** [[./png/comments-alt.png]] sub topic
**** sub topic
** [[./png/map-signs.png]] topic 2
*** sub topic

then as usual, let's feed graphviz with crumbs:

crumbs meeting-ideas-with-icons.txt | dot -Tpng > meeting-ideas-with-icons.png

and the output is...

Example (with HTML)

You can enrich the output with a little bit of style, adding some HTML tag.

The following tags are understood:

<b>, <br/>, <i>, <o>, <s>, <sub>, <sup>, <u>
* main idea
** <u>topic 1</u>
*** sub <sub>topic</sub>
*** sub <i>topic</i>
**** <s>sub topic</s>
**** sub <o>topic</o>
** topic <b>2</b>
*** sub <sup>topic</sup>

then as usual, let's feed graphviz with crumbs:

crumbs meeting-ideas-with-html.txt | dot -Tpng > meeting-ideas-with-html.png

and the output is...


Installation Steps

In order to use the crumbs command, compile it using the following command:

go get -u github.com/lucasepe/crumbs/crumbs

This will create the crumbs executable under your $GOPATH/bin directory.

Ready-To-Use Releases

If you don't want to compile the sourcecode yourself, Here you can find the tool already compiled for:

  • MacOS
  • Linux
  • Windows

CHANGE LOG

πŸ‘‰ Record of all notable changes made to a project

You might also like...
Split text files into gzip files with x lines

hakgzsplit split lines of text into multiple gzip files

GO - Asterisk AMI Interface

GAMI GO - Asterisk AMI Interface communicate with the Asterisk AMI, Actions and Events. Example connecting to Asterisk and Send Action get Events. pac

Package GoEagi provides some fundamental functionalities that work with Asterisk's EAGI

GoEagi Package GoEagi provides some fundamental functionalities that work with Asterisk's EAGI. It has the following features: Audio Streaming Google'

A minimalist Go PDF writer in 1982 lines. Draws text, images and shapes. Helps understand the PDF format. Used in production for reports.
A minimalist Go PDF writer in 1982 lines. Draws text, images and shapes. Helps understand the PDF format. Used in production for reports.

one-file-pdf - A minimalist PDF generator in 2K lines and 1 file The main idea behind this project was: "How small can I make a PDF generator for it

Read the text of memes, then inject that text into the image as searchable metadata.
Read the text of memes, then inject that text into the image as searchable metadata.

Make Meme Text Searchable I have an extensive set of memes I've been collecting since the early days of Flickr. #icanhascheeseburger It's a pain in th

Turn Nginx logs into Prometheus metrics

Nginx log parser and Prometheus exporter This service parses incoming syslog messages from Nginx sent over UDP and converts them into Prometheus metri

Turn any program that uses STDIN/STDOUT into a WebSocket server. Like inetd, but for WebSockets.

websocketd websocketd is a small command-line tool that will wrap an existing command-line interface program, and allow it to be accessed via a WebSoc

turn a directory into a GUI, slash example of VNC-based GUI

dirgui @rsnous on Jan 11, 2021: "idea: filesystem-GUI adapter, where a directory turns into a form, executable files inside that directory turn into

yml2dot - Turn YAML into beautiful Graph
yml2dot - Turn YAML into beautiful Graph

yml2dot - Turn YAML into beautiful Graph Use Cases Visualize your YAML files as Graph Generate additional info from your source code

Turn shell commands into web services
Turn shell commands into web services

webify Turn functions and commands into web services For a real world example, see turning a Python function into a web service. Overview webify is a

A CLI to turn Go's benchmark output into pictures

benchdraw benchdraw allows you to make easy to read picture plots from data in Go's benchmark format, implemented in pure Go. Benchdraw does not try t

GoPrisma - A Go wrapper for prisma to turn databases into GraphQL APIs using Go.

GoPrisma - a Go wrapper for the Prisma Engines What's this? Introspect a database and use it as a GraphQL API using Go. Supported Databases: SQLite Po

webify - Turn functions and commands into web services
webify - Turn functions and commands into web services

webify is a very basic CGI server which forwards all requests to a single script. A design goal is to be as zero-config as possible.

Turn any key/value index into a high-performance two-dimensional spatial index
Turn any key/value index into a high-performance two-dimensional spatial index

modular-spatial-index For the demo that this animated gif was generated from

Turn a Spotify playlist into a YouTube playlist
Turn a Spotify playlist into a YouTube playlist

spotlist Turn a Spotify playlist into a YouTube playlist How to use: Download latest version from Releases. (Quick Links: Mac/Windows) Run it Enter Sp

A plugin that turn hashicorp vault into blockchain wallet.
A plugin that turn hashicorp vault into blockchain wallet.

dq-vault - Hashicorp vault BTC/ETH plugin This vault plugin stores a user's mnemonic inside vault in an encrypted manner. The plugin uses this stored

Turn a grid of frames (stored in a single image) into a video file
Turn a grid of frames (stored in a single image) into a video file

reel2vid Convert a video that is encoded into one large image as many images sid

Totem - A Go library that can turn a single gRPC stream into bidirectional unary gRPC servers

Totem is a Go library that can turn a single gRPC stream into bidirectional unar

Turn your Go program(s) into an appliance running on the Raspberry Pi 3 or 4 (or on amd64 PCs!)

Overview gokrazy packs your Go application(s) into an SD card image for the Raspberry Pi 3 or 4 which β€” aside from the Linux kernel and proprietary Ra

Comments
  • Improve argument parsing

    Improve argument parsing

    crumbs idea.txt is trying to read from stdin, not file idea.txt. I changed to read file if file is specified, or to read from standard input if not specified.

    opened by nonzerofloat 3
  • Variable text width

    Variable text width

    Hey guys, is there any easy way to change the width of text in the nodes? I usually end up with pretty large text blocks at the end nodes of mindmap and the text is formatted so that each line is just a few words. I'd like to make them a bit wider. Could you maybe give me some direction where to look if you remember the project good enough?

    opened by renderdender 2
  • Line with no leading stars causes nil pointer dereference

    Line with no leading stars causes nil pointer dereference

    If line has no leading stars, it panics with nil pointer dereference at parser.go:69.

    I can add the code below to skip the line. But It's one of possible solutions.

    // parser.go:ParseLines
    		// count depth
    		childDepth := depth(el)
    
    		// case: no leading 'stars'
    		if childDepth == 0 {
    			// skip the line
    			continue
    		}
    
    bug 
    opened by nonzerofloat 1
Releases(v0.3.0)
Owner
Luca Sepe
𝕋𝕖𝕔𝕙 - Golang | C | [Java]. Design multi-platform pipelines, web scrapers, data ingestion tools.
Luca Sepe
A collection of (ANSI-sequence aware) text reflow operations & algorithms

reflow A collection of ANSI-aware methods and io.Writers helping you to transform blocks of text. This means you can still style your terminal output

Christian Muehlhaeuser 408 Dec 29, 2022
API-first image file text search πŸ”

API-first image file text search ??

John Forstmeier 2 Dec 11, 2021
Merge multiple pprof profile files into a single file

pprof-merge Merges multiple pprof profile files into one. Installation $ go get github.com/rakyll/pprof-merge Usage $ pprof-merge profile1.data profi

Jaana Dogan 115 Dec 15, 2022
A cross-platform tool to convert images into ascii art and print them on the console

A cross-platform tool to convert images into ascii art and print them on the console

Zoraiz Hassan 1.1k Dec 30, 2022
A Go package converting a monochrome 1-bit bitmap image into a set of vector paths.

go-bmppath Overview Package bmppath converts a monochrome 1-bit bitmap image into a set of vector paths. Note that this package is by no means a sophi

tunabay 2 Mar 22, 2022
This command line converts .html file into .html with images embed.

embed-html This command line converts .html file into .html with images embed. Install > go get github.com/gonejack/embed-html Usage > embed-html *.ht

δΌšζœ‰ηŒ«ηš„ 1 Oct 6, 2022
Turn a heterogeneous pile of text docs into a single web page with good search.

Codex Codex turns an unstructured pile of heterogeneous documents into a single interactive web document. Your input documents maybe in markdown, TeX,

Amir Kadivar 4 Jan 2, 2022
Optimal implementation of ordered maps for Golang - ie maps that remember the order in which keys were inserted.

Goland Ordered Maps Same as regular maps, but also remembers the order in which keys were inserted, akin to Python's collections.OrderedDicts. It offe

Jean RougΓ© 257 Jan 3, 2023
:evergreen_tree: Parses indented code and returns a tree structure.

codetree Parses indented code (Python, Pug, Stylus, Pixy, codetree, etc.) and returns a tree structure. Installation go get github.com/aerogo/codetree

Aero 22 Sep 27, 2022