Skip to main content

A marble diagram generator

Project description

dooble

https://img.shields.io/pypi/v/dooble.svg https://img.shields.io/travis/MainRo/dooble.svg

Dooble is a marble diagram generator from text. It eases the documentation of ReactiveX standard and custom operators, in a consitent way.

Installation

pip install dooble

A sphinx plugin is also available:

pip install sphinxcontrib-dooble

Usage

The text grammar allows to easilly define observables and operators. The map operator with an input observable and an output observable is described the following way:

--1--2--3--4-->
[ map(i: i*2) ]
--2--4--6--8-->

save this text in a file named map.txt and then render it to an image:

dooble --input map.txt --output map.png

The generated image looks like this:

examples/map.png

Higher order observables can also be documented easilly:

--a-b-c---d-e-f-->
[     window     ]
--+-------+------>
          +d-e-f-|
  +a-b-c-|

save this text in a file named window.txt and then render it to an image:

dooble --input window.txt --output window.png

The generated image looks like this:

examples/window.png

For operators that take several observables as input, it is possible to label them:

--1--2--3--*
         a-7-8-|
[   catch(a)   ]
--1--2--3--7-8-|

save this text in a file named catch.txt and then render it to an image:

dooble --input catch.txt --output catch.png

The generated image looks like this:

examples/catch.png

Full grammar

  • Each text line represents either an observable, or an operator

  • Observables are defined with dash lines

  • If an Observable starts with a letter, this letter is considered as a label

  • Each character represent a time span

  • Character | indicates an observable completion

  • Character * indicates an observable error

  • Character > indicates an observable continutation

  • The + character is used to define anchors of higher order observables

  • operators start with a [ and end with a ]

The full grammar is the following one (in tatsu pseudo ebnf syntax):

@@grammar::dooble

start = { layer } $ ;

layer
=
| obs:observable
| op:operator
;

observable = {skipspan}* [prefix] {lifetime}* completion ;
operator = '[' description ']' ;

prefix = '+' | label ;

label = /[a-z]/ ;

lifetime
=
| ts:timespan
| item:item
;

completion = /[>|*]/ ;

skipspan = ' ' ;
timespan = '-' ;
item = /[a-zA-Z0-9+.,]+/ ;

description = /[a-zA-Z0-9,:+*() <>_]+/ ;

History

0.1.0 (2019-02-08)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dooble-1.0.0.tar.gz (13.3 kB view details)

Uploaded Source

File details

Details for the file dooble-1.0.0.tar.gz.

File metadata

  • Download URL: dooble-1.0.0.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.3

File hashes

Hashes for dooble-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e02ae9236da43e3d8c3018860a0e83bf09f48711c24d49178f0f5ebf0952bc2b
MD5 eec66bedd80b6616df08a428af9d19b3
BLAKE2b-256 0cba7e20d3639a223c9d3dee45f7b6432f790be59c3cf52a31a8837b8bd68a4c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page