rubyvis 0.3.6 → 0.4.0

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 (94) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +16 -0
  3. data/Manifest.txt +61 -0
  4. data/README.txt +9 -7
  5. data/Rakefile +1 -1
  6. data/lib/rubyvis.rb +3 -17
  7. data/lib/rubyvis/color/color.rb +11 -13
  8. data/lib/rubyvis/flatten.rb +5 -7
  9. data/lib/rubyvis/layout/stack.rb +15 -10
  10. data/lib/rubyvis/mark.rb +10 -2
  11. data/lib/rubyvis/mark/area.rb +5 -3
  12. data/lib/rubyvis/mark/line.rb +4 -3
  13. data/lib/rubyvis/mark/panel.rb +8 -3
  14. data/lib/rubyvis/mark/rule.rb +1 -0
  15. data/lib/rubyvis/scene/svg_area.rb +17 -17
  16. data/lib/rubyvis/scene/svg_curve.rb +8 -5
  17. data/lib/rubyvis/scene/svg_line.rb +32 -29
  18. data/lib/rubyvis/scene/svg_scene.rb +3 -5
  19. data/lib/rubyvis/scene/svg_wedge.rb +4 -3
  20. data/lib/rubyvis/vector.rb +104 -0
  21. data/spec/anchor_spec.rb +29 -0
  22. data/spec/area_spec.rb +83 -0
  23. data/spec/bar_spec.rb +3 -0
  24. data/spec/color_spec.rb +13 -1
  25. data/spec/dot_spec.rb +41 -0
  26. data/spec/fixtures/anchor.html +25 -0
  27. data/spec/fixtures/anchor.svg +1 -0
  28. data/spec/fixtures/area-segmented.html +29 -0
  29. data/spec/fixtures/area_interpolation.html +66 -0
  30. data/spec/fixtures/area_interpolation.svg +1 -0
  31. data/spec/fixtures/area_segmented.svg +1 -0
  32. data/spec/fixtures/dot-anchor.html +33 -0
  33. data/spec/fixtures/dot_anchor.svg +1 -0
  34. data/spec/fixtures/layers.js +28 -0
  35. data/spec/fixtures/layout_arc.svg +1 -0
  36. data/spec/fixtures/layout_cluster.html +39 -0
  37. data/spec/fixtures/layout_cluster.svg +1 -0
  38. data/spec/fixtures/layout_cluster_left_group_2.html +39 -0
  39. data/spec/fixtures/layout_cluster_left_group_2.svg +1 -0
  40. data/spec/fixtures/layout_grid.html +34 -0
  41. data/spec/fixtures/layout_grid.svg +1 -0
  42. data/spec/fixtures/layout_horizon.svg +24 -0
  43. data/spec/fixtures/layout_indent.html +39 -0
  44. data/spec/fixtures/layout_indent.svg +1 -0
  45. data/spec/fixtures/layout_matrix.svg +1 -0
  46. data/spec/fixtures/layout_pack.html +38 -0
  47. data/spec/fixtures/layout_pack.svg +1 -0
  48. data/spec/fixtures/layout_partition_fill.html +40 -0
  49. data/spec/fixtures/layout_partition_fill.svg +32 -0
  50. data/spec/fixtures/layout_tree_orient_left.html +36 -0
  51. data/spec/fixtures/layout_tree_orient_left.svg +1 -0
  52. data/spec/fixtures/layout_tree_orient_radial_breadth_20.html +39 -0
  53. data/spec/fixtures/layout_tree_orient_radial_breadth_20.svg +1 -0
  54. data/spec/fixtures/layout_tree_orient_top.svg +1 -0
  55. data/spec/fixtures/layout_treemap.svg +1 -0
  56. data/spec/fixtures/line_interpolation.html +63 -0
  57. data/spec/fixtures/line_interpolation.svg +1 -0
  58. data/spec/fixtures/line_interpolation_segmented.html +65 -0
  59. data/spec/fixtures/line_interpolation_segmented.svg +1 -0
  60. data/spec/fixtures/protovis-r3.3.js +287 -0
  61. data/spec/fixtures/rule-anchor.html +33 -0
  62. data/spec/fixtures/rule_anchor.svg +1 -0
  63. data/spec/fixtures/stack-expand.html +41 -0
  64. data/spec/fixtures/stack-silohouette.html +41 -0
  65. data/spec/fixtures/stack-wiggle.html +41 -0
  66. data/spec/fixtures/stack_expand.svg +1 -0
  67. data/spec/fixtures/stack_silohouette.svg +1 -0
  68. data/spec/fixtures/stack_wiggle.svg +1 -0
  69. data/spec/fixtures/svgscene.html +26 -0
  70. data/spec/fixtures/wedge-anchor.html +33 -0
  71. data/spec/fixtures/wedge-donut.html +35 -0
  72. data/spec/fixtures/wedge_anchor.svg +1 -0
  73. data/spec/fixtures/wedge_donut.svg +1 -0
  74. data/spec/flatten_spec.rb +47 -0
  75. data/spec/layout_arc_spec.rb +7 -26
  76. data/spec/layout_cluster_spec.rb +52 -0
  77. data/spec/layout_grid_spec.rb +40 -0
  78. data/spec/layout_horizon_spec.rb +6 -25
  79. data/spec/layout_indent_spec.rb +53 -0
  80. data/spec/layout_matrix_spec.rb +25 -52
  81. data/spec/layout_pack_spec.rb +49 -0
  82. data/spec/layout_partition_spec.rb +45 -0
  83. data/spec/layout_stack_spec.rb +60 -0
  84. data/spec/layout_tree_spec.rb +56 -0
  85. data/spec/layout_treemap_spec.rb +41 -0
  86. data/spec/line_spec.rb +118 -0
  87. data/spec/mark_spec.rb +4 -0
  88. data/spec/panel_spec.rb +12 -1
  89. data/spec/rule_spec.rb +34 -0
  90. data/spec/spec_helper.rb +158 -3
  91. data/spec/vector_spec.rb +36 -0
  92. data/spec/wedge_spec.rb +66 -0
  93. metadata +67 -14
  94. metadata.gz.sig +0 -0
