UNPKG

2ch-trip

Version:

2ch compatible trip generator

44 lines (43 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTrip = exports.createTripByText = exports.createTripByKey = void 0; const encoding_japanese_1 = require("encoding-japanese"); const creators_1 = require("./creators"); const rawKeyPettern = /^#[0-9A-Fa-f]{16}[.\/0-9A-Za-z]{0,2}$/; const maskSpecialSymbols = (text) => text.replace(/★/g, '☆').replace(/◆/g, '◇'); const createTripByKey = (key) => { const encodedKeyString = (0, encoding_japanese_1.convert)(key, { from: 'UNICODE', to: 'SJIS', fallback: 'html-entity' }); // 10 桁トリップ if (encodedKeyString.length < 12) return (0, creators_1.create10DigitsTrip)(key); // 生キートリップ if (encodedKeyString.startsWith('#') || encodedKeyString.startsWith('$')) { // 拡張用のため ??? を返す if (!rawKeyPettern.test(encodedKeyString)) return '???'; return (0, creators_1.createRawKeyTrip)(key); } // 12 桁トリップ return (0, creators_1.create12DigitsTrip)(key); }; exports.createTripByKey = createTripByKey; const createTripByText = (text, options) => { const indexOfSharp = (() => { const indexOfHalfWidthSharp = text.indexOf('#'); const indexOfFullWidthSharp = text.indexOf('#'); if (indexOfHalfWidthSharp >= 0) return indexOfHalfWidthSharp; if (indexOfFullWidthSharp >= 0) return indexOfFullWidthSharp; return -1; })(); if (indexOfSharp < 0) return maskSpecialSymbols(text); const name = text.substr(0, indexOfSharp); const key = text.substr(indexOfSharp + 1); const whitespaceIfNeeded = options?.hideWhitespace ? '' : ' '; return `${maskSpecialSymbols(name)}${whitespaceIfNeeded}${(0, exports.createTripByKey)(key)}`; }; exports.createTripByText = createTripByText; const createTrip = (text, options) => (0, exports.createTripByText)(text, options); exports.createTrip = createTrip;