Transform some structured plain text including Markdown and YAML into JSON, and visa versa. Super useful for archivability and readability. Feature parity with Kirbyās file structure.
var smarkt = require('smarkt')
var str = smarkt.parse(`
title: Cyber Mysticism
----
tags:
- technopastoral
- ambient
----
text: Art has always been a focusing device, the frame is a focusing device. What Iām trying to do is eliminate the frame, eliminate all those distractions and put you in direct relationship to the real experience and the real power: your ability to perceive.
`)
var obj = smarkt.stringify({
title: 'Cyber Mysticism',
{ tags: ['technopastoral', 'ambient']},
text: 'Art has always been a focusing device, the frame is a focusing device. What Iām trying to do is eliminate the frame, eliminate all those distractions and put you in direct relationship to the real experience and the real power: your ability to perceive.'
})
A plain-text file is separated into fields delineated by four dashes.
----
Give the field a name and define itās value.
title: Cyber Mysticism
The value can also be YAML.
tags:
- technopastoral
- ambient
Plain text input expanded
title: Cyber Mysticism
----
tags:
- technopastoral
- dark-ux
----
design:
desktop:
background: red
navigation: false
mobile:
background: blue
navigation: true
----
text:
We won the **battle** and lost the *war*. What Debord called dƩtournement became not just an avant-garde but a popular cultural practice. As I wrote in [A Hacker Manifesto](https://en.wikipedia.org/wiki/A_Hacker_Manifesto): Information wants to be free but is everywhere in chains. It broke free from the commodity form.
JSON output expanded
{
"title": "Cyber Mysticism",
"tags": ["technopastoral", "dark-ux"],
"design": {
"desktop": {
"background": "red",
"navigation": false
},
"mobile": {
"background": "blue",
"navigation": true
}
},
"text": "We won the **battle** and lost the *war*. What Debord called dƩtournement became not just an avant-garde but a popular cultural practice. As I wrote in [A Hacker Manifesto](https://en.wikipedia.org/wiki/A_Hacker_Manifesto): Information wants to be free but is everywhere in chains. It broke free from the commodity form."
}
Accepts a single argument which must be type string
. Returns an object
.
Accepts a single argument which must be type object
. Returns a string
.
var stringify = require('smarkt/stringify')
var parse = require('smarkt/parse')
Sometimes itās handy just to access a single method to reduce bundle size. To do this, simple require the desired method name.
- Tests
- Expanded YAML support
-
.stringify
Remove quotes around YAML array values