JSFiddle - React, Tailwind, and code Playground
HTML
<input id="ip" value="127.0.0.1">
<button onclick="foo()">
Encode
</button>
<textarea id="output" cols="150" rows="5">
</textarea>
JavaScript
/*
** Hipku version 0.0.2
** Copyright (c) Gabriel Martin 2014
** All rights reserved
** Available under the MIT license
** http://gabrielmartin.net/projects/hipku
*/
;
var Hipku = (function() {
/*
** ##############
** Public Methods
** ##############
*/
/*
** Object holds all public methods and is returned by the module
*/
var publicMethods = {};
/*
** Public method to encode IP Addresses as haiku
*/
var encode = function(ip) {
var ipv6, decimalOctetArray, factoredOctetArray, encodedWordArray,
haikuText;
ipv6 = ipIsIpv6(ip);
decimalOctetArray = splitIp(ip, ipv6);
factoredOctetArray = factorOctets(decimalOctetArray, ipv6);
encodedWordArray = encodeWords(factoredOctetArray, ipv6);
haikuText = writeHaiku(encodedWordArray, ipv6);
return haikuText;
};
/*
** Public method to decode haiku into IP Addresses
*/
var decode = function(haiku) {
var wordArray, ipv6, factorArray, octetArray, ipString;
wordArray = splitHaiku(haiku);
ipv6 = haikuIsIpv6(wordArray);
factorArray = getFactors(wordArray, ipv6);
octetArray = getOctets(factorArray, ipv6);
ipString = getIpString(octetArray, ipv6);
return ipString;
};
/*
** Attach the public methods to the return object
*/
publicMethods.encode = encode;
publicMethods.decode = decode;
/*
** #############################
** Helper functions for encoding
** #############################
*/
function ipIsIpv6(ip) {
if (ip.indexOf(':') != -1) { return true; }
else if (ip.indexOf('.') != -1) { return false; }
else {
throw new Error('Formatting error in IP Address input.' +
' ' + 'Contains neither ":" or "."');
}
}
function splitIp(ip, ipv6) {
var octetArray, separator, v6Base, numOctets, decimalOctetArray;
octetArray = [];
decimalOctetArray = [];
v6Base = 16;
if (ipv6) {
separator = ':';
numOctets = 8;
} else {
separator = '.';
numOctets = 4;
}
/*
** Remove newline and space characters
*/
ip = ip.replace(/[\n\ ]/g, '');
octetArray =...