Arnas Udovič
39c879beac
All checks were successful
continuous-integration/drone/push Build is passing
67 lines
2 KiB
Markdown
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.
|
|
|