import base = require("./base"); declare var module: any; declare function require(name:string); declare var __filename: string; declare var __dirname: string; var gulp = require('gulp'); var path = require('path'); var $ = require('gulp-load-plugins')({lazy: true}); var _ = require('lodash'); class CompileHtml extends base.BaseTask { constructor() { super(); return this; } static watch:boolean = true; static dependency:any = ['cleanHtml']; static taskName:string = 'compileHtml'; static required:Array = [ 'coffeekup', 'gulp-jade', 'gulp-insert', 'gulp-prettify', 'gulp-rename', 'gulp-minify-html', 'gulp-bytediff' ]; static config(task, tasks, userOptions) { return { files: [ './source/**/*.jade', './source/**/*.html', './source/**/*.html.coffee' ], jade:{ config: { pretty: true }, filter: /[.]jade$/ }, coffee: { filter: function(file) { return !!file.path.match(/[.]html.coffee$/); } }, minify:{ filter: /[.]min.html$/, config: { conditionals: true, spare:true } } }; } static gulp(options, settings, task, tasks):void { CompileHtml.checkArguments(options, settings, task, tasks); var coffeekup = require('coffeekup'); var gulpRunner = options.gulp || gulp; var config = settings; var _ref; if (!(config != null ? (_ref = config.files) != null ? _ref.length : void 0 : void 0)) { return; } function transformCoffeeKup(contents) { return coffeekup.render(contents); } return gulpRunner.src(config.files, { base: config.base }) .pipe($.print()) .pipe($.plumber()) .pipe($["if"](config.jade.filter, $.jade(config.jade.config))) .pipe($["if"](config.coffee.filter, $.insert.transform(transformCoffeeKup))) .pipe($["if"](config.coffee.filter, $.rename(function (path) { if(!!path.basename.match(/[.]html$/)) { path.extname = ''; } }))) .pipe($.prettify({ indent_size: 2 })) .pipe($.bytediff.start()) .pipe($["if"](config.minify.filter, $.minifyHtml(config.minify.config))) .pipe($.bytediff.stop()) .pipe(gulp.dest(settings.dist || options.dist)); } } export = CompileHtml;