Skip to content

Instantly share code, notes, and snippets.

@phiggins42
Created December 15, 2010 13:41
Show Gist options
  • Save phiggins42/741947 to your computer and use it in GitHub Desktop.
Save phiggins42/741947 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<title>AbstractComparingFactoryThingInterface (or A Simple Dojo Image Comparing Thinger)</title>
<style type="text/css">
p {
font:14px Helvetica Neue,Arial,sans-serif;
}
</style>
</head>
<body class="claro">
<h1>Cheney.js</h1>
<!-- sample data -->
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed aliquam tempor justo id dapibus. Nunc quis magna purus. In vel nibh lorem. Praesent quis erat sem, vel dictum neque. Aenean commodo dui sed felis blandit vehicula. Donec scelerisque neque in eros gravida non sollicitudin nisl tempus. Sed nec risus diam. In a arcu dolor. Suspendisse lobortis luctus pharetra. Maecenas at erat eget est aliquet ultrices ac in nisi.</p>
<p>Quisque at risus quis lorem sollicitudin hendrerit eu quis nunc. Quisque dapibus suscipit quam id pulvinar. Proin sollicitudin tristique pulvinar. Aliquam sagittis ipsum nec ante pellentesque malesuada. In blandit semper molestie. Etiam euismod, mauris sed dictum molestie, lorem mi pulvinar arcu, in feugiat lectus lectus a nunc. Phasellus lacinia hendrerit ante, sed auctor velit convallis ut. Pellentesque sit amet feugiat eros. Nulla nec nisi et turpis mollis sollicitudin. Aenean tortor dolor, dapibus eget pretium vitae, porta eu nisi. Nulla fermentum auctor arcu eu gravida. Donec convallis, nisl vel faucibus ultrices, velit libero congue massa, a interdum urna orci in elit. Phasellus mollis fermentum tellus vitae bibendum. Ut et mi nec nisi dignissim viverra.</p>
<p>Sed congue, risus nec pellentesque placerat, arcu ante convallis lorem, sit amet facilisis orci lacus id tortor. Nam interdum dui vel erat condimentum non adipiscing lectus rutrum. Duis lacinia nisi eget turpis tristique eget dictum libero rhoncus. Nulla rhoncus, ipsum dictum pulvinar placerat, urna lorem faucibus lacus, id gravida diam tellus at felis. Fusce in mi justo. Suspendisse imperdiet convallis urna, quis rutrum purus iaculis malesuada. Integer at commodo justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer gravida sapien eget lacus rutrum lobortis. Donec nibh lectus, molestie vitae feugiat vitae, ultricies quis velit. Suspendisse massa velit, pretium quis egestas in, fringilla ut dui. Fusce vel nisl ac sapien condimentum adipiscing. Sed at pretium odio. Morbi blandit porta rhoncus.</p>
<p>Sed gravida malesuada elit, vel bibendum est faucibus et. Etiam cursus posuere leo. Quisque non porttitor ante. Duis faucibus, dui eget scelerisque iaculis, nulla libero vehicula enim, in pulvinar nisl massa non elit. Sed a odio id felis iaculis tincidunt. Curabitur porta aliquam libero nec elementum. Etiam lobortis elementum sem, eu gravida ante dignissim a. Vivamus eget justo tortor. Suspendisse ac purus nisi, ut adipiscing ipsum. Aliquam neque urna, tempus eu adipiscing sit amet, malesuada ac ligula. Nulla consectetur mi id urna sagittis ut sollicitudin sem volutpat. Integer rutrum libero volutpat eros euismod a ornare purus accumsan. Sed in dolor non massa hendrerit elementum quis ut risus.</p>
<p>Nullam commodo augue vitae massa adipiscing tincidunt. Phasellus vulputate felis vitae felis eleifend eget gravida risus varius. Suspendisse in ipsum non justo pulvinar rutrum. Nunc eu sapien sed nisi luctus accumsan eget id justo. Donec quam mi, lobortis a elementum a, varius nec massa. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean quam mi, congue et laoreet eu, dictum ac nisi. Nam tempor arcu eu augue pharetra mollis. Proin eu libero sapien, vitae suscipit tortor. Curabitur placerat viverra mi a iaculis. Ut pretium, nulla at tristique dignissim, risus metus imperdiet neque, adipiscing pretium nisl eros eu neque. Vestibulum id arcu in ligula porttitor volutpat. Donec id arcu vitae orci molestie laoreet. Nulla lobortis, augue in pellentesque mollis, quam risus ultricies felis, a rutrum quam justo vitae sapien. Duis vulputate, leo eget aliquet tristique, metus nulla dapibus justo, non tristique nisl tellus vel nisi.</p>
<!-- teh code -->
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js"></script>
<script>
(function(){
// a small list of fearmongering to suffice until spook.list is loaded
var badWords = [
"bush", "terror", "terrorist", "bomb", "iran", "al qieda", "hezbolah", "war", "December 15th"
];
// this is the spooklist from [url]
var spooklistLoaded, spooklist = [];
// Array.prototype.rand = function(){
// return rand(this);
// }
function rand(ar){
return ar[Math.floor(Math.random() * (ar.length - 1))];
}
// return a scary word. from the short list, or from the longlist if it's loaded
function randomFearMongering(){
if(spooklistLoaded){
return rand(spooklist);
}else{
dojo.xhrGet({
url:"spook.list",
load:function(data){
spooklist = data.match(/\w+/gi);
spooklistLoaded = true;
}
});
return rand(badWords);
}
}
// simple random bool:
function completelyRandom(n){
return Math.random() > n;
}
// return a string of length of black blocks
function block(length){
return (new Array(length)).join("\u2588");
}
// find the words in this textNode `n`, and replace them with things.
function chenify(n){
var words = n.textContent.match(/\w+/g);
dojo.forEach(words, function(word){
var re = new RegExp(word, "i");
// if it's a known badword, or passes some random condition: replace it:
if(~dojo.indexOf(badWords, word.toLowerCase()) || completelyRandom(0.35)){
// black it out or replace it with some random fearmongering
n.textContent = n.textContent.replace(re, completelyRandom(0.65) ? randomFearMongering() : block(word.length));
}
});
}
// chenify only textnodes. process children for textnodes of their own
function scanchildren(node){
dojo.forEach(node.childNodes, function(n){
if(n.nodeType == 3){
chenify(n);
}else{
scanchildren(n);
}
});
}
// export the cheny plugin on NodeList from `scanchildren`
dojo.NodeList.prototype.cheney = dojo.NodeList._adaptAsForEach(scanchildren);
})();
dojo.ready(function(){
// test the plugin on the <p> elems
dojo.query("p").cheney();
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment