#piet #interpreter #decoder #cli

bin+lib pint

A Piet Interpreter with a builting PNG-decoder

1 unstable release

0.1.0 Aug 16, 2022

#1069 in Development tools

MIT license

61KB
1.5K SLoC

pint 🍺

A (P)iet (Int)erpreter with a builtin png-decoder.

Piet is a programming language in which programs look like abstract paintings. The language is named after Piet Mondrian, who pioneered the field of geometric abstract art.

This is a piet program that prints "Hello World!"

Installation

cargo install pint

or you can clone this repo and build it from source

Usage

pint some_test.png

The codel-size is inferred automatically. You can also pass it manually:

pint some_test.png -c <codel_size>

Since the png-decoder is built from scratch it only implements the most common Png color-types TruecolorRGB and Indexed. There is currently no support for gifs.

Tests

Typing make shows you the options for this crate.

unit-tests

$ make unit_test
or
$ cargo t

There also integration tests that check the result of the test-images located in tests/fixtures

$ make integration_tests
or
$ bash tests/integration_tests

Contribution

I would appreciate any kind of contribution (as long as the tests pass :)) or feedback since this is my first time writing rust. Maybe there is somebody willing to finish the png decoder to support all kinds of pngs

Dependencies

~1.9–2.6MB
~47K SLoC