1.5.1 • Published 9 years ago

json-meta-marked v1.5.1

Weekly downloads
2
License
MIT
Repository
github
Last release
9 years ago

json-meta-marked

Convert markdown with json front matter to json object with metadata & html.
Works in both directions.
Works as cli and required module

special feature
If you include a custom field in the json front matter, you can include {{field}} or []({{field}}) in the markdown part and in the transformation process, those placeholders in the markdown will be replaced with the value of the custom field of the json front matter

example

---
{
  "foo": "bar",
  "custom": {
    "something": "world",
    "beep": "boop"
  }
}
---

# Hello {{something}}

This is an example, [{{beep}}]({{beep}})

[//]: # (@TODO: this is a comment)

* one
* two
* three

yay, foobar :-)

will be transformed to:

{
  "foo": "bar",
  "custom": {
    "something": "world",
    "beep": "boop"
  },
  "__content__": "<h1 id=\"hello-something-\">Hello world</h1><p>This is an example, boop</p><ul><li>one</li><li>two</li><li>three</li></ul><p>yay, foobar :-)</p>"
}

USAGE - When required module -- markdown2json

jsonfront.md

---
{
  "name": "Metadata",
  "CONTENT": [
    "pitch",
    "news",
    "requirements",
    "program",
    "schedule",
    "support",
    "contribute",
    "about"
  ]
}
---

# Metadata of content

markdown2json.js

var jmm = require('json-meta-marked');
var fs  = require('fs');
var obj = jmm.parse(fs.readFileSync('jsonfront.md'));
console.log(JSON.stringify(obj, null, 2));

$> node markdown2json.js

{
  "name": "Metadata",
  "CONTENT": [
    "pitch",
    "news",
    "requirements",
    "program",
    "schedule",
    "support",
    "contribute",
    "about"
  ],
  "__content__": "<h1 id=\"metadata-of-content\">Metadata of content</h1>"
}

USAGE - When required module -- json2markdown

htmlified.json

{
  "name": "Metadata",
  "CONTENT": [
    "pitch",
    "news",
    "requirements",
    "program",
    "schedule",
    "support",
    "contribute",
    "about"
  ],
  "__content__": "<h1 id=\"metadata-of-content\">Metadata of content</h1>"
}

json2markdown.js

var jmm = require('json-meta-marked');
var fs  = require('fs');
var obj = JSON.parse(fs.readFileSync('htmlified.json'));
console.log(jmm.serialize(obj));

$> node json2markdown.js

---
{
  "name": "Metadata",
  "CONTENT": [
    "pitch",
    "news",
    "requirements",
    "program",
    "schedule",
    "support",
    "contribute",
    "about"
  ]
}
---

# Metadata of content

USAGE - From cli - markdown2json

jsonfront.md

---
{
  "name": "Metadata",
  "CONTENT": [
    "pitch",
    "news",
    "requirements",
    "program",
    "schedule",
    "support",
    "contribute",
    "about"
  ]
}
---

# Metadata of content

cli:

$> node install -g json-meta-marked Then you can do one of the following:

  • $> cat jsonfront.md | jmm
  • $> cat jsonfront.md | jmm --parse

which will print the parsed output to the terminal

  • $> cat jsonfront.md | jmm > htmlified.json
  • $> cat jsonfront.md | jmm --parse > htmlified.json

$> cat htmlified.json

{
  "name": "Metadata",
  "CONTENT": [
    "pitch",
    "news",
    "requirements",
    "program",
    "schedule",
    "support",
    "contribute",
    "about"
  ],
  "__content__": "<h1 id=\"metadata-of-content\">Metadata of content</h1>"
}

USAGE - From cli - json2markdown

cli

  • $> cat jsonfront.md | jmm --serialize

which will print the serialized output to the terminal

  • $> cat jsonfront.md | jmm --serialize > jsonfront.md

$> cat jsonfront.md

jsonfront.md

---
{
  "name": "Metadata",
  "CONTENT": [
    "pitch",
    "news",
    "requirements",
    "program",
    "schedule",
    "support",
    "contribute",
    "about"
  ]
}
---

# Metadata of content
1.5.1

9 years ago

1.5.0

9 years ago

1.4.2

9 years ago

1.4.1

9 years ago

1.4.0

9 years ago

1.3.1

9 years ago

1.3.0

9 years ago

1.2.1

9 years ago

1.2.0

9 years ago

1.1.4

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.0.2

10 years ago

1.0.0

10 years ago