Diffcessible is an terminal based diff viewer with an emphasis on being accessible. Our goal is to build a diff viewer on top of Git diff that is accessible to screen readers.
The following describes the structure of the project:
bin/
: The bin directory contains the main entry point for the application and contains the implementation for the command-line interface.
lib/
: The lib directory contains the main logic for the diff viewer. It is responsible for parsing the diff and displaying it in the terminal.
test/
: The test directory contains the test suite for the project.
vendor/
: The vendor directory contains the vendored dependencies for the project.
To set up the project, please fork the repository and clone it to your local machine. You will need to have opam
installed to install the dependencies. Once you have opam
installed, you can run the following command to install the dependencies:
opam install . --deps-only --with-test
This project runs using the output of a git diff command. Such as:
git diff > git.diff
For testing there is an included file example.diff
that already contains a diff output.
To run the project, you can use the following command:
dune exec diffcessible [path/to/git.diff]
The following is a list of the technologies used in the project:
- Patch Library: For parsing and printing diffs.https://github.com/let-def/lwd
- Notty & Lwd Libraries: For terminal layout declaration and creating a reactive UI.
- Nottui Library: Integrates Lwd and Notty for UI development.
- Cmdliner Library: Facilitates command-line interface creation.
- Dune Build System: For project building.
Contributions are welcome! Please refer to the CONTRIBUTING.md file for detailed instructions on how to contribute to this project.
For those new to OCaml or looking to enhance their skills, here are some recommended resources:
- Real World OCaml: A comprehensive guide to OCaml, covering practical examples and in-depth concepts.
- OCaml Programming: Correct + Efficient + Beautiful: A course that covers OCaml programming, including functional programming, data structures, and algorithms.
- Introduction to Functional Programming in OCaml: Offers a fundamental understanding of functional programming principles using OCaml.
- Introduction to Data Structures and Algorithms in OCaml: Offers a comprehensive understanding of data structures and algorithms using OCaml.
This project is licensed under the MIT License. See the LICENSE file for more details.