scruffy 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/CHANGES +37 -2
  2. data/lib/scruffy.rb +4 -6
  3. data/lib/scruffy/components.rb +11 -0
  4. data/lib/scruffy/components/background.rb +24 -0
  5. data/lib/scruffy/components/base.rb +46 -0
  6. data/lib/scruffy/components/data_markers.rb +25 -0
  7. data/lib/scruffy/components/graphs.rb +48 -0
  8. data/lib/scruffy/components/grid.rb +14 -0
  9. data/lib/scruffy/components/label.rb +12 -0
  10. data/lib/scruffy/components/legend.rb +64 -0
  11. data/lib/scruffy/components/style_info.rb +17 -0
  12. data/lib/scruffy/components/title.rb +12 -0
  13. data/lib/scruffy/components/value_markers.rb +31 -0
  14. data/lib/scruffy/components/viewport.rb +30 -0
  15. data/lib/scruffy/formatters.rb +111 -0
  16. data/lib/scruffy/graph.rb +38 -68
  17. data/lib/scruffy/helpers.rb +2 -0
  18. data/lib/scruffy/helpers/canvas.rb +22 -0
  19. data/lib/scruffy/helpers/layer_container.rb +69 -0
  20. data/lib/scruffy/layers.rb +1 -0
  21. data/lib/scruffy/layers/all_smiles.rb +4 -0
  22. data/lib/scruffy/layers/area.rb +3 -2
  23. data/lib/scruffy/layers/average.rb +3 -12
  24. data/lib/scruffy/layers/bar.rb +1 -1
  25. data/lib/scruffy/layers/base.rb +35 -20
  26. data/lib/scruffy/layers/line.rb +2 -2
  27. data/lib/scruffy/layers/stacked.rb +75 -0
  28. data/lib/scruffy/rasterizers.rb +2 -1
  29. data/lib/scruffy/rasterizers/batik_rasterizer.rb +25 -0
  30. data/lib/scruffy/rasterizers/rmagick_rasterizer.rb +6 -1
  31. data/lib/scruffy/renderers.rb +5 -0
  32. data/lib/scruffy/renderers/base.rb +37 -0
  33. data/lib/scruffy/renderers/cubed.rb +36 -0
  34. data/lib/scruffy/renderers/reversed.rb +18 -0
  35. data/lib/scruffy/renderers/split.rb +34 -0
  36. data/lib/scruffy/renderers/standard.rb +14 -152
  37. data/lib/scruffy/themes.rb +63 -19
  38. data/lib/scruffy/version.rb +1 -1
  39. data/spec/graph_spec.rb +33 -1
  40. data/spec/layers/line_spec.rb +9 -0
  41. metadata +26 -4
  42. data/lib/scruffy/resolver.rb +0 -14
  43. data/lib/scruffy/transformer.rb +0 -73
@@ -1,3 +1,3 @@
1
1
  module Scruffy
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
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
+
@@ -0,0 +1,9 @@
1
+ context "A Line layer" do
2
+ setup do
3
+ @layer = Scruffy::Layers::Line.new(:title => 'My Line Layer', :points => [100, 200, 300])
4
+
5
+ svg = mock('svg')
6
+ svg.should_receive(:polyline).once
7
+ svg.should_receive(:circle).exactly(3).times
8
+ end
9
+ end
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.1.0
7
- date: 2006-08-10 00:00:00 -07:00
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/resolver.rb
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: []
@@ -1,14 +0,0 @@
1
- module Scruffy
2
- class Resolver
3
- BASE_SIZE = 400
4
- attr_accessor :actual_size
5
-
6
- def initialize(actual_size)
7
- @actual_size = actual_size
8
- end
9
-
10
- def to_point(size)
11
- actual_size * (size / BASE_SIZE.to_f)
12
- end
13
- end
14
- end
@@ -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