imag/libimagruby/README.md

36 lines
1 KiB
Markdown

# imag-ruby
A Ruby gem for scripting imag modules.
This crate contains both the Rust bindings for imag using `ruru` and a bunch of
wrapper code for the actual `imag` gem.
## Why another layer of indirection?
As "ruru" does not yet support modules, which is sad btw, we would end up with
functions for all the things.
E.G.: `imag_runtime_setup()` instead of `IMAG::Runtime::setup()`
I want to add a Ruby gem to wrap these things.
So basically a piece of ruby which uses `imag.rb` (the Rust gem) to build
`imag` as a gem which then exports a fine module system.
## Ideas for module system:
```text
IMAG (Module)
Runtime (Module)
Runtime (Class)
Store (Module)
Store (Class)
Entry (Class)
StoreId (Class)
Util (Module, Ruby-only I guess)
```
I would name the types the same as in the Rust codebase, to avoid confusion.
Only exception would be the `Entry` class, which would be a `FileLockEntry`
underneath and if we adapt `libimagentrytag` and the other `libimagentry*`
libraries, we would extend this type.