@superflycss/task-test
Version:
60 lines (51 loc) • 1.84 kB
JavaScript
//==================================================
// Task
// test:css
// For the description see
// [SupeflyCSS Test Task](https://github.com/superflycss/task-test/)
// IMPLEMENTATION
// 0: Support nunjucks template rendering within test markup
// 1: Cheerio copies content from `Test-markup`
// and appends it to the markup to the `Test-render`
//
//==================================================
var gulp = require('gulp');
// -0-
var nunjucksRender = require('gulp-nunjucks-render');
// -1-
var highlight = require('gulp-highlight');
var dom = require('gulp-jsdom');
var gutil = require('gulp-util');
var transform = require('vinyl-transform');
var predentation = require('predentation');
var pre = transform(function(options) {
return predentation(options);
});
var PLI = require('@superflycss/pli');
var renderTestBlock = '\n <div class="Test_render"></div>';
function insertAfter(referenceNode, newNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
//---------------------------------
gulp.task('test:css', function() {
return gulp
.src(PLI.SRC_TEST_HTML)
.pipe(dom(function(document){
document.querySelectorAll('.Test_markup > code').forEach((node)=>
{
var markup = node.innerHTML;
var testDescriptionNode =
node.parentElement.parentElement.nextElementSibling.querySelector('.Test_description');
var renderTestBlock = document.createElement('div');
renderTestBlock.innerHTML = markup;
renderTestBlock.setAttribute('class', "Test_render");
insertAfter(testDescriptionNode, renderTestBlock);
});
}))
.pipe(nunjucksRender({
path: [PLI.src.main.nunjucks]
}))
.pipe(highlight())
.pipe(pre)
.pipe(gulp.dest(PLI.target.test.html));
});