Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flyx/NimYAML
YAML implementation for Nim
https://github.com/flyx/NimYAML
nim serialization yaml
Last synced: 3 months ago
JSON representation
YAML implementation for Nim
- Host: GitHub
- URL: https://github.com/flyx/NimYAML
- Owner: flyx
- License: other
- Created: 2015-12-29T17:35:54.000Z (almost 9 years ago)
- Default Branch: devel
- Last Pushed: 2024-07-17T16:04:36.000Z (4 months ago)
- Last Synced: 2024-07-17T19:49:59.405Z (4 months ago)
- Topics: nim, serialization, yaml
- Language: Nim
- Homepage: https://nimyaml.org
- Size: 1.33 MB
- Stars: 185
- Watchers: 10
- Forks: 36
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: copying.txt
Awesome Lists containing this project
- awesome-nim - NimYAML - YAML implementation for Nim. (Data / Parsing)
README
# NimYAML - YAML implementation for Nim
![Test Status](https://github.com/flyx/NimYAML/actions/workflows/action.yml/badge.svg)
NimYAML is a pure Nim YAML implementation without any dependencies other than
Nim's standard library. It enables you to serialize Nim objects to a YAML stream
and back. It also provides a low-level event-based API.Documentation, examples and an online demo are available [here][1]. Releases are
available as tags in this repository and can be fetched via nimble:nimble install yaml
## Status
This library is stable.
NimYAML passes all tests of the current [YAML 1.2 test suite][4].
This project follows [SemVer][5].I am committed to maintaining the library, but will seldom introduce new features.
PRs are welcome.## Dependencies
NimYAML requires Nim 2.0.0 or later.
The last version supporting Nim 1.6.x is `v1.1.0`.
Use this in your `.nimble` file if you haven't migrated to Nim 2.x yet:```nim
requires "yaml ^= 1.1.0"
```## Missing Features
Be aware that serialization currently doesn't support the following features in types that are used for loading and dumping:
* Polymorphism: If a field has a type `ref Parent`, you cannot load a `ref Child` into it.
* Generic objects: The code auto-generating loading and dumping functions currently cannot process instances of generic objects anywhere in the type you want to load/dump.
* Default values: NimYAML uses its own `{.defaultVal: "foo".}` pragma.
It currently cannot process default values introduced in Nim 2.0.## Developers
Nix users can `nix develop` to get a devshell with the required Nim version. You'll need to have Flakes enabled.
```bash
nim test # runs all tests
nim lexerTests # run lexer tests
nim parserTests # run parser tests (git-clones yaml-dev-kit)
nim nativeTests # runs native value tests
nim quickstartTests # run tests for quickstart snippets from documentation
nim clean # guess
nim build # build a library
```When debugging crashes in this library, use the `d:debug` compile flag to enable printing of the internal stack traces for calls to `internalError` and `yAssert`.
### Web Documentation
The online documentation on [nimyaml.org][1], including the
testing ground, is generated via [Nix Flake][3].You can build & run the docs server at via
```bash
nix run .#webdocs
```It can be deployed to NixOS by importing the Flake's NixOS module and then doing
```nix
services.nimyaml-webdocs.enable = true;
```This will run the documentation server locally at `127.0.0.1:5000`.
Since there isn't much of a use-case for third parties to host this documentation, there is no support for running the server without Nix.## License
[MIT][2]
## Support this Project
If you want to support this project financially, there's a GitHub Sponsor button to the right.
[1]: https://nimyaml.org
[2]: copying.txt
[3]: https://nixos.wiki/wiki/Flakes
[4]: https://github.com/yaml/yaml-test-suite
[5]: https://semver.org