annotate hexagram-6ae12361157c/hexagram/jquery.tsv.js @ 0:1407e3634bcf draft default tip

Uploaded r11 from test tool shed.
author adam-novak
date Tue, 22 Oct 2013 14:17:59 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
1 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
2 * jQuery-tsv (jQuery Plugin)
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
3 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
4 * Inspired by jQuery-csv by Evan Plaice.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
5 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
6 * Copyright 2012 by Bob Kerns
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
7 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
8 * This software is licensed as free software under the terms of the MIT License:
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
9 * http://www.opensource.org/licenses/mit-license.php
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
10 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
11
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
12 (function ($) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
13 // Make sure we have a copy, not original, of $.tsv.options.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
14 function copyOptions(options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
15 return $.extend({__copy: true}, options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
16 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
17 // Default the options.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
18 function tsvOptions(options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
19 if (options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
20 if (options.__defaults_applied) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
21 return options;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
22 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
23 return $.extend(copyOptions($.tsv.options), options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
24 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
25 return copyOptions($.tsv.options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
26 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
27
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
28 function tsvColumn(options, index) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
29 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
30 return String(opts.columns ? opts.columns[index] : index);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
31 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
32
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
33 function tsvColumns(options, top) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
34 if (options.columns) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
35 return options.columns;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
36 } else {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
37 var cols = Object.keys(top || {}).sort();
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
38 options.columns = cols;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
39 return cols;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
40 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
41 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
42
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
43 $.tsv = {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
44 version: "0.957",
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
45 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
46 * The default set of options. It is not recommended to change these, as the impact will be global
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
47 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
48 options: {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
49 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
50 * If supplied, a function to format a value on output.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
51 * The returned value is used in the output instead of the supplied value.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
52 * If not supplied, it is simply converted to a string.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
53 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
54 * @param value the value to be formatted.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
55 * @param the options
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
56 * @param colnum the column number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
57 * @param colname the column name, if known, or the column number as a string.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
58 * @param rownum the row number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
59 * @returns the value, formatted
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
60 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
61 formatValue: null,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
62 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
63 * If supplied, a function to parse or canonicalize a value on input.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
64 * The returned value is used in place of the input.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
65 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
66 * @param value the value to be formatted.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
67 * @param the options
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
68 * @param colnum the column number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
69 * @param colname the column name, if known, or the column number as a string.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
70 * @param rownum the row number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
71 * @returns the value, parsed
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
72 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
73 parseValue: null,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
74 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
75 * The character sequence to use to separate lines.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
76 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
77 lineSeparator: "\n",
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
78 /** A RegExp to recognize line separators */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
79 lineSplitter: /\r?\n/,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
80 /** The character sequence to use to separate values. */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
81 valueSeparator: "\t",
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
82 /** A RegExp to recognize value separators. */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
83 valueSplitter: /\t/,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
84 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
85 * If supplied, a function of one argument to convert a row to an object.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
86 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
87 * @param row an array of values, e.g. ["1", "2", "3.14"]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
88 * @param options { columns: ["id", "count", "price"] }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
89 * @returns e.g. {id: "1", count: "2", price: "3.14"}
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
90 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
91 arrayToObject: null,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
92 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
93 * If supplied, a function of one argument to convert an object to a row. Typically, this will implement a variant
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
94 * of the contract for $.tsv.objectToArray.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
95 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
96 * @param object an object to be converted to a row, e.g. {id: "1", count: "2", price: "3.14"}
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
97 * @param options { columns: ["id", "count", "price"] }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
98 * @returns an array of values, e.g. ["1", "2", "3.14"]. Typically these would be ordered by options.column
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
99 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
100 objectToArray: null,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
101 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
102 * If true, when converting from an array of objects to a TSV string, include the column names as the
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
103 * first line. For most purposes, you won't want to override this, but if you're working with tables in sections,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
104 * for example, you'd want to suppress this for the latter segments.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
105 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
106 * But you are strongly encouraged to use column names whenever possible, especially if you work with objects.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
107 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
108 includeHeader: true,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
109 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
110 * The starting row number, not counting the header, if any (which is always numbered -1).
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
111 * This can be useful for computing subranges of a table, or appending to a table.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
112 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
113 startRownum: 0,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
114 // An internal flag, to avoid multiple defaulting steps.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
115 // values are true, if it is this default, or 'copy'.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
116 ___defaults_applied: true,
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
117 extend: $.extend
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
118 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
119
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
120 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
121 * Parse one value. This can be overridden in the options.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
122 * @param value the string to parse
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
123 * @param options optional: { parseValue: <substitute function> }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
124 * @param colnum the column number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
125 * @param colname the column name, if known, or the column number as a string.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
126 * @param rownum the row number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
127 * @returns the string
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
128 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
129 parseValue: function parseValue(value, options, colnum, colname, rownum) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
130 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
131 if (opts.parseValue) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
132 // We have an override; use that instead.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
133 return options.parseValue(value, opts, colnum, colname, rownum);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
134 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
135 return value;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
136 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
137
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
138 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
139 * Format one value. This can be overridden in the options.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
140 * @param value the value to format
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
141 * @param options optional: { formatValue: <substitute function> }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
142 * @param colnum the column number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
143 * @param colname the column name, if known, or the column number as a string.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
144 * @param rownum the row number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
145 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
146 formatValue: function formatValue(value, options, rownum, colnum, colname, rownum) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
147 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
148 if (opts.formatValue) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
149 // We have an override; use that instead.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
150 return options.formatValue(value, opts, colnum, colname, rownum);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
151 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
152 return String(value);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
153 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
154
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
155 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
156 * $.tsv.toArray(line, options) parses one line of TSV input into an array of values.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
157 * @param line A line with values separated by single tab characters, e.g. "11\t12\t13"
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
158 * @param options optional: { valueSplitter: /\t/, parseValue: <a function to parse each value>}
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
159 * @param rownum optional: the row number (defaults to 0);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
160 * @returns an array of values, e.g. ["11" "12", "13"]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
161 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
162 toArray: function toArray(line, options, rownum) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
163 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
164 var valueSplitter = opts.valueSplitter;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
165 rownum = rownum || 0;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
166 var colnum = 0;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
167 function doValue(val) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
168 var c = colnum++;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
169 return $.tsv.parseValue(val, opts, c, tsvColumn(opts, c), rownum);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
170 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
171 return line.split(valueSplitter).map(doValue);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
172 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
173
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
174 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
175 * $.tsv.fromArray(row, options) returns one line of TSV input from an array of values.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
176 * @param array an array of values, e.g. ["11" "12", "13"]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
177 * @param options optional: { valueSeparator: "\t", formatValue: <a function to format each value>}
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
178 * @param rownum optional: the row number (defaults to 0);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
179 * @returns A line with values separated by single tab characters, e.g. "11\t12\t13"
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
180 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
181 fromArray: function fromArray(array, options, rownum) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
182 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
183 var valueSeparator = opts.valueSeparator;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
184 var colnum = 0;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
185 function doValue(val) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
186 var c = colnum++;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
187 return $.tsv.formatValue(val, opts, c, tsvColumn(c), rownum);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
188 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
189 return array.map(doValue).join(valueSeparator);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
190 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
191
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
192 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
193 * $.tsv.toArrays(tsv, options) returns an array of arrays, one per line, each containing values from one row.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
194 * @param tsv a tab-separated-values input, e.g. "11\t\12\t13\n21\t22\t23"
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
195 * @param options optional: { valueSplitter: /\t/, lineSplitter: /\r?\n/, parseValue: <a function to parse each value> }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
196 * @returns an array of arrays, e.g. [["11", "12", "13"], ["21", "22", "23"]]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
197 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
198 toArrays: function toArrays(tsv, options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
199 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
200 var lines = tsv.split(opts.lineSplitter);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
201 var rownum = opts.startRownum || 0;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
202 return lines.map(function doLine(line) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
203 return $.tsv.toArray(line, opts, rownum++);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
204 });
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
205 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
206
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
207 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
208 * $.tsv.fromArrays(array, options) returns a TSV string representing the array of row arrays.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
209 * @param array an array of arrays of values. To produce valid TSV, all the arrays should be of the same length.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
210 * @param options optional: { valueSeparator: "\t", lineSeparator: "\n", columns: ["c1", "c2", "c3"], formatValue: <a function to format each value> }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
211 * @returns An tsv string, e.g. "c1\tc2\tc3\n11\t\12\t13\n21\t22\t23"
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
212 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
213 fromArrays: function fromArrays(array, options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
214 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
215 var first = array.length ? array[0] : [];
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
216 var cols = tsvColumns(opts, first);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
217 var rownum = opts.startRownum || 0;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
218 var header = opts.includeHeader ? $.tsv.fromArray(cols, opts, -1) : undefined;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
219 function doRow(row) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
220 return $.tsv.fromArray(row, opts, rownum++);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
221 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
222 var rtemp = array.map(doRow);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
223 if (header) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
224 rtemp.unshift(header);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
225 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
226 return rtemp.join(opts.lineSeparator);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
227 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
228
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
229 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
230 * $.tsv.arrayToObject(row, options) returns an object whose fields are named in options.columns, and
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
231 * whose values come from the corresponding position in row (an array of values in the same order).
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
232 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
233 * If the columns are not supplied, "0", "1", etc. will be used.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
234 * @param row the values, e.g. ["v1", "v2"]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
235 * @param options optional: { columns: ["name1", "name2"], rowToObject: <optional conversion function to call instead> }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
236 * @param rownum optional: the row number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
237 * @returns an object derived from the elements of the row.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
238 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
239 arrayToObject: function arrayToObject(row, options, rownum) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
240 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
241 rownum = rownum || 0;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
242 var columns = tsvColumns(opts, row);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
243 if (opts.arrayToObject) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
244 // We have an override; use that instead.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
245 return opts.arrayToObject(row, opts, rownum);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
246 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
247 var dict = {};
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
248 for (var j = 0; j < columns.length; j++) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
249 dict[columns[j]] = row[j];
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
250 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
251 return dict;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
252 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
253
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
254 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
255 * $.tsv.arraysToObjects(array, options) returns an array of objects, derived from the array.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
256 * The array must either have the first row be column names, or columns: ["name1", "name2", ...] must be supplied
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
257 * in the options.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
258 * @param array an array of arrays of values. [ ["name1", "name2" ...],? ["val1", "val2" ...] ...]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
259 * @param options optional: { columns: ["name1", "name2", ...] }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
260 * @returns An array of objects, [ { name1: val1, name2: val2 ... } ... ]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
261 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
262 arraysToObjects: function arraysToObjects(array, options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
263 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
264 if (! opts.columns) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
265 opts.columns = array.shift();
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
266 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
267 var rownum = opts.startRownum || 0;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
268 return array.map(function convert(row) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
269 return $.tsv.arrayToObject(row, opts, rownum++);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
270 });
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
271 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
272
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
273 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
274 * $.tsv.toObjects(tsv, options) returns an array of objects from a tsv string.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
275 * The string must either have the first row be column names, or columns: ["name1", "name2", ...] must be supplied
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
276 * in the options.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
277 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
278 * @param A TSV string, e.g. "val1\tval2..." or "name1\tname2...\n\val1\val2..."
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
279 * @param options optional: { columns ["name1", "name2" ...] }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
280 * @returns an array of objects, e.g. [ {name1: val1, name2: val2 ...} ...]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
281 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
282 toObjects: function toObjects(tsv, options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
283 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
284 return $.tsv.arraysToObjects($.tsv.toArrays(tsv, opts), opts);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
285 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
286
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
287 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
288 * $.tsv.objectToArray(obj, options) Convert one object to an array representation for storing as a TSV line.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
289 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
290 * @param obj an object to convert to an array representations, e.g. { name1: "val1", name2: "val2" ... }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
291 * @param options optional: { columns: ["name1", "name2"], objectToArray: <a function to use instead> }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
292 * @param rownum optional: the row number
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
293 * @result an array, e.g. ["val1", "val2"]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
294 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
295 objectToArray: function objectToArray(obj, options, rownum) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
296 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
297 var columns = tsvColumns(opts, obj);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
298 rownum = rownum || 0;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
299 if (opts.objectToArray) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
300 // We have an override; use that instead.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
301 return opts.objectToArray(obj, opts, rownum);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
302 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
303 var row = [];
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
304 for (var j = 0; j < columns.length; j++) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
305 row.push(obj[columns[j]]);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
306 }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
307 return row;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
308 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
309
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
310 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
311 * $.tsv.objectsToArrays(array, options) converts an array of objects into an array of row arrays.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
312 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
313 * @param array An array of objects, e.g. [ { name1: "val1", name2: "val2", ...} ...]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
314 * @param options { columns: ["name1", "name2"...], includeHeaders: true, objectToArray: <optional function to convert each object> }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
315 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
316 objectsToArrays: function objectsToArrays(array, options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
317 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
318 var rownum = options.startRownum;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
319 var result = array.map(function convert(obj) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
320 return $.tsv.objectToArray(obj, opts, rownum++);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
321 });
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
322 return result;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
323 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
324
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
325 fromObject: function fromObject(array, options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
326 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
327 return $.tsv.fromArray($.tsv.objectToArray(array, opts), opts);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
328 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
329
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
330 /**
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
331 * $.tsv.fromObjects(array, options) converts an array of objects into a tsv string.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
332 *
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
333 * @param array An array of objects, e.g. [ { name1: "val1", name2: "val2", ...} ...]
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
334 * @param options { columns: ["name1", "name2"...], includeHeaders: true, objectToArray: <optional function to convert each object> }
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
335 */
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
336 fromObjects: function fromObjects(array, options) {
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
337 var opts = tsvOptions(options);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
338 var first = array.length ? array[0] : {};
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
339 // Calculate the columns while we still have the original objects. This is being called for side-effect!
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
340 tsvColumns(opts, first);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
341 return $.tsv.fromArrays($.tsv.objectsToArrays(array, opts), opts);
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
342 },
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
343
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
344 extend: $.extend
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
345 };
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
346 // Compatibility with initial release.
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
347 $.tsv.parseRow = $.tsv.toArray;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
348 $.tsv.parseRows = $.tsv.toArrays;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
349 $.tsv.parseObject = $.tsv.toObject;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
350 $.tsv.parseObjects = $.tsv.toObjects;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
351 $.tsv.formatValue = $.tsv.formatValue;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
352 $.tsv.formatRow = $.tsv.fromArray;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
353 $.tsv.formatRows = $.tsv.fromArrays;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
354 $.tsv.formatObject = $.tsv.fromObject;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
355 $.tsv.formatObjects = $.tsv.fromObjects;
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
356
1407e3634bcf Uploaded r11 from test tool shed.
adam-novak
parents:
diff changeset
357 })(jQuery);