data/spec/spec_helper.rb CHANGED
@@ -16,6 +16,60 @@ require 'nokogiri'
16
16
 
17
17
  $PROTOVIS_DIR=File.dirname(__FILE__)+"/../vendor/protovis/src"
18
18
  module Rubyvis
19
+ module GeneralSpec
20
+ def fixture_svg_read(filename)
21
+ File.read(File.dirname(__FILE__)+"/fixtures/#{filename}")
22
+ end
23
+ end
24
+ module LayoutSpec
25
+ include GeneralSpec
26
+ def waves(n, m)
27
+ Rubyvis.range(n).map {|i|
28
+ Rubyvis.range(m).map {|j|
29
+ x = 20 * j / m.to_f - i / 3.0
30
+ x > 0 ? 2 * x * Math.exp(-0.5 * x) : 0
31
+ }
32
+ }
33
+ end
34
+
35
+
36
+
37
+
38
+ def net_nodes
39
+ [
40
+ OpenStruct.new({:node_value=>'A', :group=>1}),
41
+ OpenStruct.new({:node_value=>'B', :group=>1}),
42
+ OpenStruct.new({:node_value=>'C', :group=>2}),
43
+ OpenStruct.new({:node_value=>'D',:group=>2}),
44
+ OpenStruct.new({:node_value=>'E',:group=>3}),
45
+ OpenStruct.new({:node_value=>'F',:group=>3})
46
+
47
+ ]
48
+ end
49
+ def net_links
50
+ [
51
+ OpenStruct.new({:source=>0,:target=>1, :value=>1}),
52
+ OpenStruct.new({:source=>1,:target=>2, :value=>1}),
53
+ OpenStruct.new({:source=>2,:target=>3, :value=>1}),
54
+ OpenStruct.new({:source=>3,:target=>4, :value=>1}),
55
+ OpenStruct.new({:source=>4,:target=>5, :value=>1}),
56
+ OpenStruct.new({:source=>1,:target=>0, :value=>1}),
57
+ OpenStruct.new({:source=>2,:target=>1, :value=>1}),
58
+ OpenStruct.new({:source=>3,:target=>2, :value=>1}),
59
+ OpenStruct.new({:source=>4,:target=>3, :value=>1}),
60
+ OpenStruct.new({:source=>5,:target=>4, :value=>1}),
61
+ ]
62
+ end
63
+ def hier_nodes
64
+ Rubyvis.dom({:a=>1,:b=>{:ba=>2,:bb=>{:bba=>3}, :bc=>4}, :c=>5}).root("test").nodes
65
+ end
66
+ def hier_nodes_big
67
+ subtree={:a=>1,:b=>2,:c=>3,:d=>4}
68
+
69
+ Rubyvis.dom({:a=>subtree,:b=>subtree, :c=>subtree, :d=>subtree,:e=>subtree,:f=>subtree}).root("test").nodes()
70
+
71
+ end
72
+ end
19
73
  class JohnsonLoader
