113 lines
4.9 KiB
Markdown
113 lines
4.9 KiB
Markdown
# D:YAML
|
|
|
|
[![image](https://travis-ci.org/dlang-community/D-YAML.svg?branch=master)](https://travis-ci.org/dlang-community/D-YAML)
|
|
[![image](https://img.shields.io/dub/v/dyaml.svg)](http://code.dlang.org/packages/dyaml)
|
|
|
|
## Introduction
|
|
|
|
D:YAML is an open source YAML parser and emitter library for the D
|
|
programming language. It is
|
|
([almost](https://github.com/dlang-community/D-YAML/wiki/Differences-between-D:YAML-and-the-YAML-specification))
|
|
compliant to the YAML 1.1 specification. D:YAML is based on
|
|
[PyYAML](http://www.pyyaml.org) created by Kirill Simonov.
|
|
|
|
D:YAML is designed to be easy to use while supporting the full feature
|
|
set of YAML. To start using it in your project, see the [Getting
|
|
Started](https://github.com/dlang-community/D-YAML/wiki/Getting-Started)
|
|
tutorial.
|
|
|
|
D:YAML is still a work in progress. Its API is not stable and there
|
|
might be compatibility breaking changes.
|
|
|
|
## Features
|
|
|
|
- Easy to use, high level API and detailed debugging messages.
|
|
- Detailed API documentation and tutorials.
|
|
- Code examples.
|
|
- Supports all YAML 1.1 constructs. All examples from the YAML 1.1
|
|
specification are parsed correctly.
|
|
- Reads from and writes from/to YAML files or in-memory buffers.
|
|
- UTF-8, UTF-16 and UTF-32 encodings are supported, both big and
|
|
little endian (plain ASCII also works as it is a subset of UTF-8).
|
|
- Support for both block (Python-like, based on indentation) and flow
|
|
(JSON-like, based on bracing) constructs.
|
|
- Support for YAML anchors and aliases.
|
|
- Support for default values in mappings.
|
|
- Support for custom tags (data types), and implicit tag resolution
|
|
for custom scalar tags.
|
|
- All tags (data types) described at <http://yaml.org/type/> are
|
|
supported, with the exception of `tag:yaml.org,2002:yaml`, which is
|
|
used to represent YAML code in YAML.
|
|
- Remembers YAML style information between loading and dumping if
|
|
possible.
|
|
- Reuses input memory and uses slices to minimize memory allocations.
|
|
- There is no support for recursive data structures. There are no
|
|
plans to implement this at the moment.
|
|
|
|
## Directory structure
|
|
|
|
| Directory | Contents |
|
|
|---------------|--------------------------------|
|
|
| `./` | This README, utility scripts. |
|
|
| `./doc` | Documentation. |
|
|
| `./docsrc` | Documentation sources. |
|
|
| `./source` | Source code. |
|
|
| `./examples/` | Example projects using D:YAML. |
|
|
| `./test` | Unittest data. |
|
|
|
|
## Installing and tutorial
|
|
|
|
See the [Getting
|
|
Started](https://github.com/dlang-community/D-YAML/wiki/Getting-Started)
|
|
tutorial and other tutorials that can be found at the [GitHub
|
|
wiki](https://github.com/dlang-community/D-YAML/wiki) and in the
|
|
`doc/html/tutorials/` directory in the package.
|
|
|
|
## License
|
|
|
|
D:YAML is released under the terms of the [Boost Software
|
|
License 1.0](http://www.boost.org/LICENSE_1_0.txt). This license allows
|
|
you to use the source code in your own projects, open source or
|
|
proprietary, and to modify it to suit your needs. However, in source
|
|
distributions, you have to preserve the license headers in the source
|
|
code and the accompanying license file.
|
|
|
|
Full text of the license can be found in file `LICENSE_1_0.txt` and is
|
|
also displayed here:
|
|
|
|
Boost Software License - Version 1.0 - August 17th, 2003
|
|
|
|
Permission is hereby granted, free of charge, to any person or organization
|
|
obtaining a copy of the software and accompanying documentation covered by
|
|
this license (the "Software") to use, reproduce, display, distribute,
|
|
execute, and transmit the Software, and to prepare derivative works of the
|
|
Software, and to permit third-parties to whom the Software is furnished to
|
|
do so, all subject to the following:
|
|
|
|
The copyright notices in the Software and this entire statement, including
|
|
the above license grant, this restriction and the following disclaimer,
|
|
must be included in all copies of the Software, in whole or in part, and
|
|
all derivative works of the Software, unless such copies or derivative
|
|
works are solely in the form of machine-executable object code generated by
|
|
a source language processor.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
|
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
|
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
DEALINGS IN THE SOFTWARE.
|
|
|
|
## Credits
|
|
|
|
D:YAML was created by Ferdinand Majerech aka Kiith-Sa
|
|
kiithsacmp\[AT\]gmail.com .
|
|
|
|
Parts of code based on [PyYAML](http://www.pyyaml.org) created by Kirill
|
|
Simonov.
|
|
|
|
D:YAML was created using Vim and DMD on Debian, Ubuntu and Linux Mint as
|
|
a YAML parsing library for the [D programming
|
|
language](http://www.dlang.org).
|