docs: function factory(options) {
    options = _.extend({}, options, defaultOptions);
  
    if (!_.isString(options.warpAndWeftSeparator)) {
      options.warpAndWeftSeparator = '';
    }
    if (options.warpAndWeftSeparator == '') {
      options.warpAndWeftSeparator = index.warpAndWeftSeparator;
    }
  
    options.transformSyntaxTree = tartan.transform([
      options.transformSyntaxTree,
      tartan.transform.fold({
        allowRootReorder: false,
        allowNestedBlocks: false,
        maxFoldLevels: 2,
        minBlockSize: 3,
        greedy: false,
        allowSplitStripe: false,
        processExistingBlocks: false
      })
    ]);
  
    options.join = function(components) {
      var parts = [];
      if (components.colors.length > 0) {
        parts.push(components.colors.join(' '));
      }
      if (components.warp != components.weft) {
        parts.push(components.warp + ' ' + options.warpAndWeftSeparator +
          ' ' + components.weft);
      } else {
        parts.push(components.warp);
      }
      return parts.join('\n');
    };
  
    return tartan.render.format(options);
  }