20
74
  begin
21
75
  require 'johnson'
@@ -43,16 +97,115 @@ RSpec::Matchers.define :have_svg_attributes do |exp|
43
97
  obs.attributes[k].value.should==v
44
98
  }
45
99
  end
100
+ failure_message_for_should do |obs|
101
+ "\n#{exp} attributes expected, but xml doesn't contains them \n#{obs.to_s}"
102
+ end
103
+ end
104
+
105
+ # Include
106
+ # * rect
107
+ # * circle
108
+ # * text
109
+ # Using attributes and content
110
+ Rspec::Matchers.define :have_same_svg_elements do |exp|
111
+ def equal_float(a,b)
112
+ a||=0
113
+ b||=0
114
+ (a.to_f-b.to_f).abs<0.0001
115
+ end
116
+ def equal_string_nil(a,b)
117
+ a||="none"
118
+ b||="none"
119
+ a.to_s==b.to_s
120
+ end
121
+ def equal_string(a,b)
122
+ a.to_s==b.to_s
123
+ end
124
+ def path_scan(path)
125
+ path.scan(/([MmCcZzLlHhVvSsQqTtAa, ])(\d+(?:\.\d+)?)/).map {|v|
126
+ v[0]="," if v[0]==" "
127
+ v[1]=v[1].to_f
128
+ v
129
+ }
130
+ end
131
+
132
+ def equal_path(a,b)
133
+ path_a=path_scan(a)
134
+ path_b=path_scan(b)
135
+ correct=true
136
+ path_a.each_with_index do |v,i|
137
+ if (v[0]!=path_b[i][0]) or (v[1]-path_b[i][1]).abs>0.001
138
+ correct=false
139
+ break
140
+ end
141
+
142
+ end
143
+ correct
144
+ end
145
+ match do |obs|
146
+ obs_xml=Nokogiri::XML(obs)
147
+ exp_xml=Nokogiri::XML(exp)
148
+ correct=true
149
+ attrs={
150
+ "circle"=>{'fill'=>:string_nil, 'fill-opacity'=>:float, 'cx'=>:float,'stroke'=>:string_nil, 'stroke-opacity'=>:string, 'cy'=>:float,'r'=>:float},
151
+ "rect"=>{"x"=>:float,"y"=>:float,"width"=>:float,"height"=>:float, 'fill'=>:string_nil, 'fill-opacity'=>:float, 'stroke'=>:string_nil, 'stroke-opacity'=>:float},
152
+ "text"=>{"x"=>:float,"dx"=>:float,"y"=>:float,"dy"=>:float},
153
+ 'path'=>{'d'=>:path, 'fill'=>:string_nil, 'fill-opacity'=>:float, 'stroke'=>:string_nil, 'stroke-opacity'=>:float, 'stroke-width'=>:float}
154
+ }
155
+
156
+ @error={:type=>"Undefined error"}
157
+ attrs.each_pair do |key,attrs|
158
+
159
+ exp_elements=exp_xml.xpath("//#{key}")
160
+ obs_elements=obs_xml.xpath("//xmlns:#{key}")
161
+ if exp_elements.size!=obs_elements.size
162
+ @error={:type=>"Different number of #{key} elements",:exp=>exp_elements.size, :obs=>obs_elements.size}
163
+ correct=false
164
+ break
165
+ end
166
+ exp_elements.each_with_index {|exp_data,i|
167
+ obs_data=obs_elements[i]
168
+
169
+ if obs_data.nil?
170
+ @error={:type=>"Missing obs", :exp=>exp_data, :i=>i}
171
+ correct=false
172
+ break
173
+ end
174
+
175
+ exp_data.content.should==obs_data.content
176
+ attrs.each do |attr,method|
177
+
178
+ eq=send("equal_#{method}",obs_data[attr],exp_data[attr])
179
+ if !eq
180
+ puts "Uneql attr: #{method}->#{attr}"
181
+
182
+ @error={:type=>"Incorrect data", :exp=>exp_data, :obs=>obs_data, :attr=>attr, :exp_attr=>exp_data[attr], :obs_attr=>obs_data[attr],:i=>i}
183
+ correct=false
184
+ break
185
+ end
186
+ end
187
+ if !correct
188
+ break
189
+ end
190
+ }
191
+ end
192
+ correct
193
+ end
194
+ failure_message_for_should do |obs|
195
+ "#{@error[:type]}: #{@error[:exp].to_s} expected, but #{@error[:obs]} retrieved, on attr #{@error[:attr]} -> #{@error[:i]} : #{@error[:exp_attr]} <> #{@error[:obs_attr]}"
196
+ end
197
+
46
198
  end
