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.

50 lines (45 loc) 1.65 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var nunjucks = require('nunjucks'); var nunjucksDate = require('nunjucks-date'); var sanitizeHtml = require('./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 = sanitizeHtml.sanitiseHtml(text); return new nunjucks.runtime.SafeString(sanitized); }; exports.default = setUpNunjucksFilters; exports.setUpNunjucksFilters = setUpNunjucksFilters; //# sourceMappingURL=setUpNunjucksFilters.js.map