function dumpModernizr(){
var str = '';
dumpModernizr.old = dumpModernizr.old || {};
for (var prop in Modernizr) {
// skip previously done ones.
if (dumpModernizr.old[prop]) continue;
else dumpModernizr.old[prop] = true;
if (typeof Modernizr[prop] === 'function') continue;
// skip unit test items
if (/^test/.test(prop)) continue;
if (~TEST.inputs.indexOf(prop)) {
str += '
'+prop+'{}';
for (var field in Modernizr[prop]) {
str += '- ' + field + ': ' + Modernizr[prop][field] + '
';
}
str += '
';
} else {
str += '' + prop + ': ' + Modernizr[prop] + '';
}
}
return str;
}
function grabFeatDetects(){
// thx github.js
$.getScript('https://api.github.com/repos/Modernizr/Modernizr/git/trees/master?recursive=1&callback=processTree');
}
function processTree(data){
var filenames = [];
for (var i = 0; i < data.data.tree.length; i++){
var file = data.data.tree[i];
var match = file.path.match(/^feature-detects\/(.*)/);
if (!match) continue;
var relpath = location.host == "modernizr.github.com" ?
'../modernizr-git/' : '../';
filenames.push(relpath + match[0]);
}
var jqxhrs = filenames.map(function(filename){
return jQuery.getScript(filename);
});
jQuery.when.apply(jQuery, jqxhrs).done(resultsToDOM);
}
function resultsToDOM(){
var modOutput = document.createElement('div'),
ref = document.getElementById('qunit-testresult') || document.getElementById('qunit-tests');
modOutput.className = 'output';
modOutput.innerHTML = dumpModernizr();
ref.parentNode.insertBefore(modOutput, ref);
// Modernizr object as text
document.getElementsByTagName('textarea')[0].innerHTML = JSON.stringify(Modernizr);
}
/* uno */ resultsToDOM();
/* dos */ grabFeatDetects();
/* tres */ setTimeout(resultsToDOM, 5e3);
/* quatro */ setTimeout(resultsToDOM, 15e3);