Worgmap
Worgmap is a utility included with Worgle.
Origin Story
The creation of Worgmap started off with a crazy idea: what could happen if Worgle was able to generate small SQLite databases from programs written in Worgle? Worgmap is an attempt at answering this question.
Worgmap is a small commandline utility designed to navigate a generated database from worgle and extract meaningful bits of information. At the time of writing, this consists of a simple "get" interface, and some very initial code for an HTML and dot code exporter.
Worgmap will continue to grow based on the needs of software and tools written in using Worgle.
Sample Usage
In the worgle codebase, a database can be generated by
running make db
. This will produce a SQLite database
called a.db
, which is what worgmap reads by default.
Worgmap can list all the tangled files with the
filelist
command.
$ worgmap get filelist
worgle.c
worgle.h
worgle_private.h
sorg.c
db.c
db.h
More specific file information on say, db.c can be retrieved
with ffile
.
$ worgmap get ffile
id = 7
filename = db.c
top = 5 (db-top)
next_file = 15
program id = 2
Amongst the information, this tells us that the top code block is called "db-top". The program ID is an identifier that allows separately tangled program to exist in one database.
The hierarchy code block structure can be printed for
db.c via the top block using tree
. The program id (2) must
be supplied. Trees are a great way to get the idea a
program as it is seen in code rather than in how it is
presented in the markup.
$ worgmap get tree db-top 2
static_db_functions
functions
schemas
inserts
The functions
codeblock is used to store all the
functions. It is composed of multiple block segments. Each
reference can be found using blkref
.
$ worgmap get blkref functions 2
db.org:40
db.org:55
db.org:73
db.org:386
db.org:417
db.org:489
db.org:585
db.org:669
db.org:757
db.org:782
db.org:842
Tools like blkref
can help mitigate spaghetti-code logic
that can sometimes appear in literate programming
environments that allow code to be declared out of order
and/or in completely different places.
home | index