47
199
  Rspec::Matchers.define :have_same_position do |exp|
48
200
  match do |obs|
49
201
  correct=true
50
202
  attrs={
51
203
  "circle"=>['cx','cy','r'],
52
- "rect"=>["x","y","width","height"]
204
+ "rect"=>["x","y","width","height"],
205
+ "text"=>["x","dx","y","dy","transform"]
53
206
  }
54
207
  attrs[exp.name].each do |attr|
55
- if (obs[attr].to_f - exp[attr].to_f)>0.0001
208
+ if (obs[attr].to_f - exp[attr].to_f).abs>0.0001
56
209
  correct=false
57
210
  break
58
211
  end
@@ -60,6 +213,8 @@ Rspec::Matchers.define :have_same_position do |exp|
60
213
  correct
61
214
  end
62
215
  end
216
+
217
+
63
218
  RSpec::Matchers.define :have_path_data_close_to do |exp|
64
219
  def path_scan(path)
65
220
  path.scan(/([MmCcZzLlHhVvSsQqTtAa, ])(\d+(?:\.\d+)?)/).map {|v|
@@ -67,7 +222,7 @@ RSpec::Matchers.define :have_path_data_close_to do |exp|
67
222
  v[1]=v[1].to_f
68
223
  v
69
224
  }
70
- end
225
+ end
71
226
  match do |obs|
72
227
  correct=true
