2ch-trip
Version:
2ch compatible trip generator
44 lines (43 loc) • 1.99 kB
JavaScript
;
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;