zord-tree/README.md
Arnas Udovič 39c879beac
All checks were successful
continuous-integration/drone/push Build is passing
Update 'README.md'
2022-08-15 21:29:42 +00:00

67 lines
2 KiB
Markdown

# zord-tree
[![Build Status](https://drone.arns.lt/api/badges/zordsdavini/zord-tree/status.svg)](https://drone.arns.lt/zordsdavini/zord-tree)
Library for golang to build articles tree from file system. The file should be in specific format to hold meta data, id and
content.
Process should go in two steps:
* populate existing `source` directory with formatting files, add missing `id` and meta data
* build `Tree` to operate on object for your app
* read file content without meta data by path
## File and tree format
### Category
During building `Tree` directory path is converted into array of categories. So, file in path `linux/command/video` will get
categories: `linux`, `command`, `video`.
### Split line
File meta should be split by `---` line. If there is markdown formating to mark header, first such case (`---`) will be formatted
to contain empty line. Example:
```
Text
---
```
will become
```
Text
---
```
### Meta data
Meta data separated by lines and in format `* name: value`. By default library supports `tags` as comma separated array.
During populating tree it adds missing `id` in `abcex` format and empty meta data lines and saves in `source` directory then copy
to `destination` directory.
There is possibility to add custom default value. That is passed with custom function what returns string.
### File structure
```
* tags: linux,command,video
* meta1: example
* meta2: some long description
---
Hear goes content. It can be written in html, markdown or whatever what can be processed later
```
## Usage
There are two main commands: `PopulateTree` to prepare source (format, add metadata and add Id) and copy from source to destination and `BuildTree` to get object of tree.
`Tree` object has methods: `FileById` to get `File` by Id, `Slice` to get sub-tree of given path and `Filter` to filter tree by filter.
Filter contains array of meta key and searching value. `tag` key is searched as equal and other meta values of keys can contain part.