Basic ascii-to-svg renderer (built out of ivanceras/elm-examples/elm-bot-lines).
The svg output is aligned to a grid, with all text in the system-default monospace
font.
Automatically optimizes svg output using SVGO, since the renderer produces inefficient SVG.
Use either locally (executable version) or with the API, which allows for ASCII diagrams embedded directly into markdown and rendered with no build step.
npm install --global asciitosvg-grid
$ cat input.txt
.-------------.
| Hello World |
| .----+
|_______/
$ asciitosvg < input.txt > output.svg
output.svg:
Are you really using Puppeteer to open a webpage running a modified version of an ancient Elm example app rather than trying to extract the core convert function from the app's source?
This is just an executable I created to replace going to this page every time I wanted to tweak my legacy ascii diagrams. If you want an ascii-to-svg renderer, you should probably use svgbob (by the same author as elm-bot-lines), which comes with its own executable:
cargo install --git https://github.com/ivanceras/svgbob/ --path svgbob_cli
$ encodeascii -f raw -m < demo/input.txt
![ascii diagram rendered with asciitosvg](https://asciitosvg.now.sh/render/raw/\
\.\-\-\-\-\-\-\-\-\-\-\-\-\-\.\
\|\ \H\e\l\l\o\ \W\o\r\l\d\ \|\
\|\ \ \ \ \ \ \ \ \.\-\-\-\-\+\
\|\_\_\_\_\_\_\_\/)
If I were a pigeon and a glass of chalces and a black bag and we stepped outside and the crowd was going on. The snow was the last wood and he spoke. I was sure I thought he was going to sleep a little now and he could afford tomorrow while he hated.
![ascii diagram rendered with asciitosvg](https://asciitosvg.now.sh/render/raw/\
\.\-\-\-\-\-\-\-\-\-\-\-\-\-\.\
\|\ \H\e\l\l\o\ \W\o\r\l\d\ \|\
\|\ \ \ \ \ \ \ \ \.\-\-\-\-\+\
\|\_\_\_\_\_\_\_\/)
↓
If I were a pigeon and a glass of chalces and a black bag and we stepped outside and the crowd was going on. The snow was the last wood and he spoke. I was sure I thought he was going to sleep a little now and he could afford tomorrow while he hated.
filler text generated using Break the Block
-
fix unicode format for ASCII encoding/rendering (not sure whether the problem is in ./bin/encodeascii or render.js)
-
add to README under API Version: a description of render.js/md img embed functionality (copy about running the lambdas and embedding diagrams in markdown img src)
-
write "Usage" text (USAGE) in render.js
-
put a html landing page at
/
— include a link to/edit
-
create editor.js with routing
/edit/[\\s\\S]*
: serves textarea, encoding options, and encoder result- redirect
/edit
to/edit/
- if there is data provided after the slash, pre-load the textarea with that
- the web app should be written using hyperapp
- the form should POST to a [bash] lambda at
/encode/[\\s\\S]+
running encodeascii and returning the result
- redirect
(should leverage routes
in now.json
: route /
and /edit
to their respective html pages (using static lambda) and /render/[\\s\\S]+
to render.js)
-
change server.js to render.js and change routing to
/render/[\\s\\S]+
- update encodeascii and README
-
change encodeascii default host to asciitosvg.now.sh
-
npm publish 0.1.1 at a good milestone
-
in asciitosvg-web, automatically uglify and inline main.js into index.html @ head (using [uglify 3] and html-inline)
-
accept color option (to make the lines and text white, instead of black, for example)
-
add support for using svgbob instead of asciitosvg for renderer
-
submit <asciitosvg.now.sh> to [awesome-zeit]
-
disable Now deployment automatic aliasing to asciitosvg.now.sh; it should only be able to be set manually (so a failed deploy doesn't automatically break images everywhere)