update readme

This commit is contained in:
a-sansara 2018-08-01 17:15:45 +02:00
parent b4fe09f3ec
commit cc60109353

View File

@ -1,16 +1,23 @@
# pluie-yaml
vala shared library managing yaml files and yaml nodes in vala language.
**pluie-yaml** is a vala shared library managing yaml files (v 1.2) and yaml nodes in vala language.
As json is now a valid subset of yaml, you can use this lib to load json files too.
The purpose of this project is to make vala able to load and deal with yaml configuration files.
**pluie-yaml** use the ![libyaml c library](https://github.com/yaml/libyaml) (License MIT, many thanks to Kirill Simonov) to parse and retriew related yaml events.
## License
GNU GPL v3
## Prerequisites
valac meson ninja glib gio gee gobject pluie-echo
`valac meson ninja glib gee gobject pluie-echo`
## Install
git clone the project then cd to project and do :
git clone the project then cd to project directory and do :
```
meson --prefix=/usr ./ build
@ -21,9 +28,12 @@ sudo ninja install -C build
```
valac --pkg gee-0.8 --pkg pluie-echo-0.2 --pkg pluie-yaml-0.3 main.vala
```
see https://git.pluie.org/pluie/libpluie-echo in order to install pluie-echo-0.2 pkg
you can use `./build.sh` to rebuild/install the **pluie-yaml** lib and compile samples files
## Api / Documentation
https://pluie.org/pluie-yaml-0.3/index.htm
@ -31,7 +41,7 @@ https://pluie.org/pluie-yaml-0.3/index.htm
## Docker
a demo image will be available on docker hub. you can run a container with :
a demo image will be available soon on docker hub. you will be able to run a container with :
```
docker run --rm -it pluie/libyaml
@ -39,14 +49,58 @@ docker run --rm -it pluie/libyaml
## Usage
### loader
```
var loader = new Yaml.Loader (path);
var path = "./config/main.yml";
// uncomment to enable debug
// Pluie.Yaml.Scanner.DEBUG = true;
var loader = new Yaml.Loader (path /* , displayFile, displayNode */);
if ((done = loader.done)) {
Yaml.NodeRoot root = loader.get_nodes ();
root.display_childs ();
}
```
### finder
**lib-yaml** provide a `Yaml.Finder` to easily retriew a particular yaml node.
Search path definition has two mode.
The default mode is `Yaml.FIND_MODE.SQUARE_BRACKETS`
- node's key name must be enclosed in square brackets
- sequence entry must be enclosed in curly brace
ex : `[grandfather][father][son]{2}[age]`
The Other mode is Yaml.FIND_MODE.DOT
- child mapping node are separated by dot
- sequence entry must be enclosed in curly brace
ex : `grandfather.father.son{2}.age`
with singlepair node, you can retriew corresponding scalar node with {0}
```
/*
# ex yaml file :
product:
- sku : BL394D
quantity : 4
description : Basketball
*/
...
Yaml.NodeRoot root = loader.get_nodes ();
Yaml.Node? node = null;
if ((node = finder.find("product{0}.description{0}")) != null) {
var val = node.data;
}
```
### more samples
see samples files in ./samples directory
### todo
* dumper
* fix nodes traversing