save parsed markdown into sqlite db
Project description
NoteVault
Define a schema over markdown documents and store certain sections as columsn in sqlite database.
Every list item must have a name
as unique key. For non-list items the key is the heading.
Every save
creates new version of the documents's child items, no update/overwrite, i.e. created == updated
.
Reason: PK is auto-incremented, so it's not possible to update existing items.
Existing items are just de-connected, i.e. foreign keys are set to null
.
This also implies that deletion of detached items make sense.
Data will be extracted either as:
1. Key-Value pairs
Model:
KV_List:
name:
type: string
start:
type: time
nullable: true
duration:
type: int
nullable: false
breaks:
type: timedelta
nullable: true
data:
type: string
nullable: true
This works for lists and headings. The heading would be the key and the following paragraph the value.
Lists can be narrow or wide:
Narrow list (often used with headings as lists):
- start: 07:30
- duration: 2:30
- participants: @user1, @user2
Wide list:
- name: item2, start: 17:30, duration: 2, breaks:, data: "adsfadfasdf, asdfasdf"
- name: item1, start: 07:30, duration: 1, breaks: 0:30
2. Lists:
Model:
List:
- field:
name: item
type: string
nullable: false
- field:
name: time
type: time
nullable: true
- field:
name: break
type: timedelta
nullable: true
- field:
name: detail
type: string
nullable: true
List:
- item2, 17:30,, "adsfadfasdf, asdfasdf"
- item1, 07:30, 0:30
Format
- Sections are defined by headings.
- key-value pairs are extracted into fields, e.g.
key: value
- Fields (extraction units) correspond to "Tags", e.g.
li, h2
because it can contain other tags and newlines. - field values with commas must be quoted:
participants: '@user1, @user2'
Single Item:
- spec:
is_list: false
- markdown lists as fields:
- key: value
Multiple Items:
markdown lists
- spec:
is_list: true
+list_specifier: kv_list
- substructure: format:
- key: value, key: value, key: "complex, value"
sub-headings
- spec:
is_list: true
+heading_field: name
+list_specifier: heading
(must specify the field which will hold the sub-heading in the schema) - substructure: format:
## Title x
can contain: - markdown lists as fields:
- key: value
- sub-headings as simple content fields
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for notevault-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23d3c7260002f7f64dce959c62400e622d5a0243b1ecf2f39bc5fac737fb3856 |
|
MD5 | 4ca79c7708c99f222d39e44c4bd3f74c |
|
BLAKE2b-256 | 9492e2fa22eb67d2afa9ec169482134b77c8176134d6b23db9aa1f9cd3772f5d |