@automattic/rtjson-to-wpblocks
Version:
Javascript code to convert Day One RTJson to WordPress Gutenberg Blocks
46 lines (40 loc) • 1.12 kB
JavaScript
// Docs for RTJson format:
// https://dayonep2.wordpress.com/documentation/tech-specs/richtextjson-format-specification/
const { rtjNodesToGBHtml, rtjNodesToHtml } = require("./nodes2html");
// @ts-check
/// <reference path="./types.d.ts" />
/**
*
* @param {RTJDoc} rtj
* @param {MediaLookup} mediaLookup
* @returns string
*/
const rtjDocToGBHtml = (rtj, mediaLookup = {}) => {
return rtjNodesToGBHtml(rtj.contents, mediaLookup);
};
/**
*
* @param {string} rtjson
* @returns RTJDoc | Ajv.ErrorObject[]
*/
const parseAndValidateRTJson = require("./validate").parseAndValidateRTJson;
/**
*
* @param {string} rtjsonString
* @param {MediaLookup} mediaLookup
* @returns string
*/
const rtjsonDocStringToWPBlocksString = (rtjsonString, mediaLookup) => {
let { data, errors } = parseAndValidateRTJson(rtjsonString);
if (!data) {
throw new Error("RTJson did not validate: " + JSON.stringify(errors));
}
let converted = rtjDocToGBHtml(data, mediaLookup);
return converted;
};
module.exports = {
parseAndValidateRTJson,
rtjsonDocStringToWPBlocksString,
rtjNodesToGBHtml,
rtjNodesToHtml,
};