imag/lib/domain/libimagwiki
Matthias Beyer cb4d5367e4 Rewrite all usages of ModuleEntryPath
Because the code was so complex before, we had to create an object and
then cast that object into a `StoreId` rather than just creating a
`StoreId` object right away.

With this patch, we're using the code-generation approach to generate a
function that creates a `StoreId` object based on the name of the
current module. That's way easier and error handling was also improved
by the switch to the new implementation.

The patch also includes a rewrite of all usages of ModuleEntryPath and
changes them to `module_path::new_id()` calls.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-04-13 22:39:39 +02:00
..
src Rewrite all usages of ModuleEntryPath 2019-04-13 22:39:39 +02:00
Cargo.toml Update version strings 2018-11-10 11:56:37 +01:00
README.md Initial import: libimagwiki 2018-04-15 10:27:09 +02:00

libimagwiki

The wiki library implements a complete wiki for personal use.

This basically is a note-taking functionality combined with linking.

Layout

The basic structure and layout is as simple as it gets:

/wiki holds all wikis. The default wiki is /wiki/default. Below that there are entries. Entries can be in sub-collections, so /wiki/default/cars/mustang could be an entry.


+-------------+
|             |
|  WikiStore  |
|             |
+------+------+
    1  |
       |
       | n
+------v------+
|             |
|    Wiki     |
|             |
+------+------+
     1 |
       |
       | n
+------v------+
|             | n
|    Entry    <------+
|             |      |
+------+------+      |
     1 |             |
       |             |
       |             |
       +-------------+

The store offers an interface to get a Wiki. The wiki offers an interface to get entries from it.

Each Entry might link to a number of other entries within the same wiki. Cross-linking from one wiki entry to an entry of another wiki is technically possible, but not supported by the Entry itself (also read below).

When creating a new wiki, the main page is automatically created.

Autolinking

The Entry structure offers an interface which can be used to automatically detect links in the markdown. The links are then automatically linked (as in libimagentrylink).