# 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.