73
228
  obs_array=path_scan(obs.attributes["d"].value)
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__)+"/spec_helper.rb")
2
+ describe Rubyvis::Vector do
3
+ before do
4
+ @x1,@x2,@y1,@y2=rand(10)+1,rand(10)+1,rand(10)+1,rand(10)+1
5
+ @v1=Rubyvis::Vector.new(@x1,@y1)
6
+ @v2=Rubyvis::Vector.new(@x2,@y2)
7
+ end
8
+ it "should return the same as Rubyvis.vector" do
9
+ Rubyvis.vector(@x1,@y1).should== @v1
10
+ end
11
+ it "method perp" do
12
+ @v1.perp.should==Rubyvis::Vector.new(-@y1,@x1)
13
+ end
14
+ it "method times" do
15
+ times=rand(10)+1
16
+ @v1.times(times).should==Rubyvis::Vector.new(@x1*times,@y1*times)
17
+ end
18
+ it "method length" do
19
+ l=Math.sqrt(@x1*@x1+@y1*@y1)
20
+ @v1.length.should eq l
21
+ end
22
+ it "method norm" do
23
+ l=@v1.length
24
+ @v1.norm.should==@v1.times(1/l.to_f)
25
+ end
26
+ it "method plus" do
27
+ @v1.plus(@v2).should==Rubyvis::Vector.new(@x1+@x2,@y1+@y2)
28
+ end
29
+ it "method minus" do
30
+ @v1.minus(@v2).should==Rubyvis::Vector.new(@x1-@x2,@y1-@y2)
31
+ end
32
+ it "method dot" do
33
+ @v1.dot(@v2).should==@x1*@x2+@y1*@y2
34
+ end
35
+ end
36
+
@@ -0,0 +1,66 @@
1
+ require File.expand_path(File.dirname(__FILE__)+"/spec_helper.rb")
2
+ describe Rubyvis::Wedge do
3
+ include Rubyvis::GeneralSpec
4
+ it "should have correct properties" do
5
+ props=[:angle, :antialias, :bottom, :cursor, :data, :end_angle, :events, :fill_style, :id, :inner_radius, :left, :line_width, :outer_radius, :reverse, :right, :start_angle, :stroke_style, :title, :top, :visible].inject({}) {|ac, v| ac[v]=true; ac}
6
+ Rubyvis::Wedge.properties.should==props
7
+ end
8
+ it "Rubyvis.Wedge be the same as Rubyvis::Wedge" do
9
+ Rubyvis.Wedge.should eql Rubyvis::Wedge
10
+ end
11
+ it "should render equal to protovis 'wedge-anchor.html' test" do
12
+
13
+ data = Rubyvis.range(5).map {|x| x}
14
+ w = 400
15
+ h = 400
16
+ r = w / 2.0
17
+ t = 30
18
+ a = Rubyvis::Scale.linear(0, Rubyvis.sum(data)).range(0, 2 * Math::PI);
19
+
20
+ vis = Rubyvis::Panel.new()
21
+ .width(w)
22
+ .height(h)
23
+
24
+ anchors=["outer","inner","start","center","end"]
25
+
26
+ vis.add(Rubyvis::Wedge)
27
+ .data(data)
28
+ .outer_radius(r)
29
+ .angle(a)
30
+ .anchor(lambda {anchors[self.index]}).add(pv.Label)
31
+ .text(lambda {anchors[self.index]})
32
+
33
+ vis.render();
34
+ pv_out=fixture_svg_read("wedge_anchor.svg")
35
+ vis.to_svg.should have_same_svg_elements(pv_out)
36
+
37
+ end
38
+ it "should render equal to protovis 'wedge-donut.html' test" do
39
+ data = Rubyvis.range(10).map {|x| (Math.sin(x)).abs}
40
+ w = 400
41
+ h = 400
42
+ r = w / 2.0
43
+ t = 30
44
+ a = Rubyvis.Scale.linear(0, Rubyvis.sum(data)).range(0, 2 * Math::PI)
45
+
46
+ @vis = Rubyvis::Panel.new()
47
+ .width(w)
48
+ .height(h)
49
+
50
+ @vis.add(Rubyvis::Wedge)
51
+ .data(data)
52
+ .inner_radius(r - t)
53
+ .outer_radius(r)
54
+ .angle(a)
55
+ .title(lambda {|d| d})
56
+ .anchor("outer").add(Rubyvis::Label)
57
+ .visible(lambda {|d| d>0.05})
58
+ .text_margin(t + 5)
59
+ .text(lambda {|d| "%0.2f" % d})
60
+ @vis.render();
61
+
62
+ @pv_out=fixture_svg_read("wedge_donut.svg")
63
+ @vis.to_svg.should have_same_svg_elements(@pv_out)
64
+ end
65
+
66
+ end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyvis
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
- - 3
9
- - 6
10
- version: 0.3.6
7
+ - 4
8
+ - 0
9
+ version: 0.4.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - Claudio Bustos
@@ -36,7 +35,7 @@ cert_chain:
36
35
  rpP0jjs0
