'use strict';

var from          = require('es5-ext/array/from')
  , iterable      = require('es5-ext/iterable/validate-object')
  , stringifiable = require('es5-ext/object/validate-stringifiable')
  , repeat        = require('es5-ext/string/#/repeat')
  , strip         = require('./strip');

module.exports = function (rows/*, options*/) {
	var options = Object(arguments[1]), cols = []
	  , colsOptions = options.cols || [];
	return from(iterable(rows), function (row, index) {
		return from(iterable(row), function (str, index) {
			var col = cols[index], strLength;
			if (!col) col = cols[index] = { width: 0 };
			str = stringifiable(str);
			strLength = strip(str).length;
			if (strLength > col.width) col.width = strLength;
			return { str: str, length: strLength };
		});
	}).map(function (row) {
		return row.map(function (item, index) {
			var pad, align = 'left', colOptions = colsOptions && colsOptions[index];
			align = (colOptions && (colOptions.align === 'right')) ? 'right' : 'left';
			pad = repeat.call(' ', cols[index].width - item.length);
			if (align === 'left') return item.str + pad;
			else return pad + item.str;
		}).join((options.sep == null) ? ' | ' : options.sep);
	}).join('\n') + '\n';
};

@@ -18,32 +18,36 @@
 r from          
+    
 = require('es5-e
@@ -76,24 +76,28 @@
 erable      
+   
+ 
 = require('e
@@ -148,16 +148,20 @@
 ifiable 
+    
 = requir
@@ -213,32 +213,36 @@
 , repeat        
+ 
+   
 = require('es5-e
@@ -270,21 +270,25 @@
   , 
-strip        
+getStrippedLength
  = r
@@ -297,21 +297,35 @@
 uire('./
+get-
 strip
+ped-length
 ');%0A%0Amod
@@ -693,25 +693,30 @@
 h = 
-strip(str).length
+getStrippedLength(str)
 ;%0A%09%09

Use getStrippedLength instead of strip