fnando-chart 0.0.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.
- data/License.txt +20 -0
- data/README.markdown +178 -0
- data/Rakefile +78 -0
- data/chart.gemspec +27 -0
- data/init.rb +1 -0
- data/lib/chart/bar.rb +35 -0
- data/lib/chart/base.rb +102 -0
- data/lib/chart/grouped_bar.rb +30 -0
- data/lib/chart/pie.rb +41 -0
- data/lib/chart.rb +11 -0
- metadata +72 -0
data/License.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Nando Vieira
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
ADDED
@@ -0,0 +1,178 @@
|
|
1
|
+
Chart
|
2
|
+
=====
|
3
|
+
|
4
|
+
Chart is a wrapper for the excellent [ChartDirector](http://www.advsofteng.com/) library.
|
5
|
+
It does not cover all charts; only those I need!
|
6
|
+
|
7
|
+
Supported charts: grouped bars
|
8
|
+
|
9
|
+
Installation
|
10
|
+
------------
|
11
|
+
|
12
|
+
### Installing ChartDirector
|
13
|
+
|
14
|
+
1. Download ChartDirector for Ruby at <http://www.advsofteng.com/download.html>
|
15
|
+
2. Extract the files
|
16
|
+
3. Run `ruby install.rb`
|
17
|
+
|
18
|
+
### Installing Chart
|
19
|
+
|
20
|
+
You can use it as gem or plugin:
|
21
|
+
|
22
|
+
sudo gem install fnando-chart --source=http://gems.github.com
|
23
|
+
|
24
|
+
or
|
25
|
+
|
26
|
+
script/plugin install git://github.com/fnando/chart.git
|
27
|
+
|
28
|
+
Usage
|
29
|
+
-----
|
30
|
+
|
31
|
+
Just require the Chart library.
|
32
|
+
|
33
|
+
require "chart"
|
34
|
+
|
35
|
+
### Bars
|
36
|
+
|
37
|
+
# set some data
|
38
|
+
data = [3600.99, 1479.00, 900.10]
|
39
|
+
|
40
|
+
chart = Chart::Bar.new({
|
41
|
+
:width => 400,
|
42
|
+
:height => 240,
|
43
|
+
:data => data,
|
44
|
+
:margins => [50, 25],
|
45
|
+
:plot_area => [320, 180],
|
46
|
+
:labels => %w(Ruby Python Erlang),
|
47
|
+
:multicolor => false
|
48
|
+
})
|
49
|
+
|
50
|
+
chart.write("bar.png")
|
51
|
+
|
52
|
+
Result:
|
53
|
+
|
54
|
+

|
55
|
+
|
56
|
+
### Multicolor Bars
|
57
|
+
|
58
|
+
# set some data
|
59
|
+
data = [3600.99, 1479.00, 900.10]
|
60
|
+
|
61
|
+
chart = Chart::Bar.new({
|
62
|
+
:width => 400,
|
63
|
+
:height => 240,
|
64
|
+
:legend => %w(Ruby Python Erlang),
|
65
|
+
:data => data,
|
66
|
+
:margins => [50, 25],
|
67
|
+
:plot_area => [320, 180],
|
68
|
+
:labels => %w(Jan Feb Mar),
|
69
|
+
:multicolor => true
|
70
|
+
})
|
71
|
+
|
72
|
+
chart.write("multicolorbar.png")
|
73
|
+
|
74
|
+
Result:
|
75
|
+
|
76
|
+

|
77
|
+
|
78
|
+
### Grouped Bars
|
79
|
+
|
80
|
+
# set some data
|
81
|
+
in_data = [3600.99, 1479.00, 900.10]
|
82
|
+
out_data = [728.77, 356.98, 1100.00]
|
83
|
+
|
84
|
+
chart = Chart::GroupedBar.new({
|
85
|
+
:width => 400,
|
86
|
+
:height => 240,
|
87
|
+
:colors => [Chart::GREEN, Chart::RED],
|
88
|
+
:legend => %w(In Out),
|
89
|
+
:data => [in_data, out_data],
|
90
|
+
:margins => [50, 25],
|
91
|
+
:plot_area => [320, 180],
|
92
|
+
:labels => %w(Jan Feb Mar)
|
93
|
+
})
|
94
|
+
|
95
|
+
chart.write("groupedbar.png")
|
96
|
+
|
97
|
+
Result:
|
98
|
+
|
99
|
+

|
100
|
+
|
101
|
+
### Pie
|
102
|
+
|
103
|
+
# set some data
|
104
|
+
data = [1000, 500, 300, 30]
|
105
|
+
|
106
|
+
# set the legend
|
107
|
+
legend = ["Ruby", "Python", "Erlang", "PHP"]
|
108
|
+
|
109
|
+
chart = Chart::Pie.new({
|
110
|
+
:width => 400,
|
111
|
+
:height => 250,
|
112
|
+
:data => data,
|
113
|
+
:margins => [150, 130],
|
114
|
+
:legend => legend,
|
115
|
+
:radius => 80,
|
116
|
+
:position => [310, 80], # [legend_x, legend_y]
|
117
|
+
:label_format => "${value|2,.}\n({percent}%)"
|
118
|
+
})
|
119
|
+
|
120
|
+
chart.write("pie.png")
|
121
|
+
|
122
|
+
Result:
|
123
|
+
|
124
|
+

|
125
|
+
|
126
|
+
To hide the pie label, just set the `label_format` to `nil`:
|
127
|
+
|
128
|
+
# set some data
|
129
|
+
data = [1000, 500, 300, 30]
|
130
|
+
|
131
|
+
# set the legend
|
132
|
+
legend = ["Ruby", "Python", "Erlang", "PHP"]
|
133
|
+
|
134
|
+
chart = Chart::Pie.new({
|
135
|
+
:width => 400,
|
136
|
+
:height => 250,
|
137
|
+
:data => data,
|
138
|
+
:margins => [150, 130],
|
139
|
+
:legend => legend,
|
140
|
+
:radius => 80,
|
141
|
+
:position => [310, 80], # [legend_x, legend_y]
|
142
|
+
:label_format => nil
|
143
|
+
})
|
144
|
+
|
145
|
+
chart.write("pie_without_labels.png")
|
146
|
+
|
147
|
+
Result:
|
148
|
+
|
149
|
+

|
150
|
+
|
151
|
+
MAINTAINER
|
152
|
+
----------
|
153
|
+
|
154
|
+
* Nando Vieira ([http://simplesideias.com.br](http://simplesideias.com.br))
|
155
|
+
|
156
|
+
LICENSE:
|
157
|
+
--------
|
158
|
+
|
159
|
+
(The MIT License)
|
160
|
+
|
161
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
162
|
+
a copy of this software and associated documentation files (the
|
163
|
+
'Software'), to deal in the Software without restriction, including
|
164
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
165
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
166
|
+
permit persons to whom the Software is furnished to do so, subject to
|
167
|
+
the following conditions:
|
168
|
+
|
169
|
+
The above copyright notice and this permission notice shall be
|
170
|
+
included in all copies or substantial portions of the Software.
|
171
|
+
|
172
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
173
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
174
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
175
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
176
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
177
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
178
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
PKG_FILES = %w(init.rb Rakefile chart.gemspec License.txt README.markdown) +
|
4
|
+
Dir["lib/**/*"]
|
5
|
+
|
6
|
+
spec = Gem::Specification.new do |s|
|
7
|
+
s.name = "chart"
|
8
|
+
s.version = "0.0.1"
|
9
|
+
s.summary = "A simple ChartDirector wrapper"
|
10
|
+
s.authors = ["Nando Vieira"]
|
11
|
+
s.email = ["fnando.vieira@gmail.com"]
|
12
|
+
s.homepage = "http://github.com/fnando/chart"
|
13
|
+
s.description = ""
|
14
|
+
s.has_rdoc = false
|
15
|
+
s.files = PKG_FILES
|
16
|
+
|
17
|
+
s.add_dependency "rubigen"
|
18
|
+
end
|
19
|
+
|
20
|
+
namespace :gem do
|
21
|
+
# Thanks to the Merb project for this code.
|
22
|
+
desc "Update Github Gemspec"
|
23
|
+
task :update_gemspec do
|
24
|
+
skip_fields = %w(new_platform original_platform specification_version loaded required_ruby_version rubygems_version platform)
|
25
|
+
|
26
|
+
result = "# WARNING : RAKE AUTO-GENERATED FILE. DO NOT MANUALLY EDIT!\n"
|
27
|
+
result << "# RUN : 'rake gem:update_gemspec'\n\n"
|
28
|
+
result << "Gem::Specification.new do |s|\n"
|
29
|
+
|
30
|
+
spec.instance_variables.each do |ivar|
|
31
|
+
value = spec.instance_variable_get(ivar)
|
32
|
+
name = ivar.split("@").last
|
33
|
+
next if name == "date"
|
34
|
+
|
35
|
+
next if skip_fields.include?(name) || value.nil? || value == "" || (value.respond_to?(:empty?) && value.empty?)
|
36
|
+
if name == "dependencies"
|
37
|
+
value.each do |d|
|
38
|
+
dep, *ver = d.to_s.split(" ")
|
39
|
+
result << " s.add_dependency #{dep.inspect}, #{ver.join(" ").inspect.gsub(/[()]/, "").gsub(", runtime", "")}\n"
|
40
|
+
end
|
41
|
+
else
|
42
|
+
case value
|
43
|
+
when Array
|
44
|
+
value = name != "files" ? value.inspect : value.inspect.split(",").join(",\n")
|
45
|
+
when FalseClass
|
46
|
+
when TrueClass
|
47
|
+
when Fixnum
|
48
|
+
when String
|
49
|
+
value = value.inspect
|
50
|
+
else
|
51
|
+
value = value.to_s.inspect
|
52
|
+
end
|
53
|
+
result << " s.#{name} = #{value}\n"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
result << "end"
|
58
|
+
File.open(File.join(File.dirname(__FILE__), "#{spec.name}.gemspec"), "w"){|f| f << result}
|
59
|
+
end
|
60
|
+
|
61
|
+
desc "Build gem"
|
62
|
+
task :build => [:update_gemspec] do
|
63
|
+
system "rm *.gem"
|
64
|
+
system "gem build #{spec.instance_variable_get('@name')}.gemspec"
|
65
|
+
end
|
66
|
+
|
67
|
+
desc "Install gem"
|
68
|
+
task :install => [:update_gemspec, :build] do
|
69
|
+
system "sudo gem install #{spec.instance_variable_get('@name')}"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
desc "Run all specs"
|
74
|
+
task :spec do
|
75
|
+
Dir.glob("spec/chart/*_spec.rb").each do |file|
|
76
|
+
system "ruby #{file} -c"
|
77
|
+
end
|
78
|
+
end
|
data/chart.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# WARNING : RAKE AUTO-GENERATED FILE. DO NOT MANUALLY EDIT!
|
2
|
+
# RUN : 'rake gem:update_gemspec'
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.authors = ["Nando Vieira"]
|
6
|
+
s.require_paths = ["lib"]
|
7
|
+
s.required_rubygems_version = ">= 0"
|
8
|
+
s.has_rdoc = false
|
9
|
+
s.files = ["init.rb",
|
10
|
+
"Rakefile",
|
11
|
+
"chart.gemspec",
|
12
|
+
"License.txt",
|
13
|
+
"README.markdown",
|
14
|
+
"lib/chart",
|
15
|
+
"lib/chart/bar.rb",
|
16
|
+
"lib/chart/base.rb",
|
17
|
+
"lib/chart/grouped_bar.rb",
|
18
|
+
"lib/chart/pie.rb",
|
19
|
+
"lib/chart.rb"]
|
20
|
+
s.email = ["fnando.vieira@gmail.com"]
|
21
|
+
s.version = "0.0.1"
|
22
|
+
s.homepage = "http://github.com/fnando/chart"
|
23
|
+
s.name = "chart"
|
24
|
+
s.summary = "A simple ChartDirector wrapper"
|
25
|
+
s.add_dependency "rubigen", ">= 0"
|
26
|
+
s.bindir = "bin"
|
27
|
+
end
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/lib/chart"
|
data/lib/chart/bar.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
module Chart
|
2
|
+
class Bar < Base
|
3
|
+
def instantiate
|
4
|
+
# instantiate a new chart
|
5
|
+
@object = ChartDirector::XYChart.new(@width, @height) if @width && @height
|
6
|
+
end
|
7
|
+
|
8
|
+
def generate
|
9
|
+
# set the plot area
|
10
|
+
@object.setPlotArea(@margins[0], @margins[1], @plot_area[0], @plot_area[1], 0xe9e9e9, 0xf5f5f5)
|
11
|
+
|
12
|
+
# set the legend position
|
13
|
+
@object.addLegend(@margins[0], 0, false, "normal", 8).setBackground(ChartDirector::Transparent)
|
14
|
+
|
15
|
+
# set the top margin
|
16
|
+
@object.yAxis.setTopMargin(@plot_top_margin)
|
17
|
+
|
18
|
+
# set the labels
|
19
|
+
@object.xAxis.setLabels(@labels)
|
20
|
+
|
21
|
+
# add data to layer
|
22
|
+
if @multicolor
|
23
|
+
@object.addBarLayer3(@data, @colors, @legend, 0)
|
24
|
+
else
|
25
|
+
@object.addBarLayer(@data, @colors.first)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def defaults!
|
31
|
+
super
|
32
|
+
@colors = Chart::COLORS
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/chart/base.rb
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
module Chart
|
2
|
+
# set some color constants
|
3
|
+
GREEN = 0x5EC200
|
4
|
+
RED = 0xE05257
|
5
|
+
|
6
|
+
COLORS = [
|
7
|
+
0x719CE4,
|
8
|
+
0xFF8F00,
|
9
|
+
0x94CB47,
|
10
|
+
0xff3333,
|
11
|
+
0x7412C5,
|
12
|
+
0x78722F,
|
13
|
+
0xFFE921,
|
14
|
+
0x666666,
|
15
|
+
0x7F2548,
|
16
|
+
0xcccccc,
|
17
|
+
0x990000,
|
18
|
+
0x0B66AF,
|
19
|
+
0xFF0066,
|
20
|
+
0xBBD6E3,
|
21
|
+
0xBEB1D2
|
22
|
+
]
|
23
|
+
|
24
|
+
class Base
|
25
|
+
# Set the chart width
|
26
|
+
attr_accessor :width
|
27
|
+
|
28
|
+
# Set the chart height
|
29
|
+
attr_accessor :height
|
30
|
+
|
31
|
+
# Set the labels
|
32
|
+
attr_writer :labels
|
33
|
+
|
34
|
+
# Set the chart legend
|
35
|
+
attr_writer :legend
|
36
|
+
|
37
|
+
# Set the chart data
|
38
|
+
attr_accessor :data
|
39
|
+
|
40
|
+
# Set the plot area
|
41
|
+
attr_accessor :plot_area
|
42
|
+
|
43
|
+
# Set the chart left-top margins
|
44
|
+
attr_accessor :margins
|
45
|
+
|
46
|
+
# Set bar colors
|
47
|
+
attr_accessor :colors
|
48
|
+
|
49
|
+
# Set if bar is multicolor
|
50
|
+
attr_accessor :multicolor
|
51
|
+
|
52
|
+
# Set plot top margin
|
53
|
+
attr_accessor :plot_top_margin
|
54
|
+
|
55
|
+
# Set position
|
56
|
+
attr_accessor :position
|
57
|
+
|
58
|
+
# Set radius
|
59
|
+
attr_accessor :radius
|
60
|
+
|
61
|
+
# Set label format
|
62
|
+
attr_accessor :label_format
|
63
|
+
|
64
|
+
# The ChartDirector object
|
65
|
+
attr_accessor :object
|
66
|
+
|
67
|
+
# Initialize a new chart object. Specify the
|
68
|
+
# chart attributes by providing a hash.
|
69
|
+
def initialize(options={})
|
70
|
+
defaults!
|
71
|
+
options.each {|name, value| send("#{name}=", value)}
|
72
|
+
instantiate
|
73
|
+
end
|
74
|
+
|
75
|
+
# Save the chart image to the specified path
|
76
|
+
def write(path)
|
77
|
+
generate
|
78
|
+
@object.makeChart(path)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Wrapper to the ActionView helpers
|
82
|
+
def helper
|
83
|
+
Helper.instance
|
84
|
+
end
|
85
|
+
|
86
|
+
# Labels attribute reader
|
87
|
+
def labels
|
88
|
+
@labels
|
89
|
+
end
|
90
|
+
|
91
|
+
# Legend attribute reader
|
92
|
+
def legend
|
93
|
+
@legend
|
94
|
+
end
|
95
|
+
|
96
|
+
private
|
97
|
+
# Set the chart defaults; should be overwritten.
|
98
|
+
def defaults!
|
99
|
+
@plot_top_margin = 50
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Chart
|
2
|
+
class GroupedBar < Base
|
3
|
+
def instantiate
|
4
|
+
# instantiate a new chart
|
5
|
+
@object = ChartDirector::XYChart.new(@width, @height) if @width && @height
|
6
|
+
end
|
7
|
+
|
8
|
+
def generate
|
9
|
+
# set the plot area
|
10
|
+
@object.setPlotArea(@margins[0], @margins[1], @plot_area[0], @plot_area[1], 0xe9e9e9, 0xf5f5f5)
|
11
|
+
|
12
|
+
# set the legend position
|
13
|
+
@object.addLegend(@margins[0], 0, false, "normal", 8).setBackground(ChartDirector::Transparent)
|
14
|
+
|
15
|
+
# set the top margin
|
16
|
+
@object.yAxis.setTopMargin(@plot_top_margin)
|
17
|
+
|
18
|
+
# set the labels
|
19
|
+
@object.xAxis.setLabels(@labels)
|
20
|
+
|
21
|
+
# create the layer
|
22
|
+
layer = @object.addBarLayer2(ChartDirector::Side, 0)
|
23
|
+
|
24
|
+
# add data to layer
|
25
|
+
@data.each_with_index do |data, index|
|
26
|
+
layer.addDataSet(data, @colors[index], legend[index])
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/chart/pie.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
module Chart
|
2
|
+
class Pie < Base
|
3
|
+
def instantiate
|
4
|
+
# instantiate a new chart
|
5
|
+
@object = ChartDirector::PieChart.new(@width, @height) if @width && @height
|
6
|
+
end
|
7
|
+
|
8
|
+
def generate
|
9
|
+
# set the pie size and position
|
10
|
+
@object.setPieSize(@margins[0], @margins[1], @radius)
|
11
|
+
|
12
|
+
# set data and labels
|
13
|
+
@object.setData(@data, @legend)
|
14
|
+
|
15
|
+
# set label format
|
16
|
+
@object.setLabelFormat(@label_format)
|
17
|
+
|
18
|
+
# hide label format if is nil
|
19
|
+
@object.setLabelStyle("normal", 8, ChartDirector::Transparent) if @label_format.nil?
|
20
|
+
|
21
|
+
# add legend box
|
22
|
+
@object.addLegend(@position[0], @position[1])
|
23
|
+
|
24
|
+
# set colors
|
25
|
+
@object.setColors2(ChartDirector::DataColor, @colors)
|
26
|
+
|
27
|
+
# set label position
|
28
|
+
@object.setLabelPos(15, ChartDirector::LineColor)
|
29
|
+
|
30
|
+
# set label line color
|
31
|
+
@object.setJoinLine(0x666666)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
def defaults!
|
36
|
+
super
|
37
|
+
@colors = Chart::COLORS
|
38
|
+
@label_format = "{percent}%"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/chart.rb
ADDED
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fnando-chart
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nando Vieira
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-01-11 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rubigen
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
version:
|
24
|
+
description:
|
25
|
+
email:
|
26
|
+
- fnando.vieira@gmail.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files: []
|
32
|
+
|
33
|
+
files:
|
34
|
+
- init.rb
|
35
|
+
- Rakefile
|
36
|
+
- chart.gemspec
|
37
|
+
- License.txt
|
38
|
+
- README.markdown
|
39
|
+
- lib/chart
|
40
|
+
- lib/chart/bar.rb
|
41
|
+
- lib/chart/base.rb
|
42
|
+
- lib/chart/grouped_bar.rb
|
43
|
+
- lib/chart/pie.rb
|
44
|
+
- lib/chart.rb
|
45
|
+
has_rdoc: false
|
46
|
+
homepage: http://github.com/fnando/chart
|
47
|
+
post_install_message:
|
48
|
+
rdoc_options: []
|
49
|
+
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
version:
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: "0"
|
63
|
+
version:
|
64
|
+
requirements: []
|
65
|
+
|
66
|
+
rubyforge_project:
|
67
|
+
rubygems_version: 1.2.0
|
68
|
+
signing_key:
|
69
|
+
specification_version: 2
|
70
|
+
summary: A simple ChartDirector wrapper
|
71
|
+
test_files: []
|
72
|
+
|