123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // @ts-check
- const FALSE_VALUES = [
- false,
- 0,
- '0',
- 'f',
- 'F',
- 'false',
- 'FALSE',
- 'off',
- 'OFF',
- ];
- /**
- * @param {any} value
- * @returns {boolean}
- */
- export function isTruthy(value) {
- return value && !FALSE_VALUES.includes(value);
- }
- /**
- * See app/lib/ascii_folder.rb for the canon definitions
- * of these constants
- */
- const NON_ASCII_CHARS = 'ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž';
- const EQUIVALENT_ASCII_CHARS = 'AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz';
- /**
- * @param {string} str
- * @returns {string}
- */
- export function foldToASCII(str) {
- const regex = new RegExp(NON_ASCII_CHARS.split('').join('|'), 'g');
- return str.replace(regex, function(match) {
- const index = NON_ASCII_CHARS.indexOf(match);
- return EQUIVALENT_ASCII_CHARS[index];
- });
- }
- /**
- * @param {string} str
- * @returns {string}
- */
- export function normalizeHashtag(str) {
- return foldToASCII(str.normalize('NFKC').toLowerCase()).replace(/[^\p{L}\p{N}_\u00b7\u200c]/gu, '');
- }
- /**
- * @param {string|string[]} arrayOrString
- * @returns {string}
- */
- export function firstParam(arrayOrString) {
- if (Array.isArray(arrayOrString)) {
- return arrayOrString[0];
- } else {
- return arrayOrString;
- }
- }
- /**
- * Takes an environment variable that should be an integer, attempts to parse
- * it falling back to a default if not set, and handles errors parsing.
- * @param {string|undefined} value
- * @param {number} defaultValue
- * @param {string} variableName
- * @returns {number}
- */
- export function parseIntFromEnvValue(value, defaultValue, variableName) {
- if (typeof value === 'string' && value.length > 0) {
- const parsedValue = parseInt(value, 10);
- if (isNaN(parsedValue)) {
- throw new Error(`Invalid ${variableName} environment variable: ${value}`);
- }
- return parsedValue;
- } else {
- return defaultValue;
- }
- }
|