hayaml
v1.0.3
Published
human-readable serialization for complex web content
Readme
hayaml
hayaml converts between JS objects and HAYAML. HAYAML (Human-Readable Serialization for Complex Web Content) is a human-readable, cross-language data serialization format for serializing complex web components.
Installation
npm i hayamlUsage
This package provides native support for ES Modules (MJS), CommonJS (CJS), and UMD. It uses the exports field (Node.js ^12.7.0) in its package.json to ensure the correct module format is loaded depending on your project's setup without the need for relative paths.
CommonJS
const HAYAML = require('hayaml')ES Modules
import HAYAML from 'hayaml'UMD
<script src="https://cdn.jsdelivr.net/gh/blubitz/hayaml/dist/umd/hayaml.min.js"></script>
<!--
<script>
const data = { /* your data */ }
const serialized = HAYAML.stringify(data)
</script>
-->JSON object to HAYAML
const data = {
"type": "image-gallery",
"gallery-title": "Summer Vacation",
"content": {
"type": "image-panel",
"content": "<div class=\"center\"><img src=\"vacation1.png\" style=\"max-width:200px\" alt=\"beach\"></div>"
}
}
console.log(HAYAML.stringify(data))Output
type: image-gallery
gallery-title: Summer Vacation
content:
type: image-panel
content:
node: root
child:
- node: element
tag: div
attr:
class: center
child:
- node: element
tag: img
attr:
src: vacation1.png
style: max-width:200px
alt: beachHAYAML to JSON object
const hayaml = `type: image-gallery
gallery-title: Summer Vacation
content:
type: image-panel
content:
node: root
child:
- node: element
tag: div
attr:
class: center
child:
- node: element
tag: img
attr:
src: vacation1.png
style: max-width:200px
alt: beach`
console.log(HAYAML.parse(hayaml))Output
{
type: 'image-gallery',
'gallery-title': 'Summer Vacation',
content: {
type: 'image-panel',
content: '<div class="center"><img src="vacation1.png" style="max-width:200px" alt="beach"></div>'
}
}Assertion
const data = { /* your object */ }
const serialized = HAYAML.stringify(data)
const deserialized = HAYAML.parse(serialized)
JSON.stringify(deserialized) == JSON.stringify(data) // => always trueBuilds
The source file is located at src/cjs/hayaml.js. Building to ESM and UMD is automatic by calling npm run build. Build files are located in the dev directory.
Tests
npm run testLicense
The code is available under the MIT license.
Contributing
If you want to help fix a bug or add new features,
- Fork this repository
- Apply changes
- Past tests
- Submit a pull request
