mirror of
https://github.com/elder-plinius/P4RS3LT0NGV3.git
synced 2026-06-01 12:41:48 +02:00
dc10a90851
- Implement tool registry system with individual tool modules - Reorganize transformers into categorized source modules - Remove emojiLibrary.js, consolidate into EmojiUtils and emojiData - Fix mobile close button and tooltip functionality - Add build system for transforms and emoji data - Migrate from Python backend to pure JavaScript - Add comprehensive documentation and testing - Improve code organization and maintainability - Ignore generated files (transforms-bundle.js, emojiData.js)
42 lines
1.6 KiB
JavaScript
42 lines
1.6 KiB
JavaScript
// vigenere transform
|
|
import BaseTransformer from '../BaseTransformer.js';
|
|
|
|
export default new BaseTransformer({
|
|
|
|
name: 'Vigenère Cipher',
|
|
priority: 60,
|
|
key: 'KEY',
|
|
func: function(text) {
|
|
const key = this.key;
|
|
let out = '';
|
|
let j = 0;
|
|
for (let i=0;i<text.length;i++) {
|
|
const c = text[i];
|
|
const code = c.charCodeAt(0);
|
|
const k = key[j % key.length].toUpperCase().charCodeAt(0) - 65;
|
|
if (code >= 65 && code <= 90) { out += String.fromCharCode(65 + ((code-65 + k)%26)); j++; }
|
|
else if (code >= 97 && code <= 122) { out += String.fromCharCode(97 + ((code-97 + k)%26)); j++; }
|
|
else out += c;
|
|
}
|
|
return out;
|
|
},
|
|
preview: function(text) {
|
|
if (!text) return '[Vigenère]';
|
|
return this.func(text.slice(0,8)) + (text.length>8?'...':'');
|
|
},
|
|
reverse: function(text) {
|
|
const key = this.key;
|
|
let out = '';
|
|
let j = 0;
|
|
for (let i=0;i<text.length;i++) {
|
|
const c = text[i];
|
|
const code = c.charCodeAt(0);
|
|
const k = key[j % key.length].toUpperCase().charCodeAt(0) - 65;
|
|
if (code >= 65 && code <= 90) { out += String.fromCharCode(65 + ((code-65 + 26 - (k%26))%26)); j++; }
|
|
else if (code >= 97 && code <= 122) { out += String.fromCharCode(97 + ((code-97 + 26 - (k%26))%26)); j++; }
|
|
else out += c;
|
|
}
|
|
return out;
|
|
}
|
|
|
|
}); |