Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
lib
 
 
 
 
 
 
 
 
 
 

README.md

Markdown to JSON converter

  • Easy conversion from markdown files to json, to create an index.

  • Later, you can inject the json into algolia search.

  • It accepts YAML or TOML front matters.

Install

	npm install markdown2json --save

Usage

Indexer

	var indexer = require("markdown2json").Indexer;

	indexer = new indexer(options);

	indexer.run().then(...);

"options" is a json with the following options:

  • dir: String. directory to loop and/or substitute in the path attribute generated in the parsed md file.
  • fileList : Array. Array of files (paths) to index.
  • index_empty_content: Boolean. If false, it won't add the md to the json if the content is empty. Default is true.
  • cleanMD: Boolean. If true, cleans markdown characters from content. Default is false.
  • excludeIfProps : Array. Excludes the document from index if a property exists.
  • removeProps: Array. Remove props from the Front Matter of the returned md.
  • excludes: Array of strings. Paths to avoid in the indexing

Parser

	var parser = require("markdown2json").parseMD;

	parser(file, options).then(...)

where "options" is a json with the following options:

  • dir: String. directory to replace and leave only relative path
  • cleanMD: Boolean. if true, cleans markdown characters from content. Default is false
  • removeProps: Array. Remove props from the Front Matter of the returned md.

Parsed objects

Parsed object include:

  • all the metadata in the front matter
  • path: filepath without the root dir, if present
  • objectID: base64 encoded path
  • content, if exists
  • indexTime: time in millis of the indexation

Example - loop over a content directory, for example, from gohugo static site generator

	var indexer = require("markdown2json").Indexer;

	var algoliasearch = require('algoliasearch');
	var client = algoliasearch('YOURAPP ID', 'MANAGEMENT API KEY');
	var algolia = client.initIndex('indexname');

	indexer = new indexer(
		{
			"dir" : "./content",
			"domain" : "http://yourdomain.com",
			"index_empty_content" : false, //if md content == "", is not indexed
			"excludeIfProps" : ["my_custom_prop"],
			"cleanMD" : true,
			"removeProps" : ["image"],
			"excludes" : [
				"/path1/path2",
				"/path4"
			]
		}
	);

	indexer.run().then(
		function(idx){
			console.log(idx.length + " documents indexed");
			console.log("publishing to algolia...");

			algolia.saveObjects(idx, function(err, content) {
			  if(err===null){
				console.log("published!");
				algolia.deleteByQuery({
				  filters: 'indexTime < ' + idx[0].indexTime
				}, function(err) {
					if (!err) {
					    console.log('old records deleted');
					}
				});
			  }else{
			  	console.error(err);
			  }
			});

		}	
	)

Example - parse single file

	var parser = require("markdown2json").parseMD;

	parser("./content/markdownfile.md", {
		"dir" : "./content",
		"cleanMD" : true,
	}).then(
		function(jsonObj){
			console.log(jsonObj)
		}
	)

About

Creates a json index from markdown content directory (static search generators) and later can be indexed in Algolia Search

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.