smarkt
smarkt copied to clipboard
π Hyper-readable plain text structure
trafficstars
π smarkt
Hyper-readable structure for defining fields and values in plain text
Usage
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.'
})
Structure
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:
Information wants to be free.
JSON output expanded
{
"title": "Cyber Mysticism",
"tags": ["technopastoral", "dark-ux"],
"design": {
"desktop": {
"background": "red",
"navigation": false
},
"mobile": {
"background": "blue",
"navigation": true
}
},
"text": "Information wants to be free."
}
Methods
stringify
Accepts a single argument which must be type string. Returns an object.
parse
Accepts a single argument which must be type object. Returns a string.
Alternate usage
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, simply require the desired method by name.
Todo
- [ ] Tests
- [ ]
.stringifyRemove quotes around YAML array values