rubyvis 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.travis.yml +13 -0
  4. data/Gemfile +8 -0
  5. data/Gemfile.lock +37 -0
  6. data/History.txt +6 -0
  7. data/LICENSE.txt +23 -0
  8. data/{README.txt → README.md} +15 -12
  9. data/Rakefile +4 -11
  10. data/lib/rubyvis.rb +1 -1
  11. data/lib/rubyvis/scale/quantitative.rb +14 -18
  12. data/lib/rubyvis/scene/svg_label.rb +1 -1
  13. data/rubyvis.gemspec +21 -0
  14. data/spec/anchor_spec.rb +2 -1
  15. data/spec/line_spec.rb +2 -2
  16. data/spec/scale_linear_datetime_spec.rb +23 -8
  17. data/spec/spec_helper.rb +2 -1
  18. metadata +31 -214
  19. data/.gemtest +0 -0
  20. data/vendor/protovis/protovis-r3.3.js +0 -287
  21. data/vendor/protovis/src/behavior/Behavior.js +0 -32
  22. data/vendor/protovis/src/behavior/Drag.js +0 -112
  23. data/vendor/protovis/src/behavior/Pan.js +0 -110
  24. data/vendor/protovis/src/behavior/Point.js +0 -157
  25. data/vendor/protovis/src/behavior/Resize.js +0 -104
  26. data/vendor/protovis/src/behavior/Select.js +0 -100
  27. data/vendor/protovis/src/behavior/Zoom.js +0 -85
  28. data/vendor/protovis/src/color/Color.js +0 -598
  29. data/vendor/protovis/src/color/Colors.js +0 -135
  30. data/vendor/protovis/src/color/Ramp.js +0 -17
  31. data/vendor/protovis/src/data/Arrays.js +0 -277
  32. data/vendor/protovis/src/data/Dom.js +0 -380
  33. data/vendor/protovis/src/data/Flatten.js +0 -146
  34. data/vendor/protovis/src/data/Histogram.js +0 -120
  35. data/vendor/protovis/src/data/LinearScale.js +0 -54
  36. data/vendor/protovis/src/data/LogScale.js +0 -142
  37. data/vendor/protovis/src/data/Nest.js +0 -257
  38. data/vendor/protovis/src/data/Numbers.js +0 -313
  39. data/vendor/protovis/src/data/Objects.js +0 -78
  40. data/vendor/protovis/src/data/OrdinalScale.js +0 -267
  41. data/vendor/protovis/src/data/QuantileScale.js +0 -180
  42. data/vendor/protovis/src/data/QuantitativeScale.js +0 -440
  43. data/vendor/protovis/src/data/RootScale.js +0 -55
  44. data/vendor/protovis/src/data/Scale.js +0 -86
  45. data/vendor/protovis/src/data/Transform.js +0 -109
  46. data/vendor/protovis/src/data/Tree.js +0 -124
  47. data/vendor/protovis/src/data/Vector.js +0 -118
  48. data/vendor/protovis/src/geo/Geo.js +0 -5
  49. data/vendor/protovis/src/geo/GeoScale.js +0 -307
  50. data/vendor/protovis/src/geo/LatLng.js +0 -23
  51. data/vendor/protovis/src/geo/Projection.js +0 -43
  52. data/vendor/protovis/src/geo/Projections.js +0 -117
  53. data/vendor/protovis/src/lang/Array.js +0 -112
  54. data/vendor/protovis/src/lang/init.js +0 -26
  55. data/vendor/protovis/src/layout/Arc.js +0 -178
  56. data/vendor/protovis/src/layout/Bullet.js +0 -164
  57. data/vendor/protovis/src/layout/Cluster.js +0 -205
  58. data/vendor/protovis/src/layout/Force.js +0 -309
  59. data/vendor/protovis/src/layout/Grid.js +0 -119
  60. data/vendor/protovis/src/layout/Hierarchy.js +0 -249
  61. data/vendor/protovis/src/layout/Horizon.js +0 -159
  62. data/vendor/protovis/src/layout/Indent.js +0 -83
  63. data/vendor/protovis/src/layout/Layout.js +0 -56
  64. data/vendor/protovis/src/layout/Matrix.js +0 -177
  65. data/vendor/protovis/src/layout/Network.js +0 -302
  66. data/vendor/protovis/src/layout/Pack.js +0 -323
  67. data/vendor/protovis/src/layout/Partition.js +0 -203
  68. data/vendor/protovis/src/layout/Rollup.js +0 -203
  69. data/vendor/protovis/src/layout/Stack.js +0 -391
  70. data/vendor/protovis/src/layout/Tree.js +0 -282
  71. data/vendor/protovis/src/layout/Treemap.js +0 -347
  72. data/vendor/protovis/src/mark/Anchor.js +0 -81
  73. data/vendor/protovis/src/mark/Area.js +0 -268
  74. data/vendor/protovis/src/mark/Bar.js +0 -93
  75. data/vendor/protovis/src/mark/Dot.js +0 -212
  76. data/vendor/protovis/src/mark/Ease.js +0 -150
  77. data/vendor/protovis/src/mark/Image.js +0 -154
  78. data/vendor/protovis/src/mark/Label.js +0 -155
  79. data/vendor/protovis/src/mark/Line.js +0 -195
  80. data/vendor/protovis/src/mark/Mark.js +0 -1237
  81. data/vendor/protovis/src/mark/Panel.js +0 -273
  82. data/vendor/protovis/src/mark/Rule.js +0 -143
  83. data/vendor/protovis/src/mark/Transient.js +0 -7
  84. data/vendor/protovis/src/mark/Transition.js +0 -195
  85. data/vendor/protovis/src/mark/Wedge.js +0 -244
  86. data/vendor/protovis/src/physics/BoundConstraint.js +0 -75
  87. data/vendor/protovis/src/physics/ChargeForce.js +0 -184
  88. data/vendor/protovis/src/physics/CollisionConstraint.js +0 -113
  89. data/vendor/protovis/src/physics/Constraint.js +0 -26
  90. data/vendor/protovis/src/physics/DragForce.js +0 -49
  91. data/vendor/protovis/src/physics/Force.js +0 -25
  92. data/vendor/protovis/src/physics/Particle.js +0 -81
  93. data/vendor/protovis/src/physics/PositionConstraint.js +0 -72
  94. data/vendor/protovis/src/physics/Quadtree.js +0 -195
  95. data/vendor/protovis/src/physics/Simulation.js +0 -159
  96. data/vendor/protovis/src/physics/SpringForce.js +0 -141
  97. data/vendor/protovis/src/pv-internals.js +0 -154
  98. data/vendor/protovis/src/pv.js +0 -95
  99. data/vendor/protovis/src/scene/SvgArea.js +0 -172
  100. data/vendor/protovis/src/scene/SvgBar.js +0 -28
  101. data/vendor/protovis/src/scene/SvgCurve.js +0 -354
  102. data/vendor/protovis/src/scene/SvgDot.js +0 -81
  103. data/vendor/protovis/src/scene/SvgImage.js +0 -45
  104. data/vendor/protovis/src/scene/SvgLabel.js +0 -46
  105. data/vendor/protovis/src/scene/SvgLine.js +0 -159
  106. data/vendor/protovis/src/scene/SvgPanel.js +0 -126
  107. data/vendor/protovis/src/scene/SvgRule.js +0 -26
  108. data/vendor/protovis/src/scene/SvgScene.js +0 -185
  109. data/vendor/protovis/src/scene/SvgWedge.js +0 -66
  110. data/vendor/protovis/src/text/DateFormat.js +0 -262
  111. data/vendor/protovis/src/text/Format.js +0 -78
  112. data/vendor/protovis/src/text/NumberFormat.js +0 -227
  113. data/vendor/protovis/src/text/TimeFormat.js +0 -115
