This repository has been archived on 2018-10-12. You can view files and clone it, but cannot push or open issues or pull requests.
node-task/node_modules/dust/docs/index.js

181 lines
4.3 KiB
JavaScript

jsDump.parsers['function'] = function(fn) {
return fn.toString();
}
function renderDemo() {
var tmpl = dust.cache["demo"],
source = $('#input-context').val();
$('#output-text').empty();
if (tmpl && source) {
setPending('#input-context');
setPending('#output-text');
try {
eval("var context = " + source + ";");
if (typeof context === 'function') {
context = context();
}
dust.stream("demo", context)
.on('data', function(data) {
$('#output-text').append(dust.escapeHtml(data));
})
.on('end', function() {
setOkay('#input-context');
setOkay('#output-text');
})
.on('error', function(err) {
setError('#input-context', err);
});
} catch(err) {
setError('#input-context', err);
}
}
}
function setOkay(sel) {
$(sel).next()
.removeClass('pending')
.addClass('ok')
.html('Ready');
}
function setPending(sel) {
$(sel).next()
.removeClass('ok')
.removeClass('error')
.addClass('pending')
.html('Pending');
}
function setError(sel, err) {
$(sel).next()
.removeClass('pending')
.addClass('error')
.html(err.toString());
}
function dump(obj) {
return js_beautify(jsDump.parse(obj), {
indent_size: 2
});
}
function runSuite() {
var suite = new uutest.Suite({
start: function() {
$('#test-console').empty();
},
pass: function() {
$('#test-console').append(".");
},
fail: function() {
$('#test-console').append("F");
},
done: function(passed, failed, elapsed) {
$('#test-console').append("\n");
$('#test-console').append(passed + " passed " + failed + " failed " + "(" + elapsed + "ms)");
this.errors.forEach(function(err) {
$('#test-console').append("\n");
$('#test-console').append(dust.escapeHtml(dumpError(err)));
});
}
});
coreSetup(suite, dustExamples.slice(1), dust);
suite.run();
}
function dumpError(err) {
var out = err.testName + " -> ";
if (!err.message) {
err.message = jsDump.parse(err.expected)
+ " " + err.operator + " " + jsDump.parse(err.actual);
}
return out + err.stack;
}
$(document).ready(function() {
dustExamples.forEach(function(ex) {
dust.loadSource(dust.compile(ex.source, ex.name));
});
runSuite();
$('#tagline').empty().show().css({left: ($(window).width() * .02) + 125});
dust.loadSource(dust.compile(dustExamples[0].source, "intro"));
dust.stream("intro", dustExamples[0].context())
.on('data', function(data) {
$('#tagline').append(data);
})
.on('end', function() {
$('#tagline').delay(500).fadeOut('slow');
});
dust.render("select", {
examples: dustExamples,
selected: function(chk, ctx) {
if (ctx.current().name === "replace") return "selected";
}
}, function(err, output) {
$('#select').html(output);
});
$('#select > select').change(function() {
var idx = $(this).val();
$('#input-source').val(dustExamples[idx].source);
$('#input-context').val(dump(dustExamples[idx].context));
$('#input-source').change();
});
$('#input-source').change(function() {
setPending('#input-source');
try {
var compiled = dust.compile($(this).val(), "demo");
dust.loadSource(compiled);
$('#output-js').text(js_beautify(compiled, {
indent_size: 2
}));
setOkay('#input-source');
} catch(err) {
setError('#input-source', err);
return;
}
renderDemo();
});
$('#input-context').change(renderDemo);
var sections = $("body > div");
var cur_id;
$(window).scroll(function() {
var scrollTop = $(window).scrollTop();
if (scrollTop === 0) {
cur_id = undefined;
$('.docked').remove();
return;
}
sections.each(function(idx, section) {
var sectionTop = section.offsetTop,
sectionBottom = sectionTop + section.offsetHeight;
if (scrollTop >= sectionTop && scrollTop < sectionBottom) {
var $hdr = $(section).find('.header').clone();
if (section.id !== cur_id) {
cur_id = section.id;
$('.docked').remove();
$hdr.appendTo('body');
$hdr.addClass('docked');
}
return false;
}
});
});
$('#select > select').change();
$(window).scroll();
});