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.
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