Sha256: ac93bb2a0f827e2073bf84958bfe51c107d0235239c15a05188f2a061e8e16f4
Contents?: true
Size: 1.33 KB
Versions: 119
Compression:
Stored size: 1.33 KB
Contents
'use strict'; module.exports = function (input) { this.input = input; this.normalizePlaintext = function () { return input.toLowerCase().replace(/[^a-zA-Z0-9]/g, ''); }; this.size = function () { var realLength = Math.sqrt(this.normalizePlaintext().length); return Math.ceil(realLength); }; this.plaintextSegments = function () { var plainText = this.normalizePlaintext(); var chunkSize = this.size(); var splitRegex = new RegExp('.{1,' + chunkSize + '}', 'g'); return plainText.match(splitRegex); }; this.ciphertext = function () { var textSegments = this.plaintextSegments(); var i; var j; var columns = []; var currentSegment; var currentLetter; for (i = 0; i < this.size(); i++) { columns.push([]); } for (i = 0; i < textSegments.length; i++) { currentSegment = textSegments[i]; for (j = 0; j < currentSegment.length; j++) { currentLetter = currentSegment[j]; columns[j].push(currentLetter); } } for (i = 0; i < columns.length; i++) { columns[i] = columns[i].join(''); } return columns.join(''); }; this.normalizeCiphertext = function () { var chunkSize = this.size(); var splitRegex = new RegExp('.{1,' + chunkSize + '}', 'g'); return this.ciphertext().match(splitRegex).join(' '); }; };
Version data entries
119 entries across 119 versions & 1 rubygems