This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
Adding Graphical Context with Sparklines | ||
---|---|---|
Code | Expected | Actual |
require 'rubygems' require 'sparklines' require 'base64' def embedded_sparkline %{<img src="data:image/png;base64,#{Base64.encode64(yield)}">} end |
This method scales data so that the smallest item becomes 0 and the largest becomes 100. |
|
def scale(data) min, max = data.min, data.max data.collect { |x| (x - min) / (max - min) * 100} end |
Randomly generate closing prices for the past month. |
|
prices = [rand(10)] 30.times { prices << prices.last + (rand - 0.5) } |
Generate HTML containing a stock graph as an embedded sparkline. |
|
sparkline = embedded_sparkline { Sparklines.plot(scale(prices)) } open('stock.html', 'w') do |f| f << "Is EvilCorp (NASDAQ:EVIL #{sparkline}) poised for a comeback?" end agree_percentages = [ 55, 71, 44, 55, 81, 68 ] speech = %{This country faces a crisis and a crossroads. %s Our taxes are too high %s and our poodles are too well-groomed. %s Our children learn less in school %s and listen to louder music at home. %s The Internet scares me. %s} open('speech.html', 'w') do |f| sparklines = agree_percentages.collect do |p| embedded_sparkline do Sparklines.plot([p], :type => 'pie', :remain_color => 'pink', :share_color=>'blue', :background_color=>'transparent') end end f << speech % sparklines end This country faces a crisis and a crossroads. <%= sparkline_tag [55, 10, 10, 20, 30], :type => "pie", :remain_color=>"pink", :share_color => "blue", :background_color => "transparent" %> This country faces a crisis and a crossroads. <img src="/sparklines?share_color=blue&remain_color=pink&results=55&type=pie&background_color=transparent" class="sparkline" alt="Sparkline Graph" /> |
... |
SyntaxError: compile error (irb):33: parse error, unexpected tOP_ASGN, expecting $ <%= sparkline_tag [55, 10, 10, 20, 30], :type => "pie", :remain_color=>"pink", ^ from (irb):33 from :0 |