UNPKG

poe-i18n

Version:

i18n utility for Path of Exile

90 lines (89 loc) 3.33 kB
var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = (this && this.__spread) || function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; import formatMessage from '../format/message'; import { isRange } from '../types/StatValue'; import { buildFormatter } from './formatters'; export function formatValues(values, options) { if (options === void 0) { options = {}; } var formatters = options.formatters, message = options.message; if (formatters === undefined) { throw new Error('formatters not set'); } var formatted = __spread(values); formatters.forEach(function (formatter, i) { if (typeof formatter !== 'string' && typeof formatter.arg === 'number') { // base_chance_to_freeze% is the only exception // see issues #25 and #33 var offset = formatter.id === 'canonical_stat' && formatters.includes('canonical_line') ? 0 : -1; var target_param = values[+formatter.arg + offset]; if (target_param !== undefined) { formatted[+formatter.arg - 1] = formatValue(target_param, { formatter: formatter, message: message }); } else { throw new Error("no param given for formatter '" + formatter.id + "'"); } } }); return formatted.map(function (value) { return typeof value === 'string' ? value : formatValue(value, { message: message }); }); } var DEFAULT_FORMATTER = { id: 'id', arg: 1 }; export function formatValue(value, options) { if (options === void 0) { options = {}; } var _a = options.formatter, formatter = _a === void 0 ? DEFAULT_FORMATTER : _a, _b = options.message, message = _b === void 0 ? '{min}–{max}' : _b; var _c = buildFormatter(formatter.id), negates = _c.negates, format = _c.format; if (isRange(value)) { var _d = __read(valueOrder(value, negates).map(function (n) { return format(n); }), 2), min = _d[0], max = _d[1]; if (min === max) { return min; } else { return formatMessage(message, { min: min, max: max }); } } else { return format(value); } } /** * orders the given values so that the smallest displayed is min * * reduced stats are given as negative values and then negated for display * whichs results in [-30, -15] being displayed as "(30 - 15) reduced" * @param param0 * @param negates - true if the values will be negated */ function valueOrder(_a, negates) { var _b = __read(_a, 2), left = _b[0], right = _b[1]; if ((left < right && !negates) || (left > right && negates)) { return [left, right]; } else { return [right, left]; } }