UNPKG

@department-of-veterans-affairs/generator-vets-website

Version:

Generate a React app for vets-website

69 lines (59 loc) 1.89 kB
/** * Filter functions for transforming user input * Used by field definitions to clean and normalize input values */ /** * Clean up folder name by removing leading/trailing slashes * @param {string} folder - The folder name to clean * @returns {string} The cleaned folder name */ export function folderNameFilter(folder) { if (folder.startsWith('/')) { folder = folder.substring(1); } if (folder.endsWith('/')) { folder = folder.slice(0, -1); } return folder; } /** * Clean up root URL by removing trailing slash and ensuring leading slash * @param {string} rootUrl - The root URL to clean * @returns {string} The cleaned root URL */ export function rootUrlFilter(rootUrl) { // Remove trailing slash if present if (rootUrl.endsWith('/')) { rootUrl = rootUrl.slice(0, -1); } // Ensure it starts with a slash if (!rootUrl.startsWith('/')) { rootUrl = `/${rootUrl}`; } return rootUrl; } /** * Convert camelCase field name to kebab-case CLI argument * @param {string} fieldName - The camelCase field name * @returns {string} The kebab-case CLI argument name */ export function fieldNameToCliArg(fieldName) { return fieldName.replace(/([A-Z])/g, '-$1').toLowerCase(); } /** * Generate form ID constant from form number * @param {string} formNumber - The form number (e.g., "21-526EZ") * @returns {string} The form ID constant (e.g., "FORM_21_526EZ") */ export function generateFormIdConst(formNumber) { const normalized = formNumber.replace(/-/g, '_'); return normalized.startsWith('FORM_') ? normalized : `FORM_${normalized}`; } /** * Generate tracking prefix from form number * @param {string} formNumber - The form number (e.g., "21-526EZ") * @returns {string} The tracking prefix (e.g., "21_526ez") */ export function generateTrackingPrefix(formNumber) { return formNumber.toLowerCase().replace(/-/g, '_'); }