mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-02-14 09:39:56 +00:00
72 lines
2.2 KiB
JavaScript
Executable File
72 lines
2.2 KiB
JavaScript
Executable File
#!/usr/bin/env phantomjs
|
|
var system = require('system');
|
|
var filename = system.args[1];
|
|
var url = 'file://' + system.env.PWD + '/' + filename;
|
|
|
|
var page = require('webpage').create();
|
|
|
|
page.onResourceError = function(resourceError) {
|
|
console.log('ResourceError: ' + resourceError.url);
|
|
}
|
|
|
|
page.onConsoleMessage = function(msg) {
|
|
//console.log('Console: ' +msg);
|
|
}
|
|
|
|
console.log('DEBUG Loading: ' + url);
|
|
page.open(url, function(status) {
|
|
console.log('DEBUG Loaded: ' + url + '(' + status + ')');
|
|
|
|
/* analyze will be an object with:
|
|
*
|
|
* titles
|
|
* A dict with all the titles that are too high
|
|
* (i.e. because they have been broken across multiple
|
|
* lines because they are too long)
|
|
*
|
|
* slides
|
|
* A dict with the slides that are too high
|
|
*
|
|
* n_slides
|
|
* Number of slides found
|
|
*/
|
|
var analyze = page.evaluate(function() {
|
|
var ret = {}, i, n = slideshow.getSlideCount();
|
|
ret = [];
|
|
for (i=1; i<=n; i++) {
|
|
console.log('DEBUG Current slide: ' + i + '/' + n);
|
|
var visible_slide = document.getElementsByClassName('remark-visible')[0];
|
|
var debug = visible_slide.getElementsByClassName('debug');
|
|
if (debug.length==0) {
|
|
debug = '?';
|
|
}
|
|
else {
|
|
debug = debug[0].textContent;
|
|
}
|
|
var slide_desc = 'Slide ' + i + '/' + n + ' (' + debug + ')';
|
|
['h1', 'h2'].forEach(function(tag) {
|
|
var titles = visible_slide.getElementsByTagName(tag);
|
|
console.log('DEBUG Found ' + titles.length + ' titles with tag ' + tag);
|
|
titles.forEach(function(t) {
|
|
if (t.clientHeight>60) {
|
|
ret.push(slide_desc + ' has a long title: ' + t.textContent);
|
|
}
|
|
});
|
|
});
|
|
var scaler = visible_slide.getElementsByClassName('remark-slide-scaler')[0];
|
|
var slide = scaler.getElementsByClassName('remark-slide')[0];
|
|
if (slide.clientHeight > scaler.clientHeight) {
|
|
ret.push(slide_desc + ' is too long');
|
|
}
|
|
slideshow.gotoNextSlide();
|
|
}
|
|
ret.push('Deck has ' + n + ' slides');
|
|
return ret;
|
|
});
|
|
analyze.forEach(function(msg) {
|
|
console.log(msg);
|
|
});
|
|
console.log('DEBUG Done: ' + url + '(' + status + ')');
|
|
phantom.exit();
|
|
});
|