UNPKG

handlebars-helpers-v2

Version:

Essential Handlebars helpers in TypeScript. A modernized collection of 8 core helper categories with TypeScript support and ESM compatibility.

108 lines 3.53 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.forIn = exports.sortBy = exports.createFrame = exports.get = void 0; exports.isNumber = isNumber; exports.isEven = isEven; exports.falsey = falsey; exports.contains = contains; exports.chop = chop; exports.changecase = changecase; exports.identity = identity; exports.random = random; exports.forEach = forEach; exports.forOwn = forOwn; const get_value_1 = __importDefault(require("get-value")); const create_frame_1 = __importDefault(require("create-frame")); const array_sort_1 = __importDefault(require("array-sort")); const for_in_1 = __importDefault(require("for-in")); exports.get = get_value_1.default; exports.createFrame = create_frame_1.default; exports.sortBy = array_sort_1.default; exports.forIn = for_in_1.default; // Replace simple dependencies with native implementations function isNumber(value) { return typeof value === 'number' && !isNaN(value) && isFinite(value); } function isEven(value) { return isNumber(value) && value % 2 === 0; } function falsey(value, keywords) { // Default falsey keywords from the original falsey library const defaultKeywords = ['false', 'null', 'undefined', 'nil', 'nope', 'no', 'nah', 'nay', '']; const allKeywords = keywords ? defaultKeywords.concat(keywords) : defaultKeywords; // Standard JavaScript falsey values if (!value || value === 0 || value === '' || value === null || value === undefined || value === false) { return true; } // Check against keyword strings (case insensitive) if (typeof value === 'string') { return allKeywords.includes(value.toLowerCase()); } return false; } // Add some utility functions that may be needed function contains(val, obj, start) { if (val == null || obj == null || !isNumber(val.length)) { return false; } return val.indexOf(obj, start) !== -1; } function chop(str) { if (typeof str !== 'string') return ''; const re = /^[-_.\W\s]+|[-_.\W\s]+$/g; return str.trim().replace(re, ''); } function changecase(str, fn) { if (typeof str !== 'string') return ''; if (str.length === 1) { return str.toLowerCase(); } str = chop(str).toLowerCase(); if (typeof fn !== 'function') { fn = identity; } const re = /[-_.\W\s]+(\w|$)/g; return str.replace(re, function (_, ch) { return fn(ch); }); } function identity(value) { return value; } function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } function forEach(array, options) { var data = (0, exports.createFrame)(options, options.hash); var len = array.length; var buffer = ''; var i = -1; while (++i < len) { var item = array[i]; data.index = i; item.index = i + 1; item.total = len; item.isFirst = i === 0; item.isLast = i === (len - 1); buffer += options.fn(item, { data: data }); } return buffer; } function forOwn(obj, options) { var data = (0, exports.createFrame)(options, options.hash); var buffer = ''; for (var key in obj) { if (obj.hasOwnProperty(key)) { var item = obj[key]; data.key = key; buffer += options.fn(item, { data: data }); } } return buffer; } //# sourceMappingURL=utils.js.map