little_graphs 1.0.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/.gitignore +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +27 -0
- data/README.mkd +10 -0
- data/Rakefile +2 -0
- data/example.jpeg +0 -0
- data/lib/little_graphs.rb +44 -0
- data/little_graphs.gemspec +12 -0
- data/spec/litte_graphs_spec.rb +49 -0
- data/spec/spec_helper.rb +7 -0
- metadata +72 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.gem
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
little_graphs (0.0.0)
|
5
|
+
quick_magick
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
diff-lcs (1.1.3)
|
11
|
+
quick_magick (0.8.0)
|
12
|
+
rspec (2.11.0)
|
13
|
+
rspec-core (~> 2.11.0)
|
14
|
+
rspec-expectations (~> 2.11.0)
|
15
|
+
rspec-mocks (~> 2.11.0)
|
16
|
+
rspec-core (2.11.1)
|
17
|
+
rspec-expectations (2.11.3)
|
18
|
+
diff-lcs (~> 1.1.3)
|
19
|
+
rspec-mocks (2.11.3)
|
20
|
+
|
21
|
+
PLATFORMS
|
22
|
+
ruby
|
23
|
+
|
24
|
+
DEPENDENCIES
|
25
|
+
little_graphs!
|
26
|
+
quick_magick
|
27
|
+
rspec
|
data/README.mkd
ADDED
data/Rakefile
ADDED
data/example.jpeg
ADDED
Binary file
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'quick_magick'
|
2
|
+
|
3
|
+
class LittleGraphs
|
4
|
+
attr_accessor :width, :height
|
5
|
+
|
6
|
+
def initialize(width = 100, height = 35)
|
7
|
+
@width = width
|
8
|
+
@height = height
|
9
|
+
end
|
10
|
+
|
11
|
+
def draw(datapoints, filename = nil)
|
12
|
+
if filename.nil? then filename = "new.jpeg" end
|
13
|
+
coordinates = define_coordinates(datapoints)
|
14
|
+
|
15
|
+
f = QuickMagick::Image::solid(@width, @height, :white)
|
16
|
+
f.draw_polyline(coordinates, :fill => :white, :stroke => :blue)
|
17
|
+
|
18
|
+
f.save(filename)
|
19
|
+
end
|
20
|
+
|
21
|
+
def define_coordinates(datapoints)
|
22
|
+
margin = 5
|
23
|
+
point_space = @width/datapoints.length
|
24
|
+
translated_datapoints = translate_datapoints(datapoints)
|
25
|
+
coordinates = []
|
26
|
+
|
27
|
+
translated_datapoints.each_with_index do |datapoint, i|
|
28
|
+
coordinates.push [i*point_space+margin, datapoint]
|
29
|
+
end
|
30
|
+
coordinates.flatten
|
31
|
+
end
|
32
|
+
|
33
|
+
def translate_domain(datapoints)
|
34
|
+
point_space = @width/datapoints.length
|
35
|
+
end
|
36
|
+
|
37
|
+
def translate_datapoints(datapoints)
|
38
|
+
height = @height - 5 # add a margin
|
39
|
+
point_space = height/(datapoints.max - datapoints.min)
|
40
|
+
|
41
|
+
datapoints.map { |datapoint| @height - datapoint * point_space }
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'little_graphs'
|
3
|
+
s.version = '1.0.0'
|
4
|
+
s.date = '2012-10-15'
|
5
|
+
s.summary = 'Sparklines'
|
6
|
+
s.authors = ['J. Cheng']
|
7
|
+
s.email = 'jcheng@absolute-performance.com'
|
8
|
+
s.files = [`git ls-files`.split($\)]
|
9
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
10
|
+
|
11
|
+
s.add_dependency "quick_magick"
|
12
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LittleGraphs do
|
4
|
+
describe '#initialize' do
|
5
|
+
context 'with width and height' do
|
6
|
+
it 'sets width and height' do
|
7
|
+
lg = LittleGraphs.new(100, 200)
|
8
|
+
lg.width.should == 100
|
9
|
+
lg.height.should == 200
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'without width and height' do
|
14
|
+
it 'sets width and height to default' do
|
15
|
+
lg = LittleGraphs.new
|
16
|
+
lg.width.should == 100
|
17
|
+
lg.height.should == 35
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#draw' do
|
23
|
+
context 'with datapoints' do
|
24
|
+
it 'draws a graph' do
|
25
|
+
lg = LittleGraphs.new
|
26
|
+
lg.draw([12, 3, 0, 9, 10, 8, 2, 4, 1], "example.jpeg")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#define_coordinates' do
|
32
|
+
context 'datapoints' do
|
33
|
+
it 'finds x,y coordinates for 1D array' do
|
34
|
+
lg = LittleGraphs.new
|
35
|
+
coords = lg.define_coordinates([1, 2, 3, 4, 5])
|
36
|
+
#coords.should == [1,0, 10, 2, 20, 3, 30, 4, 40, 5]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#translate_datapoints' do
|
42
|
+
context 'datapoints' do
|
43
|
+
lg = LittleGraphs.new
|
44
|
+
datapoints = [1, 2, 3, 4, 5]
|
45
|
+
translated_datapoints = lg.translate_datapoints(datapoints)
|
46
|
+
translated_datapoints.should == [28, 21, 14, 7, 0]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: little_graphs
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- J. Cheng
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-10-15 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: quick_magick
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
description:
|
31
|
+
email: jcheng@absolute-performance.com
|
32
|
+
executables: []
|
33
|
+
extensions: []
|
34
|
+
extra_rdoc_files: []
|
35
|
+
files:
|
36
|
+
- .gitignore
|
37
|
+
- Gemfile
|
38
|
+
- Gemfile.lock
|
39
|
+
- README.mkd
|
40
|
+
- Rakefile
|
41
|
+
- example.jpeg
|
42
|
+
- lib/little_graphs.rb
|
43
|
+
- little_graphs.gemspec
|
44
|
+
- spec/litte_graphs_spec.rb
|
45
|
+
- spec/spec_helper.rb
|
46
|
+
homepage:
|
47
|
+
licenses: []
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
requirements: []
|
65
|
+
rubyforge_project:
|
66
|
+
rubygems_version: 1.8.23
|
67
|
+
signing_key:
|
68
|
+
specification_version: 3
|
69
|
+
summary: Sparklines
|
70
|
+
test_files:
|
71
|
+
- spec/litte_graphs_spec.rb
|
72
|
+
- spec/spec_helper.rb
|