css_graphs 0.1.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.
@@ -0,0 +1,14 @@
1
+ == 0.1.0
2
+
3
+ * Converted to Hoe
4
+ * Available as a RubyGem
5
+
6
+ == April 13, 2007
7
+
8
+ * Added sizing and multi-graph bar enhancements by Maximiliano Guzman
9
+ * Added test suite that generates HTML files in test/output
10
+
11
+ == Feb 5, 2007
12
+
13
+ * Enhanced all methods to take an array instead of requiring you to use *array
14
+ * bar_graph() normalizes the data when rendering to make it usable for many values.
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2005 Geoffrey Grosenbach
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.
@@ -0,0 +1,17 @@
1
+ History.txt
2
+ MIT-LICENSE
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ about.yml
7
+ generators/css_graphs/css_graphs_generator.rb
8
+ generators/css_graphs/templates/.DS_Store
9
+ generators/css_graphs/templates/colorbar.jpg
10
+ generators/css_graphs/templates/g_colorbar.jpg
11
+ generators/css_graphs/templates/g_colorbar2.jpg
12
+ generators/css_graphs/templates/g_marker.gif
13
+ images/.DS_Store
14
+ images/colorbar.jpg
15
+ init.rb
16
+ lib/css_graphs.rb
17
+ test/test_css_graphs.rb
@@ -0,0 +1,23 @@
1
+ = css_graphs
2
+
3
+ Makes graphs using pure CSS.
4
+
5
+ Includes itself in the ActionView::Helpers::TextHelper module, so no extra include is required.
6
+
7
+ A generator is also available for copying relevant images to the public directory.
8
+
9
+ ./script/generate css_graphs
10
+
11
+ == Resources
12
+
13
+ Subversion
14
+
15
+ * http://topfunky.net/svn/plugins/css_graphs
16
+
17
+ Blog
18
+
19
+ * http://nubyonrails.com/pages/css_graphs
20
+
21
+ Author
22
+
23
+ * Geoffrey Grosenbach boss [at] topfunky [dot] com
@@ -0,0 +1,14 @@
1
+ require 'rake'
2
+ require 'hoe'
3
+ require 'lib/css_graphs'
4
+
5
+ Hoe.new('css_graphs', CssGraphs::VERSION) do |p|
6
+ p.rubyforge_name = 'seattlerb'
7
+ p.author = 'Geoffrey Grosenbach'
8
+ p.email = 'boss AT topfunky.com'
9
+ p.summary = 'Generates a configurable, CSS-tagged HTML calendar.'
10
+ p.description = "A simple method to create an HTML calendar for a single month. Can be styled with CSS. Usable with Ruby on Rails."
11
+ p.url = "http://rubyforge.org/projects/seattlerb"
12
+ p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
13
+ p.clean_globs = ['test/output', 'email.txt']
14
+ end
@@ -0,0 +1,7 @@
1
+ author: topfunky
2
+ summary: A helper to make graphs with CSS and XHTML. Includes a generator for copying relevant images to the public directory.
3
+ homepage: http://nubyonrails.com/pages/css_graphs
4
+ plugin: http://topfunky.net/svn/plugins/css_graphs
5
+ license: MIT
6
+ version: 0.2
7
+ rails_version: 1.0+
@@ -0,0 +1,15 @@
1
+ class CssGraphsGenerator < Rails::Generator::Base
2
+
3
+ def manifest
4
+ record do |m|
5
+ css_graphs_dir = File.join("public", "images", "css_graphs")
6
+ m.directory css_graphs_dir
7
+
8
+ Dir.open(File.join(File.dirname(__FILE__), "templates")).entries.each do |file|
9
+ next if File.directory?(file)
10
+ m.file file, File.join(css_graphs_dir, file)
11
+ end
12
+
13
+ end
14
+ end
15
+ end
Binary file
Binary file
data/init.rb ADDED
@@ -0,0 +1,2 @@
1
+
2
+ ActionView::Base.send :include, CssGraphs
@@ -0,0 +1,371 @@
1
+ module CssGraphs
2
+
3
+ VERSION='0.1.0'
4
+
5
+ # Makes a vertical bar graph.
6
+ #
7
+ # bar_graph [["Stout", 10], ["IPA", 80], ["Pale Ale", 50], ["Milkshake", 30]]
8
+ #
9
+ # NOTE: Updated to take an array instead of forcing you to use *array.
10
+ # NOTE: Normalizes data to fit in the viewable area instead of being fixed to 100.
11
+
12
+ def bar_graph(data=[])
13
+ width = 378
14
+ height = 150
15
+ colors = %w(#ce494a #efba29 #efe708 #5a7dd6 #73a25a)
16
+ floor_cutoff = 24 # Pixels beneath which values will not be drawn in graph
17
+ data_max = data.inject(0) { |memo, array| array.last > memo ? array.last : memo }
18
+
19
+
20
+ html = <<-"HTML"
21
+ <style>
22
+ #vertgraph {
23
+ width: #{width}px;
24
+ height: #{height}px;
25
+ position: relative;
26
+ background-color: #eeeeee;
27
+ border: 4px solid #999999;
28
+ font-family: "Lucida Grande", Verdana, Arial;
29
+ }
30
+
31
+ #vertgraph dl dd {
32
+ position: absolute;
33
+ width: 28px;
34
+ height: 103px;
35
+ bottom: 34px;
36
+ padding: 0 !important;
37
+ margin: 0 !important;
38
+ background-image: url('/images/css_graphs/colorbar.jpg') no-repeat !important;
39
+ text-align: center;
40
+ font-weight: bold;
41
+ color: white;
42
+ line-height: 1.5em;
43
+ }
44
+
45
+ #vertgraph dl dt {
46
+ position: absolute;
47
+ width: 48px;
48
+ height: 25px;
49
+ bottom: 0px;
50
+ padding: 0 !important;
51
+ margin: 0 !important;
52
+ text-align: center;
53
+ color: #444444;
54
+ font-size: 0.8em;
55
+ }
56
+ HTML
57
+
58
+ bar_offset = 24
59
+ bar_increment = 75
60
+ bar_image_offset = 28
61
+
62
+ data.each_with_index do |d, index|
63
+ bar_left = bar_offset + (bar_increment * index)
64
+ label_left = bar_left - 10
65
+ background_offset = bar_image_offset * index
66
+
67
+ html += <<-HTML
68
+ #vertgraph dl dd.#{d[0].to_s.downcase} { left: #{bar_left}px; background-color: #{colors[index]}; background-position: -#{background_offset}px bottom !important; }
69
+ #vertgraph dl dt.#{d[0].to_s.downcase} { left: #{label_left}px; background-position: -#{background_offset}px bottom !important; }
70
+ HTML
71
+ end
72
+
73
+ html += <<-"HTML"
74
+ </style>
75
+ <div id="vertgraph">
76
+ <dl>
77
+ HTML
78
+
79
+ data.each_with_index do |d, index|
80
+ scaled_value = scale_graph_value(d.last, data_max, 100)
81
+ html += <<-"HTML"
82
+ <dt class="#{d.first.to_s.downcase}">#{d[0].to_s.humanize}</dt>
83
+ <dd class="#{d.first.to_s.downcase}" style="height: #{scaled_value}px;" title="#{d.last}">#{scaled_value < floor_cutoff ? '' : d.last}</dt>
84
+ HTML
85
+ end
86
+
87
+ html += <<-"HTML"
88
+ </dl>
89
+ </div>
90
+ HTML
91
+
92
+ html
93
+ end
94
+
95
+
96
+ # Makes a vertical bar graph with several sets of bars.
97
+ #
98
+ # NOTE: Normalizes data to fit in the viewable area instead of being fixed to 100.
99
+ #
100
+ # Example:
101
+ ## <% @data_for_graph = [[['January',10],['February',25],['March',45]],[['January',34],['February',29],['March',80]]] %>
102
+ ## <%= bar_graph (@data_for_graph,{:width => 640,:height => 480}) do |index,variable|
103
+ ## url_for( :action => 'report', :month => index)
104
+ ## end
105
+ ## %>
106
+ #
107
+ # alldata should be an array of variables, each one an array itself, of the form:
108
+ ## [['label1',value1],['label2',value2]]
109
+ #
110
+ # options hash:
111
+ #* :display_value_on_bar if set to true, will display the value on top each bar, default behavior is not to show the value
112
+ #* :colors is an array of colors in hex format: '#EEC2D2' if you don't set them, default colors will be used
113
+ #* :color_by can be set to 'dimension' or 'index'
114
+ #* :width and :height set the dimensions, wich default to 378x150
115
+ #
116
+ # url_creator_block:
117
+ #
118
+ ## the url_creator_block receives two parameters, index and variable, that are used to build the bars links.
119
+ ## index is the position for this bar's that in its variable array, while variable is the variable this bar represents
120
+
121
+ def multi_bar_graph(alldata=[], options={}, &url_creator)
122
+ graph_id = (rand*10000000000000000000).to_i.to_s #we need a unique id for each graph on the page so we can have distinct styles for each of them
123
+ if !options.nil? && options[:width] && options[:height]
124
+ width,height=options[:width].to_i,options[:height].to_i
125
+ else
126
+ width,height = 378,150
127
+ end
128
+ colors = (%w(#ce494a #efba29 #efe708 #5a7dd6 #73a25a))*10 unless colors=options[:colors]
129
+ floor_cutoff = 24 # Pixels beneath which values will not be drawn in graph
130
+ data_max = (alldata.map { |data| data.max{ |a,b| a.last <=> b.last }.last } ).max
131
+ dimensions=alldata.size
132
+ size = alldata.map{ |data| data.size }.max
133
+ bar_offset = 24 #originally set to 24
134
+ bar_group_width=(width-bar_offset)/size #originally set to 48px
135
+ bar_increment = bar_group_width #originally set to 75
136
+ bar_width=(bar_group_width-bar_offset)/dimensions #originally set to 28px
137
+ bar_image_offset = bar_offset+4 #originally set to 28
138
+ bar_padding = 2
139
+
140
+ #p "dimensions = #{dimensions}"
141
+ #p "bar_group_width =#{bar_group_width}"
142
+ #p "bar_width = #{bar_width}"
143
+ #p "bar_increment = #{bar_increment}"
144
+
145
+ html = <<-"HTML"
146
+ <style>
147
+ #vertgraph-#{graph_id} {
148
+ width: #{width}px;
149
+ height: #{height}px;
150
+ position: relative;
151
+ background-color: #eeeeee;
152
+ border: 4px solid #999999;
153
+ font-family: "Lucida Grande", Verdana, Arial;
154
+ }
155
+
156
+ #vertgraph-#{graph_id} dl dd {
157
+ position: absolute;
158
+ width: #{bar_width}px;
159
+ height: #{height-50}px;
160
+ bottom: 34px;
161
+ padding: 0 !important;
162
+ margin: 0 !important;
163
+ background-image: url('/images/css_graphs/colorbar.jpg') no-repeat !important;
164
+ text-align: center;
165
+ font-weight: bold;
166
+ color: white;
167
+ line-height: 1.5em;
168
+ }
169
+
170
+ #vertgraph-#{graph_id} dl dt {
171
+ position: absolute;
172
+ width: #{bar_group_width}px;
173
+ height: 25px;
174
+ bottom: 0px;
175
+ padding: 0 !important;
176
+ margin: 0 !important;
177
+ text-align: center;
178
+ color: #444444;
179
+ font-size: 0.8em;
180
+ }
181
+ HTML
182
+
183
+ alldata.each_with_index do |data,dimension|
184
+ # p "\n drawing dimension #{dimension}"
185
+ data.each_with_index do |d, index|
186
+ # bar_left = bar_offset + (bar_increment * index)
187
+ bar_group_left = bar_offset + (bar_increment * index)
188
+ bar_left = bar_group_left + ((bar_width+bar_padding)*dimension)
189
+ # bar_left = bar_group_left + ( 2*bar_width* (dimension-1))
190
+ # p "\n bar_left #{bar_left}"
191
+ label_left = bar_group_left - 10
192
+ background_offset = ( bar_image_offset * index )
193
+ if options[:color_by]=='index'
194
+ color=colors[index]
195
+ else
196
+ color=colors[dimension]
197
+ end
198
+ html += <<-HTML
199
+ #vertgraph-#{graph_id} dl dd.a#{index.to_s}#{dimension.to_s} { left: #{bar_left}px; background-color: #{color}; background-position: -#{background_offset}px bottom !important; }
200
+ #vertgraph-#{graph_id} dl dt.a#{index.to_s}#{dimension.to_s} { left: #{label_left}px; background-position: -#{background_offset}px bottom !important; }
201
+ HTML
202
+ end
203
+ end
204
+
205
+ html += <<-"HTML"
206
+ </style>
207
+ <div id="vertgraph-#{graph_id}">
208
+ <dl>
209
+ HTML
210
+ alldata.each_with_index do |data,dimension|
211
+ # data_max = data.inject(0) { |memo, array| array.last > memo ? array.last : memo }
212
+ data.each_with_index do |d, index|
213
+ scaled_value = scale_graph_value(d.last, data_max, height-50)
214
+ if (options[:display_value_on_bar])
215
+ bar_text=(scaled_value < floor_cutoff ? '' : d.last).to_s #text on top of the bar
216
+ else
217
+ bar_text=''
218
+ end
219
+
220
+ if dimension==0
221
+ html += <<-"HTML"
222
+ <!-- algo -->
223
+ <dt class="a#{index.to_s}#{dimension.to_s}" >#{d[0].to_s}</dt>
224
+ HTML
225
+ end
226
+ @url = url_creator.call(index,dimension) if !url_creator.nil?
227
+ html += <<-"HTML"
228
+ <a href="#{@url}">
229
+ <!-- Tooltip for bar group -->
230
+ <dd class="a#{index.to_s}#{dimension.to_s}" style="height: #{height-50}px;background: none;" title="#{d.last}"></dd>
231
+ <!-- Color bar -->
232
+ <dd class="a#{index.to_s}#{dimension.to_s}" style="height: #{scaled_value}px;" title="#{d.last}">#{bar_text}</dd>
233
+ </a>
234
+ HTML
235
+ end
236
+ end
237
+ html += <<-"HTML"
238
+ </dl>
239
+ </div>
240
+ HTML
241
+
242
+ html
243
+ end
244
+
245
+ # Make a horizontal graph that only shows percentages.
246
+ #
247
+ # The label will be set as the title of the bar element.
248
+ #
249
+ # horizontal_bar_graph [["Stout", 10], ["IPA", 80], ["Pale Ale", 50], ["Milkshake", 30]]
250
+ #
251
+ # NOTE: Updated to take an array instead of forcing you to use *array.
252
+ # NOTE: Does not normalize data yet...TODO
253
+
254
+ def horizontal_bar_graph(data)
255
+ html = <<-"HTML"
256
+ <style>
257
+ /* Basic Bar Graph */
258
+ .graph {
259
+ position: relative; /* IE is dumb */
260
+ width: 200px;
261
+ border: 1px solid #B1D632;
262
+ padding: 2px;
263
+ margin-bottom: .5em;
264
+ }
265
+ .graph .bar {
266
+ display: block;
267
+ position: relative;
268
+ background: #B1D632;
269
+ text-align: center;
270
+ color: #333;
271
+ height: 2em;
272
+ line-height: 2em;
273
+ }
274
+ .graph .bar span { position: absolute; left: 1em; } /* This extra markup is necessary because IE does not want to follow the rules for overflow: visible */
275
+ </style>
276
+ HTML
277
+
278
+ data.each do |d|
279
+ html += <<-"HTML"
280
+ <div class="graph">
281
+ <strong class="bar" style="width: #{d[1]}%;" title="#{d[0].to_s.humanize}"><span>#{d[1]}%</span> </strong>
282
+ </div>
283
+ HTML
284
+ end
285
+ return html
286
+ end
287
+
288
+ # Makes a multi-colored bar graph with a bar down the middle, representing the value.
289
+ #
290
+ # complex_bar_graph [["Stout", 10], ["IPA", 80], ["Pale Ale", 50], ["Milkshake", 30]]
291
+ #
292
+ # NOTE: Updated to take an array instead of forcing you to use *array.
293
+ # NOTE: Does not normalize data yet...TODO
294
+
295
+ def complex_bar_graph(data)
296
+ html = <<-"HTML"
297
+ <style>
298
+ /* Complex Bar Graph */
299
+ div#complex_bar_graph dl {
300
+ margin: 0;
301
+ padding: 0;
302
+ font-family: "Lucida Grande", Verdana, Arial;
303
+ }
304
+ div#complex_bar_graph dt {
305
+ position: relative; /* IE is dumb */
306
+ clear: both;
307
+ display: block;
308
+ float: left;
309
+ width: 104px;
310
+ height: 20px;
311
+ line-height: 20px;
312
+ margin-right: 17px;
313
+ font-size: .75em;
314
+ text-align: right;
315
+ }
316
+ div#complex_bar_graph dd {
317
+ position: relative; /* IE is dumb */
318
+ display: block;
319
+ float: left;
320
+ width: 197px;
321
+ height: 20px;
322
+ margin: 0 0 15px;
323
+ background: url("/images/css_graphs/g_colorbar.jpg");
324
+ }
325
+ * html div#complex_bar_graph dd { float: none; } /* IE is dumb; Quick IE hack, apply favorite filter methods for wider browser compatibility */
326
+
327
+ div#complex_bar_graph dd div {
328
+ position: relative;
329
+ background: url("/images/css_graphs/g_colorbar2.jpg");
330
+ height: 20px;
331
+ width: 75%;
332
+ text-align:right;
333
+ }
334
+ div#complex_bar_graph dd div strong {
335
+ position: absolute;
336
+ right: -5px;
337
+ top: -2px;
338
+ display: block;
339
+ background: url("/images/css_graphs/g_marker.gif");
340
+ height: 24px;
341
+ width: 9px;
342
+ text-align: left;
343
+ text-indent: -9999px;
344
+ overflow: hidden;
345
+ }
346
+ </style>
347
+ <div id="complex_bar_graph">
348
+ <dl>
349
+ HTML
350
+
351
+ data.each do |d|
352
+ html += <<-"HTML"
353
+ <dt class="#{d[0].to_s.downcase}">#{d[0].to_s.humanize}</dt>
354
+ <dd class="#{d[0].to_s.downcase}" title="#{d[1]}">
355
+ <div style="width: #{d[1]}%;"><strong>#{d[1]}%</strong></div>
356
+ </dd>
357
+ HTML
358
+ end
359
+
360
+ html += "</dl>\n</div>"
361
+ return html
362
+ end
363
+
364
+ ##
365
+ # Scale values within a +max+. The +max+ will usually be the height of the graph.
366
+
367
+ def scale_graph_value(data_value, data_max, max)
368
+ ((data_value.to_f / data_max.to_f) * max).round
369
+ end
370
+
371
+ end
@@ -0,0 +1,65 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'fileutils'
4
+ require 'active_support/core_ext/string/inflections'
5
+ require File.dirname(__FILE__) + "/../lib/css_graphs"
6
+
7
+ # Manually insert this so the helper runs apart from Rails.
8
+ class String
9
+ include ActiveSupport::CoreExtensions::String::Inflections
10
+ end
11
+
12
+ class TestCSSGraphs < Test::Unit::TestCase
13
+
14
+ include CssGraphs
15
+
16
+ def test_bar_graph
17
+ output = ""
18
+ data_for_graph = [['January',10],['February',25],['March',45]]
19
+
20
+ output += bar_graph(data_for_graph)
21
+ output += bar_graph(data_for_graph)
22
+ output += bar_graph(data_for_graph)
23
+
24
+ write(output)
25
+ end
26
+
27
+ def test_multi_bar_graph
28
+ output = ""
29
+ data_for_graph = [['January',10],['February',25],['March',45]], [['January',34],['February',29],['March',80]]
30
+
31
+ output += multi_bar_graph_for_size(data_for_graph, 640, 480)
32
+ output += multi_bar_graph_for_size(data_for_graph, 300, 100)
33
+ output += multi_bar_graph_for_size(data_for_graph, 200, 600)
34
+
35
+ write(output)
36
+ end
37
+
38
+ def test_horizontal_bar_graph
39
+ output = horizontal_bar_graph [["Stout", 10], ["IPA", 80], ["Pale Ale", 50], ["Milkshake", 30]]
40
+ write(output)
41
+ end
42
+
43
+ def test_complex_bar_graph
44
+ output = complex_bar_graph [["Stout", 10], ["IPA", 80], ["Pale Ale", 50], ["Milkshake", 30]]
45
+ write(output)
46
+ end
47
+
48
+ private
49
+
50
+ def write(data)
51
+ # Clean up calling method name and use as filename.
52
+ filename = caller.first.gsub(/\S+\s`/, '').gsub(/'/, '')
53
+ FileUtils.mkdir_p "test/output"
54
+ File.open(File.dirname(__FILE__) + "/output/#{filename}.html", "w") do |f|
55
+ f.write data
56
+ end
57
+ end
58
+
59
+ def multi_bar_graph_for_size(data, width=640, height=480)
60
+ multi_bar_graph(data, { :width => width, :height => height }) do |index, variable|
61
+ "/report/#{index}"
62
+ end
63
+ end
64
+
65
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.0
3
+ specification_version: 1
4
+ name: css_graphs
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2007-06-24 00:00:00 -07:00
8
+ summary: Generates a configurable, CSS-tagged HTML calendar.
9
+ require_paths:
10
+ - lib
11
+ email: boss AT topfunky.com
12
+ homepage: http://rubyforge.org/projects/seattlerb
13
+ rubyforge_project: seattlerb
14
+ description: A simple method to create an HTML calendar for a single month. Can be styled with CSS. Usable with Ruby on Rails.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Geoffrey Grosenbach
31
+ files:
32
+ - History.txt
33
+ - MIT-LICENSE
34
+ - Manifest.txt
35
+ - README.txt
36
+ - Rakefile
37
+ - about.yml
38
+ - generators/css_graphs/css_graphs_generator.rb
39
+ - generators/css_graphs/templates/.DS_Store
40
+ - generators/css_graphs/templates/colorbar.jpg
41
+ - generators/css_graphs/templates/g_colorbar.jpg
42
+ - generators/css_graphs/templates/g_colorbar2.jpg
43
+ - generators/css_graphs/templates/g_marker.gif
44
+ - images/.DS_Store
45
+ - images/colorbar.jpg
46
+ - init.rb
47
+ - lib/css_graphs.rb
48
+ - test/test_css_graphs.rb
49
+ test_files:
50
+ - test/test_css_graphs.rb
51
+ rdoc_options:
52
+ - --main
53
+ - README.txt
54
+ extra_rdoc_files:
55
+ - History.txt
56
+ - Manifest.txt
57
+ - README.txt
58
+ executables: []
59
+
60
+ extensions: []
61
+
62
+ requirements: []
63
+
64
+ dependencies:
65
+ - !ruby/object:Gem::Dependency
66
+ name: hoe
67
+ version_requirement:
68
+ version_requirements: !ruby/object:Gem::Version::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 1.2.1
73
+ version: