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);
 |