Introduces Store module type.
Logarion module:
* Removed Entry submodule, it mostly duplicated Meta
* Make functor for creating archives given a Store compatible module
The output Archive module contains functions for sorting, ordering, selecting
and accumulating (storing) notes.
Meta module:
* Function Path.basename_of_title has been renamed to Meta.string_of_slug
This is because slugs are now defined explicitely by 'slug' field or derived from
'title' field. Counting numbers can't be used anymore.
Slug has an optional, dedicated field.
Function Meta.slug should be used on a Meta to get the appropriate slug (title or slug).
* Introduces StringSet type (Set of Strings)
Topics, keywords and series are now StringSets
* Adds SlugMap and IdMap aliases
Note module:
* Automatically scan for Markdown heading to use as title in the absence of one
File module:
* File has a Store compatible signature
The implementation has an Lwt hack; Lwt will be fully supported in the future
Web module:
* Uses new Logarion.Configuration, File store and Archive.t
Template module:
* Adapted for new types
* Currently disabled topics substitution, because this framework needs reconsideration
Finally:
* Adapts command line interface to work with new store
* Adapts Atom feed to work with new store
Path module renamed to Lpath to avoid clash with OCaml system module.
(Squashed commits from dev)
Reinvented Path types, now in a new module Path.
Moves file functions to module File, including Lwt implementations.
Experimental Logarion.Archive.delta_of for compounding (adding) notes.
Fixes scope warnings.
Fixes a command's documentation.
Since opium uses Lwt, apps written in opium should use lwt for all
IO (and other possibly blocking operations). Lwt_main.run simply runs
lwt's event loop so it should usually be called once in a program.
Other endpoints can be converted similarly by first converting
`Logarion.of_file`