37
36
  -----END CERTIFICATE-----
38
37
 
39
- date: 2010-12-28 00:00:00 -03:00
38
+ date: 2011-01-03 00:00:00 -03:00
40
39
  default_executable:
41
40
  dependencies:
42
41
  - !ruby/object:Gem::Dependency
@@ -47,7 +46,6 @@ dependencies:
47
46
  requirements:
48
47
  - - ">="
49
48
  - !ruby/object:Gem::Version
50
- hash: 3
51
49
  segments:
52
50
  - 0
53
51
  version: "0"
@@ -61,7 +59,6 @@ dependencies:
61
59
  requirements:
62
60
  - - ">="
63
61
  - !ruby/object:Gem::Version
64
- hash: 3
65
62
  segments:
66
63
  - 0
67
64
  version: "0"
@@ -75,7 +72,6 @@ dependencies:
75
72
  requirements:
76
73
  - - ">="
77
74
  - !ruby/object:Gem::Version
78
- hash: 3
79
75
  segments:
80
76
  - 0
81
77
  version: "0"
@@ -89,7 +85,6 @@ dependencies:
89
85
  requirements:
90
86
  - - ">="
91
87
  - !ruby/object:Gem::Version
92
- hash: 3
93
88
  segments:
94
89
  - 2
95
90
  - 0
@@ -104,7 +99,6 @@ dependencies:
104
99
  requirements:
105
100
  - - ">="
106
101
  - !ruby/object:Gem::Version
107
- hash: 47
108
102
  segments:
109
103
  - 2
110
104
  - 8
@@ -112,7 +106,7 @@ dependencies:
112
106
  version: 2.8.0
113
107
  type: :development
114
108
  version_requirements: *id005
