https://github.com/ml-in-barcelona/ppxlib-simple-example
ppxlib simple example, minimal boilerplate to write a ppx. Using esy and alcotest for testing.
https://github.com/ml-in-barcelona/ppxlib-simple-example
alcotest ocaml ppx ppx-extension ppxlib
Last synced: 11 months ago
JSON representation
ppxlib simple example, minimal boilerplate to write a ppx. Using esy and alcotest for testing.
- Host: GitHub
- URL: https://github.com/ml-in-barcelona/ppxlib-simple-example
- Owner: ml-in-barcelona
- License: bsd-2-clause
- Created: 2020-11-10T14:52:03.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-01-18T10:39:43.000Z (over 2 years ago)
- Last Synced: 2024-04-14T09:31:54.978Z (about 2 years ago)
- Topics: alcotest, ocaml, ppx, ppx-extension, ppxlib
- Language: OCaml
- Homepage:
- Size: 149 KB
- Stars: 11
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ppxlib-simple-example
A simple ppx to examplify the initial setup of [ppxlib](https://github.com/ocaml-ppx/ppxlib/), part of the talk [**The needed introduction to writing a ppx**](https://youtu.be/dMoRMqQ6GLs?t=4184) given at [Reason STHLM Meetup](https://www.meetup.com/es-ES/ReasonSTHLM/)..
It uses [`opam`](https://opam.ocaml.org)
- OCaml 5.2.0
- dune 3.12
- ppxlib 0.27
## Installation
```bash
make install
```
## Building
```bash
make build # Builds the project, once
make dev # Watch the filesystem and re-builds the project on each change
```
## Testing
```bash
make test # Runs snapshot tests
make test-watch # Watch the filesystem and re-runs the tests on each change
make test-update # Updates the snapshot tests
```
## Usage
Users of your ppx need to add the ppx name to their dune stanza:
```lisp
(preprocess
(pps ppx-simple-example))
```
And then you can use it in your code:
```ocaml
print_endline [%yay]
(* Transforms to *)
print_endline "Hello future compiler engineer!"
```