scruffy 0.1.0 → 0.2.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.
- data/CHANGES +37 -2
- data/lib/scruffy.rb +4 -6
- data/lib/scruffy/components.rb +11 -0
- data/lib/scruffy/components/background.rb +24 -0
- data/lib/scruffy/components/base.rb +46 -0
- data/lib/scruffy/components/data_markers.rb +25 -0
- data/lib/scruffy/components/graphs.rb +48 -0
- data/lib/scruffy/components/grid.rb +14 -0
- data/lib/scruffy/components/label.rb +12 -0
- data/lib/scruffy/components/legend.rb +64 -0
- data/lib/scruffy/components/style_info.rb +17 -0
- data/lib/scruffy/components/title.rb +12 -0
- data/lib/scruffy/components/value_markers.rb +31 -0
- data/lib/scruffy/components/viewport.rb +30 -0
- data/lib/scruffy/formatters.rb +111 -0
- data/lib/scruffy/graph.rb +38 -68
- data/lib/scruffy/helpers.rb +2 -0
- data/lib/scruffy/helpers/canvas.rb +22 -0
- data/lib/scruffy/helpers/layer_container.rb +69 -0
- data/lib/scruffy/layers.rb +1 -0
- data/lib/scruffy/layers/all_smiles.rb +4 -0
- data/lib/scruffy/layers/area.rb +3 -2
- data/lib/scruffy/layers/average.rb +3 -12
- data/lib/scruffy/layers/bar.rb +1 -1
- data/lib/scruffy/layers/base.rb +35 -20
- data/lib/scruffy/layers/line.rb +2 -2
- data/lib/scruffy/layers/stacked.rb +75 -0
- data/lib/scruffy/rasterizers.rb +2 -1
- data/lib/scruffy/rasterizers/batik_rasterizer.rb +25 -0
- data/lib/scruffy/rasterizers/rmagick_rasterizer.rb +6 -1
- data/lib/scruffy/renderers.rb +5 -0
- data/lib/scruffy/renderers/base.rb +37 -0
- data/lib/scruffy/renderers/cubed.rb +36 -0
- data/lib/scruffy/renderers/reversed.rb +18 -0
- data/lib/scruffy/renderers/split.rb +34 -0
- data/lib/scruffy/renderers/standard.rb +14 -152
- data/lib/scruffy/themes.rb +63 -19
- data/lib/scruffy/version.rb +1 -1
- data/spec/graph_spec.rb +33 -1
- data/spec/layers/line_spec.rb +9 -0
- metadata +26 -4
- data/lib/scruffy/resolver.rb +0 -14
- data/lib/scruffy/transformer.rb +0 -73
data/lib/scruffy/version.rb
CHANGED
data/spec/graph_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'lib/scruffy'
|
2
|
+
require 'fileutils'
|
2
3
|
|
3
4
|
module CustomRenderers
|
4
5
|
def blank_renderer
|
@@ -127,4 +128,35 @@ context "A Scruffy::Graph's initialization block" do
|
|
127
128
|
@graph.marker_transformer.should_equal options[:marker_transformer]
|
128
129
|
@graph.point_markers.should_equal options[:point_markers]
|
129
130
|
end
|
130
|
-
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context "A fully populated Graph" do
|
134
|
+
setup do
|
135
|
+
FileUtils.rm_f File.dirname(__FILE__) + '/*.png'
|
136
|
+
FileUtils.rm_f File.dirname(__FILE__) + '/*.jpg'
|
137
|
+
|
138
|
+
@graph = Scruffy::Graph.new :title => 'Test Graph'
|
139
|
+
@graph << Scruffy::Layers::AllSmiles.new(:title => 'Smiles', :points => [100, 200, 300])
|
140
|
+
@graph << Scruffy::Layers::Area.new(:title => 'Area', :points => [100, 200, 300])
|
141
|
+
@graph << Scruffy::Layers::Bar.new(:title => 'Bar', :points => [100, 200, 300])
|
142
|
+
@graph << Scruffy::Layers::Line.new(:title => 'Line', :points => [100, 200, 300])
|
143
|
+
@graph << Scruffy::Layers::Average.new(:title => 'Average', :points => @graph.layers)
|
144
|
+
end
|
145
|
+
|
146
|
+
specify "should render to SVG" do
|
147
|
+
@graph.render(:width => 800).should_be_instance_of?(String)
|
148
|
+
end
|
149
|
+
|
150
|
+
specify "should rasterize to PNG" do
|
151
|
+
lambda {
|
152
|
+
@graph.render(:width => 800, :as => 'PNG', :to => File.dirname(__FILE__) + '/test_graph.png')
|
153
|
+
}.should_not_raise
|
154
|
+
end
|
155
|
+
|
156
|
+
specify "should rasterize to JPG" do
|
157
|
+
lambda {
|
158
|
+
@graph.render(:width => 800, :as => 'JPG', :to => File.dirname(__FILE__) + '/test_graph.jpg')
|
159
|
+
}.should_not_raise
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: scruffy
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2006-08-
|
6
|
+
version: 0.2.0
|
7
|
+
date: 2006-08-14 00:00:00 -07:00
|
8
8
|
summary: A powerful, clean graphing library for Ruby.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -34,22 +34,44 @@ files:
|
|
34
34
|
- Rakefile
|
35
35
|
- README
|
36
36
|
- lib/scruffy.rb
|
37
|
+
- lib/scruffy/components.rb
|
38
|
+
- lib/scruffy/formatters.rb
|
37
39
|
- lib/scruffy/graph.rb
|
40
|
+
- lib/scruffy/helpers.rb
|
38
41
|
- lib/scruffy/layers.rb
|
39
42
|
- lib/scruffy/rasterizers.rb
|
40
|
-
- lib/scruffy/
|
43
|
+
- lib/scruffy/renderers.rb
|
41
44
|
- lib/scruffy/themes.rb
|
42
|
-
- lib/scruffy/transformer.rb
|
43
45
|
- lib/scruffy/version.rb
|
46
|
+
- lib/scruffy/components/background.rb
|
47
|
+
- lib/scruffy/components/base.rb
|
48
|
+
- lib/scruffy/components/data_markers.rb
|
49
|
+
- lib/scruffy/components/graphs.rb
|
50
|
+
- lib/scruffy/components/grid.rb
|
51
|
+
- lib/scruffy/components/label.rb
|
52
|
+
- lib/scruffy/components/legend.rb
|
53
|
+
- lib/scruffy/components/style_info.rb
|
54
|
+
- lib/scruffy/components/title.rb
|
55
|
+
- lib/scruffy/components/value_markers.rb
|
56
|
+
- lib/scruffy/components/viewport.rb
|
57
|
+
- lib/scruffy/helpers/canvas.rb
|
58
|
+
- lib/scruffy/helpers/layer_container.rb
|
44
59
|
- lib/scruffy/layers/all_smiles.rb
|
45
60
|
- lib/scruffy/layers/area.rb
|
46
61
|
- lib/scruffy/layers/average.rb
|
47
62
|
- lib/scruffy/layers/bar.rb
|
48
63
|
- lib/scruffy/layers/base.rb
|
49
64
|
- lib/scruffy/layers/line.rb
|
65
|
+
- lib/scruffy/layers/stacked.rb
|
66
|
+
- lib/scruffy/rasterizers/batik_rasterizer.rb
|
50
67
|
- lib/scruffy/rasterizers/rmagick_rasterizer.rb
|
68
|
+
- lib/scruffy/renderers/base.rb
|
69
|
+
- lib/scruffy/renderers/cubed.rb
|
70
|
+
- lib/scruffy/renderers/reversed.rb
|
71
|
+
- lib/scruffy/renderers/split.rb
|
51
72
|
- lib/scruffy/renderers/standard.rb
|
52
73
|
- spec/graph_spec.rb
|
74
|
+
- spec/layers/line_spec.rb
|
53
75
|
test_files: []
|
54
76
|
|
55
77
|
rdoc_options: []
|
data/lib/scruffy/resolver.rb
DELETED
data/lib/scruffy/transformer.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
module Scruffy
|
2
|
-
module Transformer
|
3
|
-
class Base
|
4
|
-
def route_transform(target, idx, options = {})
|
5
|
-
args = [target, idx, options]
|
6
|
-
if respond_to?(:transform)
|
7
|
-
send :transform, *args[0...self.method(:transform).arity]
|
8
|
-
elsif respond_to?(:transform!)
|
9
|
-
send :transform!, *args[0...self.method(:transform).arity]
|
10
|
-
target
|
11
|
-
else
|
12
|
-
raise NameError, "Transformer subclass must container either a transform() method or transform!() method."
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
protected
|
17
|
-
def number_with_precision(number, precision=3)
|
18
|
-
sprintf("%01.#{precision}f", number)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
class Currency < Base
|
23
|
-
def initialize(options = {})
|
24
|
-
@precision = options[:precision] || 2
|
25
|
-
@unit = options[:unit] || '$'
|
26
|
-
@separator = options[:separator] || '.'
|
27
|
-
@delimiter = options[:delimiter] || ','
|
28
|
-
@negative_color = options[:negative_color]
|
29
|
-
@special_negatives = options[:special_negatives] || false
|
30
|
-
end
|
31
|
-
|
32
|
-
def transform(target, idx, options)
|
33
|
-
@separator = "" unless @precision > 0
|
34
|
-
begin
|
35
|
-
parts = number_with_precision(target, @precision).split('.')
|
36
|
-
if @special_negatives && (target.to_f < 0)
|
37
|
-
number = "(" + @unit + parts[0].to_i.abs.to_s.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{@delimiter}") + @separator + parts[1].to_s + ")"
|
38
|
-
else
|
39
|
-
number = @unit + parts[0].to_s.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{@delimiter}") + @separator + parts[1].to_s
|
40
|
-
end
|
41
|
-
if (target.to_f < 0) && @negative_color
|
42
|
-
options[:marker_color_override] = @negative_color
|
43
|
-
end
|
44
|
-
number
|
45
|
-
rescue
|
46
|
-
target
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class Percentage < Base
|
52
|
-
def initialize(options = {})
|
53
|
-
@precision = options[:precision] || 3
|
54
|
-
@separator = options[:separator] || '.'
|
55
|
-
end
|
56
|
-
|
57
|
-
def transform(target)
|
58
|
-
begin
|
59
|
-
number = number_with_precision(target, @precision)
|
60
|
-
parts = number.split('.')
|
61
|
-
if parts.at(1).nil?
|
62
|
-
parts[0] + "%"
|
63
|
-
else
|
64
|
-
parts[0] + @separator + parts[1].to_s + "%"
|
65
|
-
end
|
66
|
-
rescue
|
67
|
-
target
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
73
|
-
end
|