samhendley-scruffy 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.txt +115 -0
- data/LICENCE.txt +20 -0
- data/README.txt +66 -0
- data/lib/scruffy/components/background.rb +24 -0
- data/lib/scruffy/components/base.rb +57 -0
- data/lib/scruffy/components/data_markers.rb +26 -0
- data/lib/scruffy/components/graphs.rb +48 -0
- data/lib/scruffy/components/grid.rb +19 -0
- data/lib/scruffy/components/label.rb +17 -0
- data/lib/scruffy/components/legend.rb +105 -0
- data/lib/scruffy/components/style_info.rb +22 -0
- data/lib/scruffy/components/title.rb +19 -0
- data/lib/scruffy/components/value_markers.rb +32 -0
- data/lib/scruffy/components/viewport.rb +37 -0
- data/lib/scruffy/components.rb +21 -0
- data/lib/scruffy/formatters.rb +213 -0
- data/lib/scruffy/graph.rb +190 -0
- data/lib/scruffy/graph_state.rb +24 -0
- data/lib/scruffy/helpers/canvas.rb +41 -0
- data/lib/scruffy/helpers/layer_container.rb +95 -0
- data/lib/scruffy/helpers/meta.rb +5 -0
- data/lib/scruffy/helpers/point_container.rb +70 -0
- data/lib/scruffy/helpers.rb +12 -0
- data/lib/scruffy/layers/all_smiles.rb +137 -0
- data/lib/scruffy/layers/area.rb +46 -0
- data/lib/scruffy/layers/average.rb +67 -0
- data/lib/scruffy/layers/bar.rb +52 -0
- data/lib/scruffy/layers/base.rb +191 -0
- data/lib/scruffy/layers/line.rb +46 -0
- data/lib/scruffy/layers/pie.rb +123 -0
- data/lib/scruffy/layers/pie_slice.rb +119 -0
- data/lib/scruffy/layers/scatter.rb +21 -0
- data/lib/scruffy/layers/sparkline_bar.rb +39 -0
- data/lib/scruffy/layers/stacked.rb +87 -0
- data/lib/scruffy/layers.rb +24 -0
- data/lib/scruffy/rasterizers/batik_rasterizer.rb +39 -0
- data/lib/scruffy/rasterizers/rmagick_rasterizer.rb +27 -0
- data/lib/scruffy/rasterizers.rb +14 -0
- data/lib/scruffy/renderers/base.rb +95 -0
- data/lib/scruffy/renderers/cubed.rb +44 -0
- data/lib/scruffy/renderers/cubed3d.rb +53 -0
- data/lib/scruffy/renderers/empty.rb +22 -0
- data/lib/scruffy/renderers/pie.rb +20 -0
- data/lib/scruffy/renderers/reversed.rb +17 -0
- data/lib/scruffy/renderers/sparkline.rb +10 -0
- data/lib/scruffy/renderers/split.rb +48 -0
- data/lib/scruffy/renderers/standard.rb +36 -0
- data/lib/scruffy/renderers.rb +22 -0
- data/lib/scruffy/themes.rb +156 -0
- data/lib/scruffy/version.rb +9 -0
- data/lib/scruffy.rb +30 -0
- data/test/graph_creation_test.rb +101 -0
- data/test/test_helper.rb +2 -0
- metadata +135 -0
@@ -0,0 +1,48 @@
|
|
1
|
+
module Scruffy
|
2
|
+
module Renderers
|
3
|
+
# Renderer that splits the graphs up into four other little graphs.
|
4
|
+
class Split < Empty
|
5
|
+
def define_layout
|
6
|
+
super do |components|
|
7
|
+
components << Scruffy::Components::Title.new(:title, :position => [5, 2], :size => [90, 7])
|
8
|
+
components << Scruffy::Components::Label.new(:label_one, :text => self.options[:split_label] || '',
|
9
|
+
:position => [30, 54.5], :size => [40, 3])
|
10
|
+
|
11
|
+
# Viewports
|
12
|
+
components << Scruffy::Components::Viewport.new(:top, :position => [3, 20],
|
13
|
+
:size => [90, 30], &graph_block(:top))
|
14
|
+
components << Scruffy::Components::Viewport.new(:bottom, :position => [3, 65],
|
15
|
+
:size => [90, 30], &graph_block(:bottom))
|
16
|
+
|
17
|
+
components << Scruffy::Components::Legend.new(:legend, :position => [5, 11], :size => [90, 4])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
def labels
|
23
|
+
[component(:top).component(:labels), component(:bottom).component(:labels)]
|
24
|
+
end
|
25
|
+
|
26
|
+
def values
|
27
|
+
[component(:top).component(:values), component(:bottom).component(:values)]
|
28
|
+
end
|
29
|
+
|
30
|
+
def grids
|
31
|
+
[component(:top).component(:grid), component(:bottom).component(:grid)]
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
private
|
36
|
+
def graph_block(graph_filter)
|
37
|
+
block = Proc.new { |components|
|
38
|
+
components << Scruffy::Components::Grid.new(:grid, :position => [10, 0], :size => [90, 89])
|
39
|
+
components << Scruffy::Components::ValueMarkers.new(:values, :position => [0, 2], :size => [8, 89])
|
40
|
+
components << Scruffy::Components::DataMarkers.new(:labels, :position => [10, 92], :size => [90, 8])
|
41
|
+
components << Scruffy::Components::Graphs.new(:graphs, :position => [10, 0], :size => [90, 89], :only => graph_filter)
|
42
|
+
}
|
43
|
+
|
44
|
+
block
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Scruffy::Renderers
|
2
|
+
class Standard < Empty
|
3
|
+
|
4
|
+
def define_layout
|
5
|
+
super do |components|
|
6
|
+
components << Scruffy::Components::Title.new(:title, :position => [5, 2], :size => [90, 7])
|
7
|
+
components << Scruffy::Components::Viewport.new(:view, :position => [2, 26], :size => [89, 66]) do |graph|
|
8
|
+
graph << Scruffy::Components::ValueMarkers.new(:values, :position => [0, 2], :size => [18, 89])
|
9
|
+
graph << Scruffy::Components::Grid.new(:grid, :position => [20, 0], :size => [80, 89], :stroke_width => 1)
|
10
|
+
graph << Scruffy::Components::DataMarkers.new(:labels, :position => [20, 92], :size => [80, 8])
|
11
|
+
graph << Scruffy::Components::Graphs.new(:graphs, :position => [20, 0], :size => [80, 89])
|
12
|
+
end
|
13
|
+
components << Scruffy::Components::Legend.new(:legend, :position => [5, 13], :size => [90, 6])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
def hide_values
|
19
|
+
super
|
20
|
+
component(:view).position[0] = -10
|
21
|
+
component(:view).size[0] = 100
|
22
|
+
end
|
23
|
+
|
24
|
+
def labels
|
25
|
+
[component(:view).component(:labels)]
|
26
|
+
end
|
27
|
+
|
28
|
+
def values
|
29
|
+
[component(:view).component(:values)]
|
30
|
+
end
|
31
|
+
|
32
|
+
def grids
|
33
|
+
[component(:view).component(:grid)]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# ===Scruffy Renderers
|
2
|
+
#
|
3
|
+
# Author:: Brasten Sager
|
4
|
+
# Date:: August 14th, 2006
|
5
|
+
#
|
6
|
+
# Renderers piece the entire graph together from a collection
|
7
|
+
# of components. Creating new renderers allows you to create
|
8
|
+
# entirely new layouts for your graphs.
|
9
|
+
#
|
10
|
+
# Scruffy::Renderers::Base contains the basic functionality needed
|
11
|
+
# by a layout. The easiest way to create a new layout is by subclassing
|
12
|
+
# Base.
|
13
|
+
module Scruffy::Renderers; end
|
14
|
+
|
15
|
+
require 'scruffy/renderers/base'
|
16
|
+
require 'scruffy/renderers/empty'
|
17
|
+
require 'scruffy/renderers/standard'
|
18
|
+
require 'scruffy/renderers/reversed'
|
19
|
+
require 'scruffy/renderers/cubed'
|
20
|
+
require 'scruffy/renderers/split'
|
21
|
+
require 'scruffy/renderers/cubed3d'
|
22
|
+
require 'scruffy/renderers/pie'
|
@@ -0,0 +1,156 @@
|
|
1
|
+
# ===Scruffy Themes
|
2
|
+
#
|
3
|
+
# Author:: Brasten Sager & A.J. Ostman
|
4
|
+
# Date:: August 27th, 2006
|
5
|
+
#
|
6
|
+
# Scruffy Themes allow you to alter the colors and appearances of
|
7
|
+
# your graph.
|
8
|
+
module Scruffy::Themes
|
9
|
+
|
10
|
+
# ==Scruffy::Themes::Base
|
11
|
+
#
|
12
|
+
# Author:: Brasten Sager & A.J. Ostman
|
13
|
+
# Date:: August 27th, 2006
|
14
|
+
#
|
15
|
+
# The base theme class. Most themes can be constructed simply
|
16
|
+
# by instantiating a new Base object with a hash of color values.
|
17
|
+
#
|
18
|
+
# See Scruffy::Themes::Base#instantiate for examples.
|
19
|
+
class Base
|
20
|
+
attr_accessor :background # Background color or array of two colors
|
21
|
+
attr_accessor :colors # Array of colors for data graphs
|
22
|
+
attr_accessor :marker # Marker color for grid lines, values, etc.
|
23
|
+
attr_accessor :font_family # Font family: Not really supported. Maybe in the future.
|
24
|
+
|
25
|
+
# Returns a new Scruffy::Themes::Base object.
|
26
|
+
#
|
27
|
+
# Hash options:
|
28
|
+
# background:: background color.
|
29
|
+
# colors:: an array of color values to use for graphs.
|
30
|
+
# marker:: color used for grid lines, values, data points, etc.
|
31
|
+
# font_family:: in general, allows you to change the font used in the graph.
|
32
|
+
# This is not yet supported in most graph elements,
|
33
|
+
# and may be deprecated soon anyway.
|
34
|
+
def initialize(descriptor)
|
35
|
+
self.background = descriptor[:background]
|
36
|
+
self.colors = descriptor[:colors]
|
37
|
+
self.marker = descriptor[:marker]
|
38
|
+
self.font_family = descriptor[:font_family]
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns the next available color in the color array.
|
42
|
+
def next_color
|
43
|
+
@previous_color = 0 if @previous_color.nil?
|
44
|
+
@previous_color += 1
|
45
|
+
|
46
|
+
self.colors[(@previous_color-1) % self.colors.size]
|
47
|
+
end
|
48
|
+
|
49
|
+
# todo: Implement darken function.
|
50
|
+
def darken(color, shift=20); end
|
51
|
+
|
52
|
+
# todo: Implement lighten function.
|
53
|
+
def lighten(color, shift=20); end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
# A basic default theme
|
60
|
+
# Based on http://www.wellstyled.com/tools/colorscheme2/index-en.html?tetrad;50;0;255;1;-1;1;-0.6;0.1;1;0.6;1;1;-1;1;-0.6;0.1;1;0.6;1;1;-1;1;-0.6;0.1;1;0.6;1;1;-1;1;-0.6;0.1;1;0.6;1;0
|
61
|
+
class Standard < Base
|
62
|
+
def initialize
|
63
|
+
super({
|
64
|
+
:background => ['#FFFFFF', '#FFFFFF'],
|
65
|
+
:marker => '#999999',
|
66
|
+
:colors => %w(#1919B3 #FFB200 #FFFF00 #660099 #E9E9FF #FFF7E6 #FFFFE6 #F7E6FF #0F0F6B #996B00 #999900 #3D005C)
|
67
|
+
})
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Keynote theme, based on Apple's Keynote presentation software.
|
73
|
+
#
|
74
|
+
# Color values used from Gruff's default theme.
|
75
|
+
class Keynote < Base
|
76
|
+
def initialize
|
77
|
+
super({
|
78
|
+
:background => [:black, '#4A465A'],
|
79
|
+
:marker => :white,
|
80
|
+
:colors => %w(#6886B4 #FDD84E #72AE6E #D1695E #8A6EAF #EFAA43 white)
|
81
|
+
})
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# Roughly, roughly based on the color scheme of www.mephistoblog.com.
|
86
|
+
class Mephisto < Base
|
87
|
+
def initialize
|
88
|
+
super({
|
89
|
+
:background => ['#101010', '#999977'],
|
90
|
+
:marker => :white,
|
91
|
+
:colors => %w(#DD3300 #66AABB #225533 #992200)
|
92
|
+
})
|
93
|
+
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# Based on the color scheme used by almost every Ruby blogger.
|
98
|
+
class RubyBlog < Base
|
99
|
+
def initialize
|
100
|
+
super({
|
101
|
+
:background => ['#670A0A', '#831515'],
|
102
|
+
:marker => '#DBD1C1',
|
103
|
+
:colors => %w(#007777 #444477 #994444 #77FFBB #D75A20)
|
104
|
+
})
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
# Inspired by http://www.colorschemer.com/schemes/
|
109
|
+
class Apples < Base
|
110
|
+
def initialize
|
111
|
+
super({
|
112
|
+
:background => ['#3B411F', '#4A465A'],
|
113
|
+
:marker => '#DBD1C1',
|
114
|
+
:colors => %w(#AA3322 #DD3322 #DD6644 #FFEE88 #BBCC66 #779933)
|
115
|
+
})
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
# Inspired by http://www.colorschemer.com/schemes/
|
120
|
+
class CareBears < Base
|
121
|
+
def initialize
|
122
|
+
super({
|
123
|
+
# Playing with Sky Background
|
124
|
+
# :background => ['#2774B6', '#5EA6D8'],
|
125
|
+
# :marker => :white,
|
126
|
+
:background => [:black, '#4A465A'],
|
127
|
+
:marker => :white,
|
128
|
+
:colors => %w(#FFBBBB #00CC33 #7788BB #EEAA44 #FFDD11 #44BBDD #DD6677)
|
129
|
+
})
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
# Inspired by http://www.colorschemer.com/schemes/
|
135
|
+
class Vitamins < Base
|
136
|
+
def initialize
|
137
|
+
super({
|
138
|
+
:background => [:black, '#4A465A'],
|
139
|
+
:marker => :white,
|
140
|
+
:colors => %w(#CC9933 #FFCC66 #CCCC99 #CCCC33 #99CC33 #3333CC #336699 #6633CC #9999CC #333366)
|
141
|
+
})
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
# Inspired by http://www.colorschemer.com/schemes/
|
146
|
+
class Tulips < Base
|
147
|
+
def initialize
|
148
|
+
super({
|
149
|
+
:background => ['#670A0A', '#831515'],
|
150
|
+
:marker => '#DBD1C1',
|
151
|
+
:colors => %w(#F2C8CA #BF545E #D2808E #97985C #B3B878 #A24550)
|
152
|
+
})
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
end
|
data/lib/scruffy.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
|
4
|
+
# ===Scruffy Graphing Library for Ruby
|
5
|
+
#
|
6
|
+
# Author:: Brasten Sager
|
7
|
+
# Date:: August 5th, 2006
|
8
|
+
#
|
9
|
+
# For information on generating graphs using Scruffy, see the
|
10
|
+
# documentation in Scruffy::Graph.
|
11
|
+
#
|
12
|
+
# For information on creating your own graph types, see the
|
13
|
+
# documentation in Scruffy::Layers::Base.
|
14
|
+
module Scruffy
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'rubygems'
|
18
|
+
gem 'builder', '>= 2.0'
|
19
|
+
require 'builder'
|
20
|
+
|
21
|
+
require 'scruffy/helpers'
|
22
|
+
require 'scruffy/graph_state'
|
23
|
+
require 'scruffy/graph'
|
24
|
+
require 'scruffy/themes'
|
25
|
+
require 'scruffy/version'
|
26
|
+
require 'scruffy/formatters'
|
27
|
+
require 'scruffy/rasterizers'
|
28
|
+
require 'scruffy/layers'
|
29
|
+
require 'scruffy/components'
|
30
|
+
require 'scruffy/renderers'
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'scruffy'
|
3
|
+
|
4
|
+
class SimpleTheme < Scruffy::Themes::Base
|
5
|
+
def initialize
|
6
|
+
super({
|
7
|
+
:background => [:white, :white],
|
8
|
+
:marker => :black,
|
9
|
+
:colors => %w(blue green red orange yellow purple pink),
|
10
|
+
:stroke_color => 'white'
|
11
|
+
})
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class GraphCreationTest < Test::Unit::TestCase
|
16
|
+
BASE_DIR = File.dirname(__FILE__)
|
17
|
+
WEBSITE_DIR = BASE_DIR + "/../website/images/graphs"
|
18
|
+
|
19
|
+
def test_create_pie
|
20
|
+
graph = Scruffy::Graph.new
|
21
|
+
graph.title = "Favourite Snacks"
|
22
|
+
graph.renderer = Scruffy::Renderers::Pie.new
|
23
|
+
|
24
|
+
graph.add :pie, '', {
|
25
|
+
'Apple' => 20,
|
26
|
+
'Banana' => 100,
|
27
|
+
'Orange' => 70,
|
28
|
+
'Taco' => 30
|
29
|
+
}
|
30
|
+
|
31
|
+
graph.render :to => "#{WEBSITE_DIR}/pie_test.svg"
|
32
|
+
graph.render :width => 400, :to => "#{WEBSITE_DIR}/pie_test.png", :as => 'png'
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_create_line
|
36
|
+
graph = Scruffy::Graph.new
|
37
|
+
graph.title = "Sample Line Graph"
|
38
|
+
graph.renderer = Scruffy::Renderers::Standard.new
|
39
|
+
|
40
|
+
graph.add :line, 'Example', [20, 100, 70, 30, 106]
|
41
|
+
|
42
|
+
graph.render :to => "#{WEBSITE_DIR}/line_test.svg"
|
43
|
+
graph.render :width => 400, :to => "#{WEBSITE_DIR}/line_test.png", :as => 'png'
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def test_create_bar
|
48
|
+
graph = Scruffy::Graph.new
|
49
|
+
graph.title = "Sample Bar Graph"
|
50
|
+
graph.renderer = Scruffy::Renderers::Standard.new
|
51
|
+
graph.add :bar, 'Example', [20, 100, 70, 30, 106]
|
52
|
+
graph.render :to => "#{WEBSITE_DIR}/bar_test.svg"
|
53
|
+
graph.render :width => 400, :to => "#{WEBSITE_DIR}/bar_test.png", :as => 'png'
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_split
|
57
|
+
graph = Scruffy::Graph.new
|
58
|
+
graph.title = "Long-term Comparisons"
|
59
|
+
graph.value_formatter = Scruffy::Formatters::Currency.new(:special_negatives => true, :negative_color => '#ff7777')
|
60
|
+
graph.renderer = Scruffy::Renderers::Split.new(:split_label => 'Northeastern (Top) / Central (Bottom)')
|
61
|
+
|
62
|
+
graph.add :area, 'Jeff', [20, -5, 100, 70, 30, 106, 203, 100, 50, 203, 289, 20], :category => :top
|
63
|
+
graph.add :area, 'Jerry', [-10, 70, 20, 102, 201, 26, 30, 106, 203, 100, 50, 39], :category => :top
|
64
|
+
graph.add :bar, 'Jack', [30, 0, 49, 29, 100, 203, 70, 20, 102, 201, 26, 130], :category => :bottom
|
65
|
+
graph.add :line, 'Brasten', [42, 10, 75, 150, 130, 70, -10, -20, 50, 92, -21, 19], :categories => [:top, :bottom]
|
66
|
+
graph.add :line, 'Jim', [-10, -20, 50, 92, -21, 56, 92, 84, 82, 100, 39, 120], :categories => [:top, :bottom]
|
67
|
+
graph.point_markers = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
68
|
+
|
69
|
+
graph.render :to => "#{WEBSITE_DIR}/split_test.svg"
|
70
|
+
graph.render :width => 500, :to => "#{WEBSITE_DIR}/split_test.png", :as => 'png'
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_stacking
|
74
|
+
graph = Scruffy::Graph.new
|
75
|
+
graph.title = "Comparative Agent Performance"
|
76
|
+
graph.value_formatter = Scruffy::Formatters::Percentage.new(:precision => 0)
|
77
|
+
graph.add :stacked do |stacked|
|
78
|
+
stacked.add :bar, 'Jack', [30, 60, 49, 29, 100, 120]
|
79
|
+
stacked.add :bar, 'Jill', [120, 240, 0, 100, 140, 20]
|
80
|
+
stacked.add :bar, 'Hill', [10, 10, 90, 20, 40, 10]
|
81
|
+
end
|
82
|
+
graph.point_markers = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
|
83
|
+
graph.render :to => "#{WEBSITE_DIR}/stacking_test.svg"
|
84
|
+
graph.render :width => 500, :to => "#{WEBSITE_DIR}/stacking_test.png", :as => 'png'
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_multi_layered
|
88
|
+
graph = Scruffy::Graph.new
|
89
|
+
graph.title = "Some Kind of Information"
|
90
|
+
graph.renderer = Scruffy::Renderers::Cubed.new
|
91
|
+
|
92
|
+
graph.add :area, 'Jeff', [20, -5, 100, 70, 30, 106], :categories => [:top_left, :bottom_right]
|
93
|
+
graph.add :area, 'Jerry', [-10, 70, 20, 102, 201, 26], :categories => [:bottom_left, :buttom_right]
|
94
|
+
graph.add :bar, 'Jack', [30, 0, 49, 29, 100, 203], :categories => [:bottom_left, :top_right]
|
95
|
+
graph.add :line, 'Brasten', [42, 10, 75, 150, 130, 70], :categories => [:top_right, :bottom_left]
|
96
|
+
graph.add :line, 'Jim', [-10, -20, 50, 92, -21, 56], :categories => [:top_left, :bottom_right]
|
97
|
+
graph.point_markers = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
|
98
|
+
graph.render :to => "#{WEBSITE_DIR}/multi_test.svg"
|
99
|
+
graph.render :width => 500, :to => "#{WEBSITE_DIR}/multi_test.png", :as => 'png'
|
100
|
+
end
|
101
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: samhendley-scruffy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.7
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brasten Sager
|
8
|
+
- samhendley
|
9
|
+
- delano
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
|
14
|
+
date: 2008-12-28 21:00:00 -08:00
|
15
|
+
default_executable:
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: builder
|
19
|
+
type: :runtime
|
20
|
+
version_requirement:
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 2.0.0
|
26
|
+
version:
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: hoe
|
29
|
+
type: :runtime
|
30
|
+
version_requirement:
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 1.7.0
|
36
|
+
version:
|
37
|
+
description: Scruffy is a Ruby library for generating high quality, good looking graphs. It is designed to be easy to use and highly customizable.
|
38
|
+
email:
|
39
|
+
- brasten@nagilum.com
|
40
|
+
- david.parry@suranyami.com
|
41
|
+
executables: []
|
42
|
+
|
43
|
+
extensions: []
|
44
|
+
|
45
|
+
extra_rdoc_files: []
|
46
|
+
|
47
|
+
files:
|
48
|
+
- lib/scruffy/rasterizers/rmagick_rasterizer.rb
|
49
|
+
- lib/scruffy/rasterizers/batik_rasterizer.rb
|
50
|
+
- lib/scruffy/version.rb
|
51
|
+
- lib/scruffy/layers/base.rb
|
52
|
+
- lib/scruffy/layers/area.rb
|
53
|
+
- lib/scruffy/layers/stacked.rb
|
54
|
+
- lib/scruffy/layers/pie_slice.rb
|
55
|
+
- lib/scruffy/layers/scatter.rb
|
56
|
+
- lib/scruffy/layers/bar.rb
|
57
|
+
- lib/scruffy/layers/sparkline_bar.rb
|
58
|
+
- lib/scruffy/layers/pie.rb
|
59
|
+
- lib/scruffy/layers/all_smiles.rb
|
60
|
+
- lib/scruffy/layers/average.rb
|
61
|
+
- lib/scruffy/layers/line.rb
|
62
|
+
- lib/scruffy/rasterizers.rb
|
63
|
+
- lib/scruffy/renderers.rb
|
64
|
+
- lib/scruffy/themes.rb
|
65
|
+
- lib/scruffy/helpers/canvas.rb
|
66
|
+
- lib/scruffy/helpers/point_container.rb
|
67
|
+
- lib/scruffy/helpers/layer_container.rb
|
68
|
+
- lib/scruffy/helpers/meta.rb
|
69
|
+
- lib/scruffy/components.rb
|
70
|
+
- lib/scruffy/graph_state.rb
|
71
|
+
- lib/scruffy/components/style_info.rb
|
72
|
+
- lib/scruffy/components/value_markers.rb
|
73
|
+
- lib/scruffy/components/viewport.rb
|
74
|
+
- lib/scruffy/components/base.rb
|
75
|
+
- lib/scruffy/components/graphs.rb
|
76
|
+
- lib/scruffy/components/background.rb
|
77
|
+
- lib/scruffy/components/legend.rb
|
78
|
+
- lib/scruffy/components/data_markers.rb
|
79
|
+
- lib/scruffy/components/label.rb
|
80
|
+
- lib/scruffy/components/grid.rb
|
81
|
+
- lib/scruffy/components/title.rb
|
82
|
+
- lib/scruffy/graph.rb
|
83
|
+
- lib/scruffy/renderers/sparkline.rb
|
84
|
+
- lib/scruffy/renderers/base.rb
|
85
|
+
- lib/scruffy/renderers/reversed.rb
|
86
|
+
- lib/scruffy/renderers/split.rb
|
87
|
+
- lib/scruffy/renderers/cubed3d.rb
|
88
|
+
- lib/scruffy/renderers/standard.rb
|
89
|
+
- lib/scruffy/renderers/pie.rb
|
90
|
+
- lib/scruffy/renderers/empty.rb
|
91
|
+
- lib/scruffy/renderers/cubed.rb
|
92
|
+
- lib/scruffy/formatters.rb
|
93
|
+
- lib/scruffy/helpers.rb
|
94
|
+
- lib/scruffy/layers.rb
|
95
|
+
- lib/scruffy.rb
|
96
|
+
- LICENCE.txt
|
97
|
+
- README.txt
|
98
|
+
- CHANGES.txt
|
99
|
+
has_rdoc: true
|
100
|
+
homepage: http://scruffy.rubyforge.org
|
101
|
+
post_install_message:
|
102
|
+
rdoc_options:
|
103
|
+
- --quiet
|
104
|
+
- --title
|
105
|
+
- scruffy documentation
|
106
|
+
- --opname
|
107
|
+
- index.html
|
108
|
+
- --line-numbers
|
109
|
+
- --main
|
110
|
+
- README.txt
|
111
|
+
- --inline-source
|
112
|
+
require_paths:
|
113
|
+
- lib
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: "0"
|
119
|
+
version:
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: "0"
|
125
|
+
version:
|
126
|
+
requirements: []
|
127
|
+
|
128
|
+
rubyforge_project:
|
129
|
+
rubygems_version: 1.2.0
|
130
|
+
signing_key:
|
131
|
+
specification_version: 2
|
132
|
+
summary: A powerful, clean graphing library for Ruby.
|
133
|
+
test_files:
|
134
|
+
- test/graph_creation_test.rb
|
135
|
+
- test/test_helper.rb
|