All Projects → tlsa → libcyaml

tlsa / libcyaml

Licence: ISC license
C library for reading and writing YAML.

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to libcyaml

Konf
A type-safe cascading configuration library for Kotlin/Java/Android, supporting most configuration formats
Stars: ✭ 225 (+36.36%)
Mutual labels:  yaml
Cli
A simple, fast, and fun package for building command line apps in Go
Stars: ✭ 16,995 (+10200%)
Mutual labels:  yaml
yaml-vim
YAML syntax/indent plugin for Vim
Stars: ✭ 37 (-77.58%)
Mutual labels:  yaml
Config
JSON or YAML configuration wrapper with convenient access methods.
Stars: ✭ 237 (+43.64%)
Mutual labels:  yaml
Vscode Data Preview
Data Preview 🈸 extension for importing 📤 viewing 🔎 slicing 🔪 dicing 🎲 charting 📊 & exporting 📥 large JSON array/config, YAML, Apache Arrow, Avro, Parquet & Excel data files
Stars: ✭ 245 (+48.48%)
Mutual labels:  yaml
yaml-update-action
Update YAML property with dynamic values
Stars: ✭ 81 (-50.91%)
Mutual labels:  yaml
Renderer
Simple, lightweight and faster response (JSON, JSONP, XML, YAML, HTML, File) rendering package for Go
Stars: ✭ 220 (+33.33%)
Mutual labels:  yaml
yaml.sh
Read YAML files with only Bash
Stars: ✭ 30 (-81.82%)
Mutual labels:  yaml
Frontyaml
YAML Front matter parser
Stars: ✭ 248 (+50.3%)
Mutual labels:  yaml
scikit-ci
Simpler and centralized CI configuration for Python extensions.
Stars: ✭ 15 (-90.91%)
Mutual labels:  yaml
Config
Configuration for Go applications
Stars: ✭ 239 (+44.85%)
Mutual labels:  yaml
Cloud Code Samples
Code templates to make working with Kubernetes feel like editing and debugging local code.
Stars: ✭ 245 (+48.48%)
Mutual labels:  yaml
assets generator
The flutter tool to generate assets‘s configs(yaml) and consts automatically for single project and multiple modules.
Stars: ✭ 34 (-79.39%)
Mutual labels:  yaml
Rollback
Ansible role to rollback scripting applications like PHP, Python, Ruby, etc. in a capistrano style
Stars: ✭ 230 (+39.39%)
Mutual labels:  yaml
chorus
📝 The first editor for Spigot configurations.
Stars: ✭ 133 (-19.39%)
Mutual labels:  yaml
Config
📝 Go config manage(load,get,set). support JSON, YAML, TOML, INI, HCL, ENV and Flags. Multi file load, data override merge, parse ENV var. Go应用配置加载管理,支持多种格式,多文件加载,远程文件加载,支持数据合并,解析环境变量名
Stars: ✭ 225 (+36.36%)
Mutual labels:  yaml
cfn-include
Preprocessor for CloudFormation templates with support for loops and flexible include statements
Stars: ✭ 83 (-49.7%)
Mutual labels:  yaml
wildq
Command-line TOML/JSON/INI/YAML/XML/HCL processor using jq c bindings
Stars: ✭ 22 (-86.67%)
Mutual labels:  yaml
CV
📜 My Data Driven CV written with R, YAML, & LaTeX
Stars: ✭ 54 (-67.27%)
Mutual labels:  yaml
apipkgen
Generate an R package from API specs
Stars: ✭ 12 (-92.73%)
Mutual labels:  yaml

LibCYAML: Schema-based YAML parsing and serialisation

Build Status Static Analysis Code Coverage

LibCYAML is a C library for reading and writing structured YAML documents. It is written in ISO C11 and licensed under the ISC licence.

Overview

The fundamental idea behind CYAML is to allow applications to construct schemas which describe both the permissible structure of the YAML documents to read/write, and the C data structure(s) in which the loaded data is arranged in memory.

Goals

  • Make it easy to load YAML into client's custom C data structures.
  • Good compromise between flexibility and simplicity.

Features

  • Load, Save and Free functions.
  • Reads and writes arbitrary client data structures.
  • Schema-driven, allowing control over permitted YAML, for example:
    • Required / optional mapping fields.
    • Allowed / disallowed values.
    • Minimum / maximum sequence entry count.
    • etc...
  • Enumerations and flag words.
  • YAML backtraces make it simple for users to fix their YAML to conform to your schema.
  • Uses standard libyaml library for low-level YAML read / write.
  • Support for YAML aliases and anchors.

Building

To build the library, run:

make

You can control the optimisation and building of asserts by setting the build variant:

make VARIANT=debug
make VARIANT=release

Another debug build variant which is built with address sanitiser (incompatible with valgrind) can be built with:

make VARIANT=san

Installation

To install a release version of the library, run:

make install VARIANT=release

It will install to the PREFIX /usr/local by default, and it will use DESTDIR and PREFIX from the environment if set.

Testing

To run the tests, run any of the following, which generate various levels of output verbosity (optionally setting VARIANT=release, or VARIANT=san):

make test
make test-quiet
make test-verbose
make test-debug

To run the tests under valgrind, a similar set of targets is available:

make valgrind
make valgrind-quiet
make valgrind-verbose
make valgrind-debug

To run a single test or a subset of tests, use the TESTLIST variable, which expects a space and/or comma separated list of test names:

make test-debug TESTLIST=test_load_mapping_without_any_fields
make valgrind-debug TESTLIST="test_load_no_log test_util_state_invalid"

To generate a test coverage report, gcovr is required:

make coverage

Documentation

To generate both public API documentation, and documentation of CYAML's internals, doxygen is required:

make docs

Alternatively, the read the API documentation directly from the cyaml.h header file.

There is also a tutorial.

Examples

In addition to the documentation, you can study the examples.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].