JSFiddle - React, Tailwind, and code Playground

by JakobJingleheimer

HTML

<ol id="log"></ol>

CSS

#log {
    padding: 1em;
}

#log li {
    padding: 0.5em 0;
}

#log li + li {
    border-top: 1px solid #ddd;
}

#log span {
    font-family: monospace;
}

JavaScript

var Log  = document.getElementById('log'),
    domain = ('www.dragonage.com').split('.').splice(-2,2).join('.'),
    absUriRegex = /^(?:[a-z]+:)?\/\//i;

function updateLog(input) {
    Log.innerHTML += '<li>' + input + '</li>';
}

function send(href) {
    if ( ~href.indexOf('#!') && ( !absUriRegex.test(href) || ~href.indexOf(domain) ) ) {
        return true;
    }
    return false;
}

updateLog( 'send = <span>' + send('//bioware.com') + '</span> for //bioware.com');
updateLog( 'send = <span>' + send('//www.bioware.com') + '</span> for //www.bioware.com');
updateLog( 'send = <span>' + send('http://www.bioware.com') + '</span> for http://www.bioware.com');
updateLog( 'send = <span>' + send('https://www.bioware.com') + '</span> for https://www.bioware.com');
updateLog( 'send = <span>' + send('www.dragonage.com') + '</span> for www.dragonage.com');
updateLog( 'send = <span>' + send('//www.dragonage.com') + '</span> for //www.dragonage.com');
updateLog( 'send = <span>' + send('//assets.dragonage.com') + '</span> for //assets.dragonage.com');
updateLog( 'send = <span>' + send('#!/home') + '</span> for #!/home');
updateLog( 'send = <span>' + send('//www.dragonage.com/#!/home') + '</span> for //www.dragonage.com/#!/home');
updateLog( 'send = <span>' + send('http://www.dragonage.com/#!/home') + '</span> for http://www.dragonage.com/#!/home');
updateLog( 'send = <span>' + send('https://www.dragonage.com/#!/home') + '</span> for https://www.dragonage.com/#!/home');