svg_charts 1.0 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +0 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +24 -0
- data/{README.rdoc → README.md} +38 -29
- data/lib/charts/elements.rb +0 -0
- data/lib/charts/line.rb +54 -51
- data/lib/charts/version.rb +3 -0
- data/lib/svg_charts.rb +1 -0
- data/spec/charts/line_spec.rb +105 -49
- data/spec/spec_helper.rb +6 -1
- data/svg_charts.gemspec +15 -20
- metadata +30 -15
- data/VERSION +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 54e2d61c5b862d2563636268a0b6f257a1eb4512
|
4
|
+
data.tar.gz: 3b8f4b7399292b8f92e75ec201c829f42b1db1fb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f461cce55168620110f26c085dadeff3c75b977c86379be58e0b88abb5436720186bb204ebd22159eb4f974de6414d8bec1a8c2f765fb7b5f0164e5db3bea621
|
7
|
+
data.tar.gz: 941dd3606d129893f975b1728431a8b0b24826c9be194c9acbfdf0fd94a2074efc26181d900ab14ae524c5f5095d003be83a48828c8eba7ca9d9a86fe5d44619
|
data/.rspec
CHANGED
File without changes
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
svg_charts (1.0.3)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.2.1)
|
10
|
+
rspec (2.13.0)
|
11
|
+
rspec-core (~> 2.13.0)
|
12
|
+
rspec-expectations (~> 2.13.0)
|
13
|
+
rspec-mocks (~> 2.13.0)
|
14
|
+
rspec-core (2.13.1)
|
15
|
+
rspec-expectations (2.13.0)
|
16
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
17
|
+
rspec-mocks (2.13.0)
|
18
|
+
|
19
|
+
PLATFORMS
|
20
|
+
ruby
|
21
|
+
|
22
|
+
DEPENDENCIES
|
23
|
+
rspec
|
24
|
+
svg_charts!
|
data/{README.rdoc → README.md}
RENAMED
@@ -1,47 +1,56 @@
|
|
1
|
-
|
1
|
+
# SVGCharts
|
2
2
|
|
3
3
|
Draw charts using SVG.
|
4
4
|
|
5
|
-
|
5
|
+
## Installation
|
6
6
|
|
7
7
|
gem install svg_charts
|
8
8
|
|
9
|
-
|
9
|
+
## Usage
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
require "svg_charts"
|
11
|
+
~~~.ruby
|
12
|
+
#=> file.rb
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
:width => 680,
|
18
|
-
:y_retreat => 20,
|
19
|
-
:y_label => "Numbers",
|
20
|
-
:x_retreat => 20,
|
21
|
-
:x_label => "Letters",
|
22
|
-
:x_scale => ["A", "B", "C"],
|
23
|
-
:data => [10, 20, 30],
|
24
|
-
:data_color => "#000000"
|
25
|
-
})
|
14
|
+
require "rubygems"
|
15
|
+
require "svg_charts"
|
26
16
|
|
27
|
-
|
28
|
-
|
17
|
+
line = SVGCharts::Line.new({
|
18
|
+
:height => 300,
|
19
|
+
:width => 300,
|
20
|
+
:y_retreat => 20,
|
21
|
+
:x_retreat => 20
|
22
|
+
})
|
29
23
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
</svg>
|
24
|
+
@scale = line.scale({
|
25
|
+
:y_label => "Numbers",
|
26
|
+
:x_label => "Letters"
|
27
|
+
})
|
35
28
|
|
36
|
-
|
29
|
+
@chart = line.draw({
|
30
|
+
:scale => ["A", "B", "C"],
|
31
|
+
:data => [10, 20, 30],
|
32
|
+
:data_color => "#000000",
|
33
|
+
:show_scale => true,
|
34
|
+
:show_dashed => true
|
35
|
+
})
|
36
|
+
~~~
|
37
37
|
|
38
|
-
|
38
|
+
# file.erb
|
39
39
|
|
40
|
-
|
40
|
+
<svg width="680" height="350">
|
41
|
+
<%= @scale %>
|
42
|
+
<%= @chart %>
|
43
|
+
</svg>
|
41
44
|
|
42
|
-
|
45
|
+
## Maintainer
|
43
46
|
|
44
|
-
|
47
|
+
* Rogério Zambon (http://rogerio.me)
|
48
|
+
|
49
|
+
## Collaborators
|
50
|
+
|
51
|
+
* André Ronix (http://www.linkedin.com/pub/andr%C3%A9-s-ronix/27/212/3b2): Generated the coordinates calc.
|
52
|
+
|
53
|
+
## License
|
45
54
|
|
46
55
|
(The MIT License)
|
47
56
|
|
data/lib/charts/elements.rb
CHANGED
File without changes
|
data/lib/charts/line.rb
CHANGED
@@ -2,31 +2,20 @@ module SVGCharts
|
|
2
2
|
class Line
|
3
3
|
include SVGElements
|
4
4
|
|
5
|
-
def initialize(options
|
6
|
-
|
7
|
-
|
8
|
-
[:width, :height, :y_retreat, :y_label, :x_retreat, :x_label, :x_scale, :data, :data_color].each do |key|
|
9
|
-
raise ArgumentError unless options.has_key?(key)
|
10
|
-
end
|
5
|
+
def initialize(options)
|
6
|
+
validation options, [:width, :height, :y_retreat, :x_retreat]
|
11
7
|
|
12
8
|
@width = options[:width]
|
13
9
|
@height = options[:height]
|
14
10
|
|
15
11
|
@y_retreat = options[:y_retreat]
|
16
|
-
@y_label = options[:y_label]
|
17
|
-
|
18
12
|
@x_retreat = options[:x_retreat]
|
19
|
-
@x_label = options[:x_label]
|
20
|
-
@x_scale = options[:x_scale]
|
21
|
-
|
22
|
-
@data = options[:data]
|
23
|
-
@data_color = options[:data_color]
|
24
13
|
end
|
25
14
|
|
26
|
-
def
|
27
|
-
|
15
|
+
def scale(options)
|
16
|
+
validation options, [:y_label, :x_label]
|
28
17
|
|
29
|
-
|
18
|
+
scale = line({
|
30
19
|
:x1 => @x_retreat - 8,
|
31
20
|
:x2 => @x_retreat - 8,
|
32
21
|
:y1 => @y_retreat - 2,
|
@@ -35,7 +24,7 @@ module SVGCharts
|
|
35
24
|
:color => "#aaa"
|
36
25
|
})
|
37
26
|
|
38
|
-
|
27
|
+
scale << line({
|
39
28
|
:x1 => 0,
|
40
29
|
:x2 => @width,
|
41
30
|
:y1 => @height,
|
@@ -44,30 +33,32 @@ module SVGCharts
|
|
44
33
|
:color => "#aaa"
|
45
34
|
})
|
46
35
|
|
47
|
-
|
48
|
-
:x => @width/2 - (
|
36
|
+
scale << text({
|
37
|
+
:x => @width/2 - (options[:y_label].length * 2),
|
49
38
|
:y => @height + 30,
|
50
39
|
:color => "#bbb",
|
51
40
|
:font_size => 11,
|
52
41
|
:font_weight => "bold",
|
53
|
-
:value =>
|
42
|
+
:value => options[:x_label]
|
54
43
|
})
|
55
44
|
|
56
|
-
|
57
|
-
:x => @height/2 - (
|
45
|
+
scale << text_with_rotation({
|
46
|
+
:x => @height/2 - (options[:y_label].length * 2),
|
58
47
|
:y => 8,
|
59
48
|
:color => "#bbb",
|
60
49
|
:font_size => 11,
|
61
50
|
:font_weight => "bold",
|
62
51
|
:rotate => "270 #{@height/2} #{@height/2}",
|
63
|
-
:value =>
|
52
|
+
:value => options[:y_label]
|
64
53
|
})
|
65
54
|
|
66
|
-
|
55
|
+
scale
|
67
56
|
end
|
68
57
|
|
69
|
-
def
|
70
|
-
|
58
|
+
def draw(options)
|
59
|
+
validation options, [:scale, :data, :data_color, :show_scale, :show_dashed]
|
60
|
+
|
61
|
+
calculate_coordinates options[:data]
|
71
62
|
|
72
63
|
elements = ""
|
73
64
|
|
@@ -78,17 +69,19 @@ module SVGCharts
|
|
78
69
|
:y1 => coordinate[2],
|
79
70
|
:y2 => coordinate[3],
|
80
71
|
:line_width => 1,
|
81
|
-
:color =>
|
72
|
+
:color => options[:data_color]
|
82
73
|
})
|
83
74
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
75
|
+
if options[:show_dashed]
|
76
|
+
elements << line_dashed({
|
77
|
+
:x1 => coordinate[0],
|
78
|
+
:x2 => coordinate[0],
|
79
|
+
:y1 => @height,
|
80
|
+
:y2 => coordinate[2],
|
81
|
+
:line_width => 1,
|
82
|
+
:color => "#b9b9b9"
|
83
|
+
})
|
84
|
+
end
|
92
85
|
|
93
86
|
elements << circle({
|
94
87
|
:x => coordinate[0],
|
@@ -102,39 +95,41 @@ module SVGCharts
|
|
102
95
|
elements << text({
|
103
96
|
:x => coordinate[0] - 10,
|
104
97
|
:y => coordinate[2] - 10,
|
105
|
-
:color =>
|
98
|
+
:color => options[:data_color],
|
106
99
|
:font_size => 11,
|
107
100
|
:font_weight => "bold",
|
108
|
-
:value =>
|
101
|
+
:value => options[:data][i]
|
109
102
|
})
|
110
103
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
104
|
+
if options[:show_scale]
|
105
|
+
elements << text({
|
106
|
+
:x => coordinate[0] - 5,
|
107
|
+
:y => @height + 12,
|
108
|
+
:color => "#999",
|
109
|
+
:font_size => 10,
|
110
|
+
:font_weight => "normal",
|
111
|
+
:value => options[:scale][i]
|
112
|
+
})
|
113
|
+
end
|
119
114
|
end
|
120
115
|
|
121
116
|
elements
|
122
117
|
end
|
123
118
|
|
124
119
|
private
|
125
|
-
def calculate_coordinates
|
120
|
+
def calculate_coordinates(data)
|
126
121
|
@coordinates = []
|
127
122
|
|
128
|
-
y_positions = (@height - @y_retreat)
|
129
|
-
x_positions = @width
|
123
|
+
y_positions = (@height - @y_retreat)/data.max
|
124
|
+
x_positions = @width/data.size
|
130
125
|
|
131
|
-
|
126
|
+
data.each_with_index do |value, i|
|
132
127
|
x1 = @x_retreat + (x_positions * i)
|
133
128
|
y1 = @height - (y_positions * value)
|
134
129
|
|
135
|
-
unless
|
130
|
+
unless data[i + 1].nil?
|
136
131
|
x2 = @x_retreat + (x_positions * (i + 1))
|
137
|
-
y2 = @height - (y_positions *
|
132
|
+
y2 = @height - (y_positions * data[i + 1])
|
138
133
|
else
|
139
134
|
x2 = x1
|
140
135
|
y2 = y1
|
@@ -143,5 +138,13 @@ module SVGCharts
|
|
143
138
|
@coordinates << [x1.abs, x2.abs, y1.abs, y2.abs]
|
144
139
|
end
|
145
140
|
end
|
141
|
+
|
142
|
+
def validation(options, params)
|
143
|
+
raise ArgumentError if options.empty?
|
144
|
+
|
145
|
+
params.each do |key|
|
146
|
+
raise ArgumentError unless options.has_key?(key)
|
147
|
+
end
|
148
|
+
end
|
146
149
|
end
|
147
150
|
end
|
data/lib/svg_charts.rb
CHANGED
data/spec/charts/line_spec.rb
CHANGED
@@ -1,79 +1,135 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe SVGCharts::Line do
|
4
|
-
context "
|
5
|
-
|
6
|
-
|
4
|
+
context "initialize object" do
|
5
|
+
context "missing parameters" do
|
6
|
+
it "when hash empty" do
|
7
|
+
expect { chart = SVGCharts::Line.new }.to raise_error(ArgumentError)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "when the hash keys is incomplete" do
|
11
|
+
options = {
|
12
|
+
:width => 300,
|
13
|
+
:height => 300
|
14
|
+
}
|
15
|
+
|
16
|
+
expect { chart = SVGCharts::Line.new options }.to raise_error(ArgumentError)
|
17
|
+
end
|
7
18
|
end
|
19
|
+
end
|
8
20
|
|
9
|
-
|
10
|
-
|
11
|
-
:width => 300,
|
12
|
-
:height => 300
|
13
|
-
}
|
21
|
+
def count_words(expression, target)
|
22
|
+
counter = 0
|
14
23
|
|
15
|
-
|
24
|
+
expression.split.each do |word|
|
25
|
+
counter += 1 if word.include? target
|
16
26
|
end
|
27
|
+
|
28
|
+
counter
|
17
29
|
end
|
18
30
|
|
19
|
-
context "
|
31
|
+
context "set scale" do
|
20
32
|
before do
|
21
|
-
@
|
22
|
-
:height =>
|
23
|
-
:width =>
|
33
|
+
@svg_chart = SVGCharts::Line.new({
|
34
|
+
:height => 300,
|
35
|
+
:width => 300,
|
24
36
|
:y_retreat => 20,
|
25
|
-
:
|
26
|
-
|
27
|
-
:x_label => "Letters",
|
28
|
-
:x_scale => ["A", "B", "C"],
|
29
|
-
:data => [10, 20, 30],
|
30
|
-
:data_color => "#000000"
|
31
|
-
}
|
37
|
+
:x_retreat => 20
|
38
|
+
})
|
32
39
|
end
|
33
40
|
|
34
|
-
|
35
|
-
|
41
|
+
context "missing parameters" do
|
42
|
+
it "when hash empty" do
|
43
|
+
expect { chart = @svg_chart.scale }.to raise_error(ArgumentError)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "when the hash keys is incomplete" do
|
47
|
+
options = {
|
48
|
+
:y_label => "First label"
|
49
|
+
}
|
36
50
|
|
37
|
-
|
38
|
-
|
39
|
-
values.should include("20")
|
40
|
-
values.should include("30")
|
41
|
-
values.should include("A")
|
42
|
-
values.should include("B")
|
43
|
-
values.should include("C")
|
51
|
+
expect { chart = @svg_chart.scale options }.to raise_error(ArgumentError)
|
52
|
+
end
|
44
53
|
end
|
45
54
|
|
46
|
-
|
47
|
-
|
55
|
+
context "when generated" do
|
56
|
+
it "check values" do
|
57
|
+
scale = @svg_chart.scale({
|
58
|
+
:y_label => "Label1",
|
59
|
+
:x_label => "Label2"
|
60
|
+
})
|
48
61
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
62
|
+
scale = scale.gsub( /<[^>]*>/, " ").split
|
63
|
+
scale.should include("Label1")
|
64
|
+
scale.should include("Label2")
|
65
|
+
end
|
53
66
|
|
54
|
-
|
55
|
-
|
67
|
+
it "check elements" do
|
68
|
+
scale = @svg_chart.scale({
|
69
|
+
:y_label => "Label1",
|
70
|
+
:x_label => "Label2"
|
71
|
+
})
|
56
72
|
|
57
|
-
|
58
|
-
|
73
|
+
count_words(scale, "<line").should == 2
|
74
|
+
count_words(scale, "<text").should == 2
|
59
75
|
end
|
76
|
+
end
|
77
|
+
end
|
60
78
|
|
61
|
-
|
79
|
+
context "set chart" do
|
80
|
+
before do
|
81
|
+
@svg_chart = SVGCharts::Line.new({
|
82
|
+
:height => 300,
|
83
|
+
:width => 300,
|
84
|
+
:y_retreat => 20,
|
85
|
+
:x_retreat => 20
|
86
|
+
})
|
62
87
|
end
|
63
88
|
|
64
|
-
|
65
|
-
|
89
|
+
context "missing parameters" do
|
90
|
+
it "when hash empty" do
|
91
|
+
expect { chart = @svg_chart.draw }.to raise_error(ArgumentError)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "when the hash keys is incomplete" do
|
95
|
+
options = {
|
96
|
+
:data_color => "#000000",
|
97
|
+
:show_scale => false,
|
98
|
+
:show_dashed => false
|
99
|
+
}
|
66
100
|
|
67
|
-
|
68
|
-
|
69
|
-
count_words(line_chart, "<circle").should == 3
|
101
|
+
expect { chart = @svg_chart.draw options }.to raise_error(ArgumentError)
|
102
|
+
end
|
70
103
|
end
|
71
104
|
|
72
|
-
|
73
|
-
|
105
|
+
context "when generated" do
|
106
|
+
it "check elements with no scale and dashed" do
|
107
|
+
chart = @svg_chart.draw({
|
108
|
+
:scale => ["A", "B", "C"],
|
109
|
+
:data => [10, 20, 30],
|
110
|
+
:data_color => "#000000",
|
111
|
+
:show_scale => false,
|
112
|
+
:show_dashed => false
|
113
|
+
})
|
114
|
+
|
115
|
+
count_words(chart, "<line").should == 3
|
116
|
+
count_words(chart, "<text").should == 3
|
117
|
+
count_words(chart, "<circle").should == 3
|
118
|
+
end
|
119
|
+
|
120
|
+
it "check elements with scale and dashed" do
|
121
|
+
chart = @svg_chart.draw({
|
122
|
+
:scale => ["A", "B", "C"],
|
123
|
+
:data => [10, 20, 30],
|
124
|
+
:data_color => "#000000",
|
125
|
+
:show_scale => true,
|
126
|
+
:show_dashed => true
|
127
|
+
})
|
74
128
|
|
75
|
-
|
76
|
-
|
129
|
+
count_words(chart, "<line").should == 6
|
130
|
+
count_words(chart, "<text").should == 6
|
131
|
+
count_words(chart, "<circle").should == 3
|
132
|
+
end
|
77
133
|
end
|
78
134
|
end
|
79
135
|
end
|
data/spec/spec_helper.rb
CHANGED
data/svg_charts.gemspec
CHANGED
@@ -1,24 +1,19 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "charts/version"
|
4
|
+
|
2
5
|
Gem::Specification.new do |s|
|
3
|
-
s.
|
4
|
-
s.
|
5
|
-
s.
|
6
|
-
s.
|
7
|
-
s.
|
8
|
-
".
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
"spec/charts/line_spec.rb",
|
14
|
-
"VERSION",
|
15
|
-
"README.rdoc",
|
16
|
-
"svg_charts.gemspec"
|
17
|
-
]
|
18
|
-
s.homepage = "http://github.com/rogeriozambon/svg_charts"
|
19
|
-
s.name = "svg_charts"
|
6
|
+
s.name = "svg_charts"
|
7
|
+
s.version = SVGCharts::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Rogério Zambon"]
|
10
|
+
s.email = ["rogeriozambon@gmail.com"]
|
11
|
+
s.homepage = "http://github.com/rogeriozambon/svg_charts"
|
12
|
+
s.summary = "Draw charts using SVG."
|
13
|
+
s.description = s.summary
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
20
16
|
s.require_paths = ["lib"]
|
21
|
-
|
22
|
-
s.
|
23
|
-
s.version = "1.0"
|
17
|
+
|
18
|
+
s.add_development_dependency "rspec"
|
24
19
|
end
|
metadata
CHANGED
@@ -1,53 +1,68 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svg_charts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Rogério Zambon
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
13
|
-
dependencies:
|
11
|
+
date: 2013-03-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
14
27
|
description: Draw charts using SVG.
|
15
|
-
email:
|
28
|
+
email:
|
29
|
+
- rogeriozambon@gmail.com
|
16
30
|
executables: []
|
17
31
|
extensions: []
|
18
32
|
extra_rdoc_files: []
|
19
33
|
files:
|
20
34
|
- .rspec
|
35
|
+
- Gemfile
|
36
|
+
- Gemfile.lock
|
37
|
+
- README.md
|
21
38
|
- lib/charts/elements.rb
|
22
39
|
- lib/charts/line.rb
|
40
|
+
- lib/charts/version.rb
|
23
41
|
- lib/svg_charts.rb
|
24
|
-
- spec/spec_helper.rb
|
25
42
|
- spec/charts/line_spec.rb
|
26
|
-
-
|
27
|
-
- README.rdoc
|
43
|
+
- spec/spec_helper.rb
|
28
44
|
- svg_charts.gemspec
|
29
45
|
homepage: http://github.com/rogeriozambon/svg_charts
|
30
46
|
licenses: []
|
47
|
+
metadata: {}
|
31
48
|
post_install_message:
|
32
49
|
rdoc_options: []
|
33
50
|
require_paths:
|
34
51
|
- lib
|
35
52
|
required_ruby_version: !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
53
|
requirements:
|
38
|
-
- -
|
54
|
+
- - '>='
|
39
55
|
- !ruby/object:Gem::Version
|
40
56
|
version: '0'
|
41
57
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
58
|
requirements:
|
44
|
-
- -
|
59
|
+
- - '>='
|
45
60
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
61
|
+
version: '0'
|
47
62
|
requirements: []
|
48
63
|
rubyforge_project:
|
49
|
-
rubygems_version:
|
64
|
+
rubygems_version: 2.0.0
|
50
65
|
signing_key:
|
51
|
-
specification_version:
|
66
|
+
specification_version: 4
|
52
67
|
summary: Draw charts using SVG.
|
53
68
|
test_files: []
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.0
|