37 lines
1 KiB
Markdown
37 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.
|
||
|
|