58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | // Generated by CoffeeScript 1.3.3
 | ||
|  | (function() { | ||
|  |   var scan; | ||
|  | 
 | ||
|  |   scan = function(string, pattern, callback) { | ||
|  |     var match, result; | ||
|  |     result = ""; | ||
|  |     while (string.length > 0) { | ||
|  |       match = string.match(pattern); | ||
|  |       if (match) { | ||
|  |         result += string.slice(0, match.index); | ||
|  |         result += callback(match); | ||
|  |         string = string.slice(match.index + match[0].length); | ||
|  |       } else { | ||
|  |         result += string; | ||
|  |         string = ""; | ||
|  |       } | ||
|  |     } | ||
|  |     return result; | ||
|  |   }; | ||
|  | 
 | ||
|  |   exports.split = function(line) { | ||
|  |     var field, words; | ||
|  |     if (line == null) { | ||
|  |       line = ""; | ||
|  |     } | ||
|  |     words = []; | ||
|  |     field = ""; | ||
|  |     scan(line, /\s*(?:([^\s\\\'\"]+)|'((?:[^\'\\]|\\.)*)'|"((?:[^\"\\]|\\.)*)"|(\\.?)|(\S))(\s|$)?/, function(match) { | ||
|  |       var dq, escape, garbage, raw, seperator, sq, word; | ||
|  |       raw = match[0], word = match[1], sq = match[2], dq = match[3], escape = match[4], garbage = match[5], seperator = match[6]; | ||
|  |       if (garbage != null) { | ||
|  |         throw new Error("Unmatched quote"); | ||
|  |       } | ||
|  |       field += word || (sq || dq || escape).replace(/\\(?=.)/, ""); | ||
|  |       if (seperator != null) { | ||
|  |         words.push(field); | ||
|  |         return field = ""; | ||
|  |       } | ||
|  |     }); | ||
|  |     if (field) { | ||
|  |       words.push(field); | ||
|  |     } | ||
|  |     return words; | ||
|  |   }; | ||
|  | 
 | ||
|  |   exports.escape = function(str) { | ||
|  |     if (str == null) { | ||
|  |       str = ""; | ||
|  |     } | ||
|  |     if (str == null) { | ||
|  |       return "''"; | ||
|  |     } | ||
|  |     return str.replace(/([^A-Za-z0-9_\-.,:\/@\n])/g, "\\$1").replace(/\n/g, "'\n'"); | ||
|  |   }; | ||
|  | 
 | ||
|  | }).call(this); |