Skip to content

Commit

Permalink
strange how instable the results of asciiart are
Browse files Browse the repository at this point in the history
  • Loading branch information
Ducasse committed Aug 8, 2024
1 parent 86c4db1 commit cf3b6be
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 0 deletions.
25 changes: 25 additions & 0 deletions Chapters/BasicsOnExecution/figures/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# https://www.gnu.org/software/make/manual/html_node/
# https://crates.io/crates/svgbob_cli
# https://github.com/ivanceras/svgbob?tab=readme-ov-file

# Find all the -ascii.txt files we want to compile
# Note the single quotes around the * expressions. The shell will incorrectly expand these otherwise, but we want to send the * directly to the find command.
SRC_DIRS := .
BUILD_DIR := .
SRCS := $(shell find $(SRC_DIRS) -name '*-ascii.txt')
PDFs := $(SRCS:-ascii.txt=.pdf)

.PHONY: default
default: all

all: $(PDFs)

%.svg : %-ascii.txt
svgbob_cli $< -o $@

%.pdf : %.svg
rsvg-convert -f pdf -o $@ $<

.PHONY: clean
clean:
rm -rf *.svg $(PDFs)
36 changes: 36 additions & 0 deletions Chapters/BasicsOnExecution/figures/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# About the figures

## Old figures: omnigraffle

Old figures are made with omnigraffle and exported to pdf and png.
Latex output uses pdf.

The problem with these is that keeping the same look and feel over all of these is very complicated.

## New figures: asciiart -> svg -> pdf

Using asciiart allows me (Guille) to keep the same look and feel in the figures.
Converting ascii art to pdf requires two command line tools: `aasvg` and `rsvg-convert` which I installed as follows in Mac:

```bash
npm install -g aasvg
sudo apt-get install librsvg2-bin

```
If the previous apt-get does not work

Notice that you should also install svgbob
```
brew install librsvg
brew install svgbob
```

Figure source code is asciiart and named `*-ascii.txt`.
We then convert them to svg using the following commands.

**TIP: Use the makefile ;)**

```
aasvg < x.txt > x.svg
rsvg-convert -f pdf -o x.pdf x.svg
```
10 changes: 10 additions & 0 deletions Chapters/BasicsOnExecution/figures/width_0-ascii.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Rectangle / #width
<01> pushRcvr: 1 --- push the value of the receiver's second instance variable (corner ) onto the stack
<7E> send: x --- send the unary message x
<00> pushRcvr: 0 --- push the value of the receiver's first instance variable (origin ) onto the stack
<7E> send: x --- send the unary message x
<61> send: - --- send the binary message -
<5C> returnTop - return the object on top of the stack as the value of the message (width )



Binary file added Chapters/BasicsOnExecution/figures/width_0.pdf
Binary file not shown.

0 comments on commit cf3b6be

Please sign in to comment.