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