UNPKG

@ministryofjustice/hmpps-digital-prison-reporting-frontend

Version:

The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.

45 lines (42 loc) 1.52 kB
import nunjucks from 'nunjucks'; import nunjucksDate from 'nunjucks-date'; import { sanitiseHtml } from './utils/sanitizeHtml.js'; const setUpNunjucksFilters = (env) => { env.addFilter('addRequiredAttributeToAll', addRequiredAttributeToAll); env.addFilter('json', stringifyJson); env.addFilter('capitaliseSentence', capitaliseSentence); // Namespace our own filters env.addFilter('dpr.findError', findError); env.addFilter('dpr.spacesToDash', spacesToDash); env.addFilter('dpr.safe', safe); nunjucksDate.setDefaultFormat('DD/MM/YYYY'); nunjucksDate.install(env, 'dprDate'); }; const findError = (errs, errToFind) => { const error = errs?.find(err => err.href.slice(1) === errToFind)?.text; return error ? { text: error } : null; }; // eslint-disable-next-line @typescript-eslint/no-explicit-any const stringifyJson = (jsonObj) => { return JSON.stringify(jsonObj, null, 2); }; const capitaliseSentence = (text) => { return text.charAt(0).toUpperCase() + text.substring(1).toLowerCase(); }; const addRequiredAttributeToAll = (items) => { return items.map(i => ({ ...i, attributes: { required: true, }, })); }; const spacesToDash = (text) => { return text?.replace(/ /g, '-') ?? ''; }; const safe = (text) => { const sanitized = sanitiseHtml(text); return new nunjucks.runtime.SafeString(sanitized); }; export { setUpNunjucksFilters as default, setUpNunjucksFilters }; //# sourceMappingURL=setUpNunjucksFilters.js.map