<<display ActualStart>>
One day I saw <html><span class="randomAdjective">...</span></html> <html><span class="hereIsANoun">...</span></html>. I took it, but later that day I was feeling <html><span class="commonAdjectiveWithNoArticle">...</span></html> so I traded it for <html><span class="randomAdjective">...</span></html> <html><span class="hereIsANoun">...</span></html>.\n\n[[Click here for another|ActualStart]]\n\n<<randomWord randomAdjective adj 1000 article>>\n<<randomWord hereIsANoun noun 1000>>\n<<randomWord commonAdjectiveWithNoArticle adj 10000>>
Using Random Words
var API_KEY = 'd4711e36506fe047f12970c6fdc0b43f6e4fef2e855e03d5c';\n\n//Erik Karlsson's JSONP fetching script, from here: https://github.com/IntoMethod/Lightweight-JSONP\nJSONP = (function () {\n var counter = 0,\n head, window = this,\n config = {};\n\n function load(url, pfnError) {\n var script = document.createElement('script'),\n done = false;\n script.src = url;\n script.async = true;\n\n var errorHandler = pfnError || config.error;\n if (typeof errorHandler === 'function') {\n script.onerror = function (ex) {\n errorHandler({\n url: url,\n event: ex\n });\n };\n }\n\n script.onload = script.onreadystatechange = function () {\n if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {\n done = true;\n script.onload = script.onreadystatechange = null;\n if (script && script.parentNode) {\n script.parentNode.removeChild(script);\n }\n }\n };\n\n if (!head) {\n head = document.getElementsByTagName('head')[0];\n }\n head.appendChild(script);\n }\n\n function encode(str) {\n return encodeURIComponent(str);\n }\n\n function jsonp(url, params, callback, callbackName) {\n var query = (url || '').indexOf('?') === -1 ? '?' : '&',\n key;\n\n callbackName = (callbackName || config['callbackName'] || 'callback');\n var uniqueName = callbackName + "_json" + (++counter);\n\n params = params || {};\n for (key in params) {\n if (params.hasOwnProperty(key)) {\n query += encode(key) + "=" + encode(params[key]) + "&";\n }\n }\n\n window[uniqueName] = function (data) {\n callback(data);\n try {\n delete window[uniqueName];\n } catch (e) {}\n window[uniqueName] = null;\n };\n\n load(url + query + callbackName + '=' + uniqueName);\n return uniqueName;\n }\n\n function setDefaults(obj) {\n config = obj;\n }\n return {\n get: jsonp,\n init: setDefaults\n };\n}());\n\n\n// the randomWord macro\ntry {\n version.extensions['randomWordMacro'] = {\n major: 1,\n minor: 0,\n revision: 0\n };\n macros['randomWord'] = {\n handler: function (place, macroName, params, parser) {\n if (params[3] === undefined) params[3] = '';\n if (params[2] === undefined) params[2] = 1000;\n if (params[1] === undefined) params[1] = "noun";\n if (params[0] === undefined) params[0] = "";\n var url = '';\n if (params[1] === 'adj') {\n url = 'http://api.wordnik.com//v4/words.json/randomWords?hasDictionaryDef=true&includePartOfSpeech=adjective&limit=2&minCorpusCount=' + params[2] + '&api_key='+API_KEY;\n } else {\n url = 'http://api.wordnik.com/v4/words.json/randomWords?minCorpusCount=' + params[2] + '&minDictionaryCount=5&excludePartOfSpeech=proper-noun,proper-noun-plural,proper-noun-posessive,suffix,family-name,idiom,affix&hasDictionaryDef=true&includePartOfSpeech=noun&limit=2&maxLength=22&api_key='+API_KEY;\n }\n JSONP.get(url, {}, function (data) {\n\n var els = document.getElementsByClassName(params[0]);\n for (var i = 0; i < els.length; i++) {\n var first = data[i].word.substr(0, 1);\n if (params[3] === 'article') {\n var article = "a";\n if (first === 'a' || first === 'e' || first === 'i' || first === 'o' || first === 'u') {\n article = "an";\n }\n } else {\n var article = '';\n }\n\n\n els[i].innerHTML = article + " " + data[i].word;\n\n };\n });\n\n },\n init: function () {\n },\n };\n} catch (e) {\n throwError(place, "randomWord Setup Error: " + e.message);\n}\n\n// Some code to kill the fade-in that happens, which reinitiatlizes all the text elements and messes up my script\nHistory.prototype.originalDisplay = History.prototype.display;\nHistory.prototype.display = function (title, link, render) {\n this.originalDisplay(title, link, 'quietly');\n};