Skip to content

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

Notifications You must be signed in to change notification settings

davidayalas/markdown2json

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published