115
- description: Ruby port of Protovis[http://vis.stanford.edu/protovis/], a great visualization toolkit
109
+ description: Ruby port of Protovis[http://vis.stanford.edu/protovis/], a Javascript visualization toolkit.
116
110
  email:
117
111
  - clbustos_at_gmail.com
118
112
  executables: []
@@ -231,25 +225,84 @@ files:
231
225
  - lib/rubyvis/scene/svg_wedge.rb
232
226
  - lib/rubyvis/sceneelement.rb
233
227
  - lib/rubyvis/transform.rb
228
+ - lib/rubyvis/vector.rb
234
229
  - spec/anchor_spec.rb
235
230
  - spec/area_spec.rb
236
231
  - spec/bar_spec.rb
237
232
  - spec/color_spec.rb
238
233
  - spec/dom_spec.rb
234
+ - spec/dot_spec.rb
235
+ - spec/fixtures/anchor.html
236
+ - spec/fixtures/anchor.svg
237
+ - spec/fixtures/area-segmented.html
238
+ - spec/fixtures/area_interpolation.html
239
+ - spec/fixtures/area_interpolation.svg
240
+ - spec/fixtures/area_segmented.svg
241
+ - spec/fixtures/dot-anchor.html
242
+ - spec/fixtures/dot_anchor.svg
243
+ - spec/fixtures/layers.js
244
+ - spec/fixtures/layout_arc.svg
245
+ - spec/fixtures/layout_cluster.html
246
+ - spec/fixtures/layout_cluster.svg
247
+ - spec/fixtures/layout_cluster_left_group_2.html
248
+ - spec/fixtures/layout_cluster_left_group_2.svg
249
+ - spec/fixtures/layout_grid.html
250
+ - spec/fixtures/layout_grid.svg
251
+ - spec/fixtures/layout_horizon.svg
252
+ - spec/fixtures/layout_indent.html
253
+ - spec/fixtures/layout_indent.svg
254
+ - spec/fixtures/layout_matrix.svg
255
+ - spec/fixtures/layout_pack.html
256
+ - spec/fixtures/layout_pack.svg
257
+ - spec/fixtures/layout_partition_fill.html
258
+ - spec/fixtures/layout_partition_fill.svg
259
+ - spec/fixtures/layout_tree_orient_left.html
260
+ - spec/fixtures/layout_tree_orient_left.svg
261
+ - spec/fixtures/layout_tree_orient_radial_breadth_20.html
262
+ - spec/fixtures/layout_tree_orient_radial_breadth_20.svg
263
+ - spec/fixtures/layout_tree_orient_top.svg
264
+ - spec/fixtures/layout_treemap.svg
265
+ - spec/fixtures/line_interpolation.html
266
+ - spec/fixtures/line_interpolation.svg
267
+ - spec/fixtures/line_interpolation_segmented.html
268
+ - spec/fixtures/line_interpolation_segmented.svg
269
+ - spec/fixtures/protovis-r3.3.js
270
+ - spec/fixtures/rule-anchor.html
271
+ - spec/fixtures/rule_anchor.svg
272
+ - spec/fixtures/stack-expand.html
273
+ - spec/fixtures/stack-silohouette.html
274
+ - spec/fixtures/stack-wiggle.html
275
+ - spec/fixtures/stack_expand.svg
276
+ - spec/fixtures/stack_silohouette.svg
277
+ - spec/fixtures/stack_wiggle.svg
278
+ - spec/fixtures/svgscene.html
279
+ - spec/fixtures/wedge-anchor.html
280
+ - spec/fixtures/wedge-donut.html
281
+ - spec/fixtures/wedge_anchor.svg
282
+ - spec/fixtures/wedge_donut.svg
283
+ - spec/flatten_spec.rb
239
284
  - spec/histogram_spec.rb
240
285
  - spec/internal_spec.rb
241
286
  - spec/javascript_behaviour_spec.rb
242
287
  - spec/label_spec.rb
243
288
  - spec/layout_arc_spec.rb
289
+ - spec/layout_cluster_spec.rb
290
+ - spec/layout_grid_spec.rb
244
291
  - spec/layout_horizon_spec.rb
292
+ - spec/layout_indent_spec.rb
245
293
  - spec/layout_matrix_spec.rb
294
+ - spec/layout_pack_spec.rb
295
+ - spec/layout_partition_spec.rb
246
296
  - spec/layout_stack_spec.rb
297
+ - spec/layout_tree_spec.rb
298
+ - spec/layout_treemap_spec.rb
247
299
  - spec/line_spec.rb
248
300
  - spec/mark_spec.rb
249
301
  - spec/nest_spec.rb
250
302
  - spec/panel_spec.rb
251
303
  - spec/readme_spec.rb
252
304
  - spec/ruby_api_spec.rb
305
+ - spec/rule_spec.rb
253
306
  - spec/scale_linear_datetime_spec.rb
254
307
  - spec/scale_linear_spec.rb
255
308
  - spec/scale_log_spec.rb
@@ -257,6 +310,8 @@ files:
257
310
  - spec/scale_spec.rb
258
311
  - spec/spec.opts
259
312
  - spec/spec_helper.rb
313
+ - spec/vector_spec.rb
314
+ - spec/wedge_spec.rb
260
315
  - vendor/protovis/protovis-r3.3.js
261
316
  - vendor/protovis/src/behavior/Behavior.js
262
317
  - vendor/protovis/src/behavior/Drag.js
@@ -371,7 +426,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
371
426
  requirements:
372
427
  - - ">="
373
428
  - !ruby/object:Gem::Version
374
- hash: 3
375
429
  segments:
376
430
  - 0
377
431
  version: "0"
@@ -380,7 +434,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
380
434
  requirements:
381
435
  - - ">="
382
436
  - !ruby/object:Gem::Version
383
- hash: 3
384
437
  segments:
385
438
  - 0
386
439
  version: "0"
@@ -390,6 +443,6 @@ rubyforge_project: rubyvis
390
443
  rubygems_version: 1.3.7
391
444
  signing_key:
392
445
  specification_version: 3
393
- summary: Ruby port of Protovis[http://vis.stanford.edu/protovis/], a great visualization toolkit
446
+ summary: Ruby port of Protovis[http://vis.stanford.edu/protovis/], a Javascript visualization toolkit.
394
447
  test_files: []
395
448