@push.rocks/smartfm
Version:
A Node.js module for handling and processing frontmatter in markdown and text files, leveraging the gray-matter library for parsing and stringifying YAML or JSON formatted frontmatter.
46 lines (38 loc) • 1.06 kB
text/typescript
import grayMatter from 'gray-matter';
export type TFrontMatter = 'yaml' | 'json';
export interface ISmartfmContructorOptions {
fmType: TFrontMatter;
}
/**
* class smartfm handles frontmatter
*/
export class Smartfm {
fmType: TFrontMatter;
constructor(optionsArg: ISmartfmContructorOptions) {
this.fmType = optionsArg.fmType;
}
/**
* add frontmatter to a string
*/
stringify(bodyString: string, frontmatterData: any) {
return grayMatter.stringify(bodyString, frontmatterData);
}
/**
* parse a string that has frontmatter attached, YAML notation
*/
parse(stringToParse: string) {
return grayMatter(stringToParse);
}
/**
* parse from comments
*/
parseFromComments(commentStart: string, stringToParse: string) {
const diffFunc = (diffMe, diffBy) => diffMe.split(diffBy).join('');
let lines = stringToParse.split('\n');
lines = lines.map((line) => {
return diffFunc(line, commentStart);
});
const cleanedString = lines.join('\n');
return this.parse(cleanedString);
}
}