<commit_before>//////////////////////////////
// Swig
//  - A Gulp Plugin
//
// Builds Swig to HTML
//////////////////////////////
'use strict';

//////////////////////////////
// Variables
//////////////////////////////
var through = require('through2'),
    gutil = require('gulp-util'),
    swig = require('swig'),
    PluginError = gutil.PluginError,
    PLUGIN_NAME = 'swig';

//////////////////////////////
// Set Swig stuff
//////////////////////////////
swig.setDefaults({
  'loader': swig.loaders.fs(process.cwd() + '/templates')
});

//////////////////////////////
// Export
//////////////////////////////
module.exports = function (options) {
  options = options || {};

  //////////////////////////////
  // Command line arguments for each option
  //////////////////////////////
  process.argv.forEach(function (val, index, array) {
    if (index >= 3) {
      switch (val) {
        case '--fail': options.failOnError = true; break;
      }
    }
  });

  //////////////////////////////
  // Through Object
  //////////////////////////////
  var compile = through.obj(function (file, encoding, cb) {
    /////////////////////////////
    // Default plugin issues
    //////////////////////////////
    if (file.isNull()) {
      return cb();
    }
    if (file.isStream()) {
      this.emit('error', new PluginError(PLUGIN_NAME, 'Streams are not supported!'));
      return cb();
    }

    //////////////////////////////
    // Manipulate Files
    //////////////////////////////
    console.log(file.meta);
    if (file.meta) {
      file.meta.filename = file.path;

      if (file.meta.template) {
        file.contents = new Buffer(swig.render(
          '{% extends "' + file.meta.template + '" %}' +
          '{% block title %}' + file.meta.title + '{% endblock %}' +
          '{% block content %}' + file.contents.toString() + '{% endblock %}'
          , file.meta)
        );
      }
      else {
        file.contents = new Buffer(swig.render(file.contents.toString(), file.meta));
      }


    }

    //////////////////////////////
    // Push the file back to the stream!
    //////////////////////////////
    this.push(file);

    //////////////////////////////
    // Callback to tell us we're done
    //////////////////////////////
    cb();
  })

  return compile;
}<commit_msg>:bug: Make recompiling work<commit_after>//////////////////////////////
// Swig
//  - A Gulp Plugin
//
// Builds Swig to HTML
//////////////////////////////
'use strict';

//////////////////////////////
// Variables
//////////////////////////////
var through = require('through2'),
    gutil = require('gulp-util'),
    path = require('path'),
    PluginError = gutil.PluginError,
    PLUGIN_NAME = 'swig',
    gulpSwig;

//////////////////////////////
// Set Swig stuff
//////////////////////////////


//////////////////////////////
// Export
//////////////////////////////
gulpSwig = function (options) {
  options = options || {};

  var swig = gulpSwig.compiler;

  swig.setDefaults({
    'loader': swig.loaders.fs(process.cwd() + '/templates'),
    'cache': false
  });

  //////////////////////////////
  // Command line arguments for each option
  //////////////////////////////
  process.argv.forEach(function (val, index, array) {
    if (index >= 3) {
      switch (val) {
        case '--fail': options.failOnError = true; break;
      }
    }
  });

  //////////////////////////////
  // Through Object
  //////////////////////////////
  var compile = through.obj(function (file, encoding, cb) {
    var ext = path.extname(file.path),
        context = {};

    /////////////////////////////
    // Default plugin issues
    //////////////////////////////
    if (file.isNull()) {
      return cb();
    }
    if (file.isStream()) {
      this.emit('error', new PluginError(PLUGIN_NAME, 'Streams are not supported!'));
      return cb();
    }

    //////////////////////////////
    // Manipulate Files
    //////////////////////////////
    if (ext === '.html') {
      if (file.meta) {
        context.locals = file.meta;
        context.filename = file.path;

        // If a template exists in the meta info, build a content block and extend for it
        if (file.meta.template) {
          file.contents = new Buffer(swig.render(
            '{% extends "' + file.meta.template + '" %}' +
            '{% block content %}' + file.contents.toString() + '{% endblock %}'
            , context)
          );
        }
        // Otherwise, just render it!
        else {
          file.contents = new Buffer(swig.render(file.contents.toString(), context));
        }
      }
    }

    //////////////////////////////
    // Push the file back to the stream!
    //////////////////////////////
    this.push(file);

    //////////////////////////////
    // Callback to tell us we're done
    //////////////////////////////
    cb();
  })

  return compile;
}

gulpSwig.compiler = require('swig');

module.exports = gulpSwig;
{'fraction_non_alphanumeric': 0.3562058526740666, 'fraction_numerical': 0.0008072653884964682, 'mean_word_length': 1.023683135973867, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3776059', 'n_tokens_mistral': 1283, 'n_tokens_neox': 1243, 'n_words': 291}