Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dessert-wasm/dessert-yaml-core
Core API for YAML parsing wirtten in Rust for WebAssembly
https://github.com/dessert-wasm/dessert-yaml-core
js wasm yaml
Last synced: 3 months ago
JSON representation
Core API for YAML parsing wirtten in Rust for WebAssembly
- Host: GitHub
- URL: https://github.com/dessert-wasm/dessert-yaml-core
- Owner: dessert-wasm
- License: mit
- Created: 2019-05-05T17:26:16.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2020-04-06T06:59:55.000Z (almost 5 years ago)
- Last Synced: 2024-11-03T08:06:26.306Z (3 months ago)
- Topics: js, wasm, yaml
- Language: Rust
- Homepage:
- Size: 14.6 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE_MIT
Awesome Lists containing this project
README
[![](https://user-images.githubusercontent.com/25987204/78205790-10b0c680-74d8-11ea-9767-5bb93e920044.png)](https://dessert.dev/)
Dessert YAML
============[![npm-badge]][npm-url]
[![license-badge]][license][npm-badge]: https://img.shields.io/npm/v/dessert-yaml-core.svg
[npm-url]: https://www.npmjs.org/package/dessert-yaml-core
[license-badge]: https://img.shields.io/github/license/dessert-wasm/dessert-yaml-core
[license]: LICENSE_MIT> Base API for YAML connectors, written in Rust for WebAssembly.
Existing connectors are:
* [dessert-js-yaml](https://github.com/dessert-wasm/dessert-js-yaml)
* [dessert-yaml-js](https://github.com/dessert-wasm/dessert-yaml-js)For simplicity's sake, this module has been written using [serde yaml], but at the cost of flexibility. Some feature might be missing for now, like passing parsing options when loading/dumping.
[serde yaml]: https://github.com/dtolnay/serde-yaml
## Table of contents
* [Usage](#usage)
* [API](#api)
* [Performance](#performance)
* [Installation](#installation)
* [Building](#building)
* [Testing](#testing)
* [License](#license)
* [Contributing](#contributing)## Usage
> Note:
Althought this library is usable as-is, it should be used as a dependency for a connector, such as [dessert-js-yaml].[dessert-js-yaml]: https://github.com/dessert-wasm/dessert-js-yaml
``` javascript
yaml = require('dessert-yaml-core');
fs = require('fs');// Get document, or throw exception on error
try {
let doc = yaml.load(fs.readFileSync('/home/ixti/example.yml', 'utf8'));
console.log(doc);// Print the parsed object as a YAML stream
let yaml_stream = yaml.dump(doc);
console.log(yaml_stream);
} catch (e) {
console.log(e);
}
```## Performance
Big file (6.85MB)
| | dessert-yaml | js-yaml | yaml-js |
|:--------:|:------------:|:-------:|:--------:|
| `load` | 1904ms | 836ms | 55461ms |
| `dump` | 528ms | 1193ms | 124931ms |Small file (360 B)
| | dessert-yaml | js-yaml | yaml-js |
|:--------:|:------------:|:-------:|:-------:|
| `load` | 1ms | 11ms | 33ms |
| `dump` | 1ms | 8ms | 37ms |## API
This section lists methods exported from Wasm to Javascript.### load(string, [, options])
Most simple way of parsing a document. Parses string as single YAML document. Returns a JavaScript object or throws YAMLException on error. options aren't used as for now.### loadSafe(string, [, options])
Same as load()### loadAll(string, [, options])
Same as safeLoad(), but understands multi-document sources. Applies iterator to each document if specified, or returns array of documents.
Currently same as load() because serde_yaml doesn't support multi document yet, and data structure from yaml-rust aren't serializable.### dump(object, [, options])
Serializes object as a YAML document### safeDump(objects, [, options])
Same as dump()## Installation
```sh
npm install dessert-yaml-core
```## Building
The package can be built using [wasm-pack][wasm-pack]: https://rustwasm.github.io/wasm-pack/installer/
```sh
wasm-pack build --target browser
```## Testing
```sh
wasm-pack test --headless --[firefox|chrome|safari]
```## License
MIT## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)