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

Issues
  • 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 gopherclass 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 pavlovdenis 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 gopherclass 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 336 May 10, 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 110 Apr 27, 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 828 May 20, 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

δΌšζœ‰ηŒ«ηš„ 0 Jan 13, 2022
: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 20 Mar 6, 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Γ© 183 May 17, 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
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

Jovany Leandro G.C 31 Feb 12, 2022
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'

null 4 Apr 22, 2022
Split text files into gzip files with x lines

hakgzsplit split lines of text into multiple gzip files

Luke Stephens (hakluke) 7 Apr 29, 2022
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

Ali Bala 438 Apr 18, 2022
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

Igor Novgorodov 29 May 14, 2022
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

Joe Walnes 16.2k May 17, 2022
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

Tom Lieber 32 May 3, 2022
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

Luca Sepe 97 May 10, 2022
Helper library to transform TMX tile maps into a simpler format for Ebiten

Ebitmx Ebitmx is a super simple parser to help render TMX maps when using Ebiten for your games. Right now is super limited to XML and CSV data struct

RaΓΊl 18 Mar 30, 2022
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

Michael Alexander 901 May 12, 2022
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

Jack Lindamood 342 Apr 28, 2022
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

Jens Neuse 63 Apr 25, 2022
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.

Michael Alexander 903 May 16, 2022
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

SequentialRead.com 5 Mar 6, 2022
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

Hunter 4 Jul 18, 2021
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

Deqode 7 May 10, 2022
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

Alex Nichol 4 Dec 19, 2021
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

Joe Kralicky 2 Jan 10, 2022
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

null 2.3k May 2, 2022