@@ -1,78 +0,0 @@
1
- /**
2
- * Abstract; see an implementing class.
3
- *
4
- * @class Represents an abstract text formatter and parser. A <i>format</i> is a
5
- * function that converts an object of a given type, such as a <tt>Date</tt>, to
6
- * a human-readable string representation. The format may also have a
7
- * {@link #parse} method for converting a string representation back to the
8
- * given object type.
9
- *
10
- * <p>Because formats are themselves functions, they can be used directly as
11
- * mark properties. For example, if the data associated with a label are dates,
12
- * a date format can be used as label text:
13
- *
14
- * <pre> .text(pv.Format.date("%m/%d/%y"))</pre>
15
- *
16
- * And as with scales, if the format is used in multiple places, it can be
17
- * convenient to declare it as a global variable and then reference it from the
18
- * appropriate property functions. For example, if the data has a <tt>date</tt>
19
- * attribute, and <tt>format</tt> references a given date format:
20
- *
21
- * <pre> .text(function(d) format(d.date))</pre>
22
- *
23
- * Similarly, to parse a string into a date:
24
- *
25
- * <pre>var date = format.parse("4/30/2010");</pre>
26
- *
27
- * Not all format implementations support parsing. See the implementing class
28
- * for details.
29
- *
30
- * @see pv.Format.date
31
- * @see pv.Format.number
32
- * @see pv.Format.time
33
- */
34
- pv.Format = {};
35
-
36
- /**
37
- * Formats the specified object, returning the string representation.
38
- *
39
- * @function
40
- * @name pv.Format.prototype.format
41
- * @param {object} x the object to format.
42
- * @returns {string} the formatted string.
43
- */
44
-
45
- /**
46
- * Parses the specified string, returning the object representation.
47
- *
48
- * @function
49
- * @name pv.Format.prototype.parse
50
- * @param {string} x the string to parse.
51
- * @returns {object} the parsed object.
52
- */
53
-
54
- /**
55
- * @private Given a string that may be used as part of a regular expression,
56
- * this methods returns an appropriately quoted version of the specified string,
57
- * with any special characters escaped.
58
- *
59
- * @param {string} s a string to quote.
60
- * @returns {string} the quoted string.
61
- */
62
- pv.Format.re = function(s) {
63
- return s.replace(/[\\\^\$\*\+\?\[\]\(\)\.\{\}]/g, "\\$&");
64
- };
65
-
66
- /**
67
- * @private Optionally pads the specified string <i>s</i> so that it is at least
68
- * <i>n</i> characters long, using the padding character <i>c</i>.
69
- *
70
- * @param {string} c the padding character.
71
- * @param {number} n the minimum string length.
72
- * @param {string} s the string to pad.
73
- * @returns {string} the padded string.
74
- */
75
- pv.Format.pad = function(c, n, s) {
76
- var m = n - String(s).length;
77
- return (m < 1) ? s : new Array(m + 1).join(c) + s;
78
- };
@@ -1,227 +0,0 @@
1
- /**
2
- * Returns a default number format.
3
- *
4
- * @class Represents a number format, converting between a <tt>number</tt> and a
5
- * <tt>string</tt>. This class allows numbers to be formatted with variable
6
- * precision (both for the integral and fractional part of the number), optional
7
- * thousands grouping, and optional padding. The thousands (",") and decimal
8
- * (".") separator can be customized.
9
- *
10
- * @returns {pv.Format.number} a number format.
11
- */
12
- pv.Format.number = function() {
13
- var mini = 0, // default minimum integer digits
14
- maxi = Infinity, // default maximum integer digits
15
- mins = 0, // mini, including group separators
16
- minf = 0, // default minimum fraction digits
17
- maxf = 0, // default maximum fraction digits
18
- maxk = 1, // 10^maxf
19
- padi = "0", // default integer pad
20
- padf = "0", // default fraction pad
21
- padg = true, // whether group separator affects integer padding
22
- decimal = ".", // default decimal separator
23
- group = ",", // default group separator
24
- np = "\u2212", // default negative prefix
25
- ns = ""; // default negative suffix
26
-
27
- /** @private */
28
- function format(x) {
29
- /* Round the fractional part, and split on decimal separator. */
30
- if (Infinity > maxf) x = Math.round(x * maxk) / maxk;
31
- var s = String(Math.abs(x)).split(".");
32
-
33
- /* Pad, truncate and group the integral part. */
34
- var i = s[0];
35
- if (i.length > maxi) i = i.substring(i.length - maxi);
36
- if (padg && (i.length < mini)) i = new Array(mini - i.length + 1).join(padi) + i;
37
- if (i.length > 3) i = i.replace(/\B(?=(?:\d{3})+(?!\d))/g, group);
38
- if (!padg && (i.length < mins)) i = new Array(mins - i.length + 1).join(padi) + i;
39
- s[0] = x < 0 ? np + i + ns : i;
40
-
41
- /* Pad the fractional part. */
42
- var f = s[1] || "";
43
- if (f.length < minf) s[1] = f + new Array(minf - f.length + 1).join(padf);
44
-
45
- return s.join(decimal);
46
- }
47
-
48
- /**
49
- * @function
50
- * @name pv.Format.number.prototype.format
51
- * @param {number} x
52
- * @returns {string}
53
- */
54
- format.format = format;
55
-
56
- /**
57
- * Parses the specified string as a number. Before parsing, leading and
58
- * trailing padding is removed. Group separators are also removed, and the
59
- * decimal separator is replaced with the standard point ("."). The integer
60
- * part is truncated per the maximum integer digits, and the fraction part is
61
- * rounded per the maximum fraction digits.
62
- *
63
- * @function
64
- * @name pv.Format.number.prototype.parse
65
- * @param {string} x the string to parse.
66
- * @returns {number} the parsed number.
67
- */
68
- format.parse = function(x) {
69
- var re = pv.Format.re;
70
-
71
- /* Remove leading and trailing padding. Split on the decimal separator. */
72
- var s = String(x)
73
- .replace(new RegExp("^(" + re(padi) + ")*"), "")
74
- .replace(new RegExp("(" + re(padf) + ")*$"), "")
75
- .split(decimal);
76
-
77
- /* Remove grouping and truncate the integral part. */
78
- var i = s[0].replace(new RegExp(re(group), "g"), "");
79
- if (i.length > maxi) i = i.substring(i.length - maxi);
80
-
81
- /* Round the fractional part. */
82
- var f = s[1] ? Number("0." + s[1]) : 0;
83
- if (Infinity > maxf) f = Math.round(f * maxk) / maxk;
84
-
85
- return Math.round(i) + f;
86
- };
87
-
88
- /**
89
- * Sets or gets the minimum and maximum number of integer digits. This
90
- * controls the number of decimal digits to display before the decimal
91
- * separator for the integral part of the number. If the number of digits is
92
- * smaller than the minimum, the digits are padded; if the number of digits is
93
- * larger, the digits are truncated, showing only the lower-order digits. The
94
- * default range is [0, Infinity].
95
- *
96
- * <p>If only one argument is specified to this method, this value is used as
97
- * both the minimum and maximum number. If no arguments are specified, a
98
- * two-element array is returned containing the minimum and the maximum.
99
- *
100
- * @function
101
- * @name pv.Format.number.prototype.integerDigits
102
- * @param {number} [min] the minimum integer digits.
103
- * @param {number} [max] the maximum integer digits.
104
- * @returns {pv.Format.number} <tt>this</tt>, or the current integer digits.
105
- */
106
- format.integerDigits = function(min, max) {
107
- if (arguments.length) {
108
- mini = Number(min);
109
- maxi = (arguments.length > 1) ? Number(max) : mini;
110
- mins = mini + Math.floor(mini / 3) * group.length;
111
- return this;
112
- }
113
- return [mini, maxi];
114
- };
115
-
116
- /**
117
- * Sets or gets the minimum and maximum number of fraction digits. The
118
- * controls the number of decimal digits to display after the decimal
119
- * separator for the fractional part of the number. If the number of digits is
120
- * smaller than the minimum, the digits are padded; if the number of digits is
121
- * larger, the fractional part is rounded, showing only the higher-order
122
- * digits. The default range is [0, 0].
123
- *
124
- * <p>If only one argument is specified to this method, this value is used as
125
- * both the minimum and maximum number. If no arguments are specified, a
126
- * two-element array is returned containing the minimum and the maximum.
127
- *
128
- * @function
129
- * @name pv.Format.number.prototype.fractionDigits
130
- * @param {number} [min] the minimum fraction digits.
131
- * @param {number} [max] the maximum fraction digits.
132
- * @returns {pv.Format.number} <tt>this</tt>, or the current fraction digits.
133
- */
134
- format.fractionDigits = function(min, max) {
135
- if (arguments.length) {
136
- minf = Number(min);
137
- maxf = (arguments.length > 1) ? Number(max) : minf;
138
- maxk = Math.pow(10, maxf);
139
- return this;
140
- }
141
- return [minf, maxf];
142
- };
143
-
144
- /**
145
- * Sets or gets the character used to pad the integer part. The integer pad is
146
- * used when the number of integer digits is smaller than the minimum. The
147
- * default pad character is "0" (zero).
148
- *
149
- * @param {string} [x] the new pad character.
150
- * @returns {pv.Format.number} <tt>this</tt> or the current pad character.
151
- */
152
- format.integerPad = function(x) {
153
- if (arguments.length) {
154
- padi = String(x);
155
- padg = /\d/.test(padi);
156
- return this;
157
- }
158
- return padi;
159
- };
160
-
161
- /**
162
- * Sets or gets the character used to pad the fration part. The fraction pad
163
- * is used when the number of fraction digits is smaller than the minimum. The
164
- * default pad character is "0" (zero).
165
- *
166
- * @param {string} [x] the new pad character.
167
- * @returns {pv.Format.number} <tt>this</tt> or the current pad character.
168
- */
169
- format.fractionPad = function(x) {
170
- if (arguments.length) {
171
- padf = String(x);
172
- return this;
173
- }
174
- return padf;
175
- };
176
-
177
- /**
178
- * Sets or gets the character used as the decimal point, separating the
179
- * integer and fraction parts of the number. The default decimal point is ".".
180
- *
181
- * @param {string} [x] the new decimal separator.
182
- * @returns {pv.Format.number} <tt>this</tt> or the current decimal separator.
183
- */
184
- format.decimal = function(x) {
185
- if (arguments.length) {
186
- decimal = String(x);
187
- return this;
188
- }
189
- return decimal;
190
- };
191
-
192
- /**
193
- * Sets or gets the character used as the group separator, grouping integer
194
- * digits by thousands. The default decimal point is ",". Grouping can be
195
- * disabled by using "" for the separator.
196
- *
197
- * @param {string} [x] the new group separator.
198
- * @returns {pv.Format.number} <tt>this</tt> or the current group separator.
199
- */
200
- format.group = function(x) {
201
- if (arguments.length) {
202
- group = x ? String(x) : "";
203
- mins = mini + Math.floor(mini / 3) * group.length;
204
- return this;
205
- }
206
- return group;
207
- };
208
-
209
- /**
210
- * Sets or gets the negative prefix and suffix. The default negative prefix is
211
- * "&minus;", and the default negative suffix is the empty string.
212
- *
213
- * @param {string} [x] the negative prefix.
214
- * @param {string} [y] the negative suffix.
215
- * @returns {pv.Format.number} <tt>this</tt> or the current negative format.
216
- */
217
- format.negativeAffix = function(x, y) {
218
- if (arguments.length) {
219
- np = String(x || "");
220
- ns = String(y || "");
221
- return this;
222
- }
223
- return [np, ns];
224
- };
225
-
226
- return format;
227
- };
@@ -1,115 +0,0 @@
1
- /**
2
- * Returns a time format of the given type, either "short" or "long".
3
- *
4
- * @class Represents a time format, converting between a <tt>number</tt>
5
- * representing a duration in milliseconds, and a <tt>string</tt>. Two types of
6
- * time formats are supported: "short" and "long". The <i>short</i> format type
7
- * returns a string such as "3.3 days" or "12.1 minutes", while the <i>long</i>
8
- * format returns "13:04:12" or similar.
9
- *
10
- * @extends pv.Format
11
- * @param {string} type the type; "short" or "long".
12
- */
13
- pv.Format.time = function(type) {
14
- var pad = pv.Format.pad;
15
-
16
- /*
17
- * MILLISECONDS = 1
18
- * SECONDS = 1e3
19
- * MINUTES = 6e4
20
- * HOURS = 36e5
21
- * DAYS = 864e5
22
- * WEEKS = 6048e5
23
- * MONTHS = 2592e6
24
- * YEARS = 31536e6
25
- */
26
-
27
- /** @private */
28
- function format(t) {
29
- t = Number(t); // force conversion from Date
30
- switch (type) {
31
- case "short": {
32
- if (t >= 31536e6) {
33
- return (t / 31536e6).toFixed(1) + " years";
34
- } else if (t >= 6048e5) {
35
- return (t / 6048e5).toFixed(1) + " weeks";
36
- } else if (t >= 864e5) {
37
- return (t / 864e5).toFixed(1) + " days";
38
- } else if (t >= 36e5) {
39
- return (t / 36e5).toFixed(1) + " hours";
40
- } else if (t >= 6e4) {
41
- return (t / 6e4).toFixed(1) + " minutes";
42
- }
43
- return (t / 1e3).toFixed(1) + " seconds";
44
- }
45
- case "long": {
46
- var a = [],
47
- s = ((t % 6e4) / 1e3) >> 0,
48
- m = ((t % 36e5) / 6e4) >> 0;
49
- a.push(pad("0", 2, s));
50
- if (t >= 36e5) {
51
- var h = ((t % 864e5) / 36e5) >> 0;
52
- a.push(pad("0", 2, m));
53
- if (t >= 864e5) {
54
- a.push(pad("0", 2, h));
55
- a.push(Math.floor(t / 864e5).toFixed());
56
- } else {
57
- a.push(h.toFixed());
58
- }
59
- } else {
60
- a.push(m.toFixed());
61
- }
62
- return a.reverse().join(":");
63
- }
64
- }
65
- }
66
-
67
- /**
68
- * Formats the specified time, returning the string representation.
69
- *
70
- * @function
71
- * @name pv.Format.time.prototype.format
72
- * @param {number} t the duration in milliseconds. May also be a <tt>Date</tt>.
73
- * @returns {string} the formatted string.
74
- */
75
- format.format = format;
76
-
77
- /**
78
- * Parses the specified string, returning the time in milliseconds.
79
- *
80
- * @function
81
- * @name pv.Format.time.prototype.parse
82
- * @param {string} s a formatted string.
83
- * @returns {number} the parsed duration in milliseconds.
84
- */
85
- format.parse = function(s) {
86
- switch (type) {
87
- case "short": {
88
- var re = /([0-9,.]+)\s*([a-z]+)/g, a, t = 0;
89
- while (a = re.exec(s)) {
90
- var f = parseFloat(a[0].replace(",", "")), u = 0;
91
- switch (a[2].toLowerCase()) {
92
- case "year": case "years": u = 31536e6; break;
93
- case "week": case "weeks": u = 6048e5; break;
94
- case "day": case "days": u = 864e5; break;
95
- case "hour": case "hours": u = 36e5; break;
96
- case "minute": case "minutes": u = 6e4; break;
97
- case "second": case "seconds": u = 1e3; break;
98
- }
99
- t += f * u;
100
- }
101
- return t;
102
- }
103
- case "long": {
104
- var a = s.replace(",", "").split(":").reverse(), t = 0;
105
- if (a.length) t += parseFloat(a[0]) * 1e3;
106
- if (a.length > 1) t += parseFloat(a[1]) * 6e4;
107
- if (a.length > 2) t += parseFloat(a[2]) * 36e5;
108
- if (a.length > 3) t += parseFloat(a[3]) * 864e5;
109
- return t;
110
- }
111
- }
112
- }
113
-
114
- return format;
115
- };