Purpose of this module:
- Provide an abstract low-level interface for basic file operations
- Creating
- Reading
- Writing / Updating
- Deleting
- Copying (= Reading + Writing with a different name)
- Moving / Renaming
- Provide an easy-to-use interface for multipart files (e.g. files with YAML front matter)
- Support for arbitrary content models
- Parsing
- Serialisation
- File part operations
- Creating
- Reading
- Writing / Updating
- Deleting (?)
- Copying (?)
- Support for arbitrary content models
- Reading from / writing to different sources
- In-Memory
- File system
- Standard input / output (?)
- FTP (?)
- Remote storage (?)
- Implementing several file types and structures (see below)
- Possibly special behaviour based on file type
- Text
- Markdown (CommonMark)
- YAML
- JSON
- YFM-Markdown (Markdown with YAML front matter)
- JFM-Markdown (Markdown with JSON front matter)
Each file consists of one or more file parts. The content model of a file is described in terms of
- content parts (containing true file content like text or image data) and / or
- part aggregates (each consisting of one or more subparts).
A part aggregage may either be a
- part sequence (a predefined sequence of subparts of particular types) or a
- part choice (one of several allowed subpart types)
and may be repeated more than once.
I recommend reading the project documentation on Read the Docs.