penframe
Version:
A lightweight DSL-based wireframe and UI structure visualization tool.
60 lines (53 loc) • 1.5 kB
JavaScript
const parser = require('./dist/parser');
const astToSvg = require('./src/svg/astToSvg');
const { astToPng, astToPngFile } = require('./src/svg/astToPng');
/**
* Parse PenFrame DSL to AST
* @param {string} dslCode - PenFrame DSL code
* @returns {Object} AST object
*/
function parse(dslCode) {
return parser.parse(dslCode);
}
/**
* Convert PenFrame DSL directly to SVG
* @param {string} dslCode - PenFrame DSL code
* @returns {string} SVG content
*/
function penframeToSvg(dslCode) {
const ast = parse(dslCode);
return astToSvg(ast);
}
/**
* Convert PenFrame DSL directly to PNG buffer
* @param {string} dslCode - PenFrame DSL code
* @param {Object} options - PNG conversion options
* @returns {Promise<Buffer>} PNG buffer
*/
async function penframeToPng(dslCode, options = {}) {
const ast = parse(dslCode);
return await astToPng(ast, options);
}
/**
* Convert PenFrame DSL directly to PNG file
* @param {string} dslCode - PenFrame DSL code
* @param {string} outputPath - Output PNG file path
* @param {Object} options - PNG conversion options
*/
async function penframeToPngFile(dslCode, outputPath, options = {}) {
const ast = parse(dslCode);
return await astToPngFile(ast, outputPath, options);
}
module.exports = {
// Main API functions
parse,
penframeToSvg,
penframeToPng,
penframeToPngFile,
// Lower-level functions
astToSvg,
astToPng,
astToPngFile,
// Parser
parser
};