sparklines 0.4.6 → 0.4.7
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/CHANGELOG +5 -0
- data/lib/sparklines.rb +80 -74
- data/test/test_all.rb +7 -0
- metadata +3 -3
    
        data/CHANGELOG
    CHANGED
    
    | @@ -1,3 +1,8 @@ | |
| 1 | 
            +
            == 0.4.7
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * Improved normalization for better display of close, high-values. [Matt Van Horn]
         | 
| 4 | 
            +
            * Improved rendering of closed polyline on smooth graph with undercolor. Far left, right, and bottom of polyline are drawn offscreen so they don't show in the visible graph.
         | 
| 5 | 
            +
             | 
| 1 6 | 
             
            == 0.4.6
         | 
| 2 7 |  | 
| 3 8 | 
             
            * Added :underneath_color option to smooth sparkline. [Cory Forsyth]
         | 
    
        data/lib/sparklines.rb
    CHANGED
    
    | @@ -74,15 +74,15 @@ Licensed under the MIT license. | |
| 74 74 | 
             
            =end
         | 
| 75 75 | 
             
            class Sparklines
         | 
| 76 76 |  | 
| 77 | 
            -
              VERSION = '0.4. | 
| 77 | 
            +
              VERSION = '0.4.7'
         | 
| 78 78 |  | 
| 79 79 | 
             
              @@label_margin = 5.0
         | 
| 80 80 | 
             
              @@pointsize = 10.0
         | 
| 81 81 |  | 
| 82 82 | 
             
              class << self
         | 
| 83 83 |  | 
| 84 | 
            -
                # Does the actual plotting of the graph. | 
| 85 | 
            -
                # Calls the appropriate subclass based on the :type argument. | 
| 84 | 
            +
                # Does the actual plotting of the graph.
         | 
| 85 | 
            +
                # Calls the appropriate subclass based on the :type argument.
         | 
| 86 86 | 
             
                # Defaults to 'smooth'
         | 
| 87 87 | 
             
                def plot(data=[], options={})
         | 
| 88 88 | 
             
                  defaults = {
         | 
| @@ -99,15 +99,15 @@ class Sparklines | |
| 99 99 | 
             
                    :share_color => 'red',
         | 
| 100 100 | 
             
                    :remain_color => 'lightgrey',
         | 
| 101 101 | 
             
                    :min_color => 'blue',
         | 
| 102 | 
            -
                    :max_color => 'green', | 
| 103 | 
            -
                    :last_color => 'red', | 
| 102 | 
            +
                    :max_color => 'green',
         | 
| 103 | 
            +
                    :last_color => 'red',
         | 
| 104 104 | 
             
                    :std_dev_color => '#efefef',
         | 
| 105 | 
            -
             | 
| 105 | 
            +
             | 
| 106 106 | 
             
                    :has_min => false,
         | 
| 107 107 | 
             
                    :has_max => false,
         | 
| 108 108 | 
             
                    :has_last => false,
         | 
| 109 109 | 
             
                    :has_std_dev => false,
         | 
| 110 | 
            -
             | 
| 110 | 
            +
             | 
| 111 111 | 
             
                    :label => nil
         | 
| 112 112 | 
             
                  }
         | 
| 113 113 |  | 
| @@ -118,7 +118,7 @@ class Sparklines | |
| 118 118 | 
             
                  end
         | 
| 119 119 |  | 
| 120 120 | 
             
                  options_sym  = defaults.merge(options_sym)
         | 
| 121 | 
            -
             | 
| 121 | 
            +
             | 
| 122 122 | 
             
                  # Call the appropriate method for actual plotting.
         | 
| 123 123 | 
             
                  sparkline = self.new(data, options_sym)
         | 
| 124 124 | 
             
                  if %w(area bar pie smooth discrete whisker).include? options_sym[:type]
         | 
| @@ -147,25 +147,25 @@ class Sparklines | |
| 147 147 | 
             
              # Creates a continuous area sparkline. Relevant options.
         | 
| 148 148 | 
             
              #
         | 
| 149 149 | 
             
              #   :step - An integer that determines the distance between each point on the sparkline.  Defaults to 2.
         | 
| 150 | 
            -
              # | 
| 150 | 
            +
              #
         | 
| 151 151 | 
             
              #   :height - An integer that determines what the height of the sparkline will be.  Defaults to 14
         | 
| 152 | 
            -
              # | 
| 152 | 
            +
              #
         | 
| 153 153 | 
             
              #   :upper - An integer that determines the threshold for colorization purposes.  Any value less than upper will be colored using below_color, anything above and equal to upper will use above_color.  Defaults to 50.
         | 
| 154 | 
            -
              # | 
| 154 | 
            +
              #
         | 
| 155 155 | 
             
              #   :has_min - Determines whether a dot will be drawn at the lowest value or not.  Defaults to false.
         | 
| 156 | 
            -
              # | 
| 156 | 
            +
              #
         | 
| 157 157 | 
             
              #   :has_max - Determines whether a dot will be drawn at the highest value or not.  Defaults to false.
         | 
| 158 | 
            -
              # | 
| 158 | 
            +
              #
         | 
| 159 159 | 
             
              #   :has_last - Determines whether a dot will be drawn at the last value or not.  Defaults to false.
         | 
| 160 | 
            -
              # | 
| 160 | 
            +
              #
         | 
| 161 161 | 
             
              #   :min_color - A string or color code representing the color that the dot drawn at the smallest value will be displayed as.  Defaults to blue.
         | 
| 162 | 
            -
              # | 
| 162 | 
            +
              #
         | 
| 163 163 | 
             
              #   :max_color - A string or color code representing the color that the dot drawn at the largest value will be displayed as.  Defaults to green.
         | 
| 164 | 
            -
              # | 
| 164 | 
            +
              #
         | 
| 165 165 | 
             
              #   :last_color - A string or color code representing the color that the dot drawn at the last value will be displayed as.  Defaults to red.
         | 
| 166 | 
            -
              # | 
| 166 | 
            +
              #
         | 
| 167 167 | 
             
              #   :above_color - A string or color code representing the color to draw values above or equal the upper value.  Defaults to red.
         | 
| 168 | 
            -
              # | 
| 168 | 
            +
              #
         | 
| 169 169 | 
             
              #   :below_color - A string or color code representing the color to draw values below the upper value. Defaults to gray.
         | 
| 170 170 |  | 
| 171 171 | 
             
              def area
         | 
| @@ -173,7 +173,7 @@ class Sparklines | |
| 173 173 | 
             
                step = @options[:step].to_f
         | 
| 174 174 | 
             
                height = @options[:height].to_f
         | 
| 175 175 | 
             
                background_color = @options[:background_color]
         | 
| 176 | 
            -
             | 
| 176 | 
            +
             | 
| 177 177 | 
             
                create_canvas((@norm_data.size - 1) * step + 4, height, background_color)
         | 
| 178 178 |  | 
| 179 179 | 
             
                upper = @options[:upper].to_f
         | 
| @@ -192,8 +192,8 @@ class Sparklines | |
| 192 192 | 
             
                coords = [[0,(height - 3 - upper/(101.0/(height-4)))]]
         | 
| 193 193 | 
             
                i=0
         | 
| 194 194 | 
             
                @norm_data.each do |r|
         | 
| 195 | 
            -
             | 
| 196 | 
            -
             | 
| 195 | 
            +
                  coords.push [(2 + i), (height - 3 - r/(101.0/(height-4)))]
         | 
| 196 | 
            +
                  i += step
         | 
| 197 197 | 
             
                end
         | 
| 198 198 | 
             
                coords.push [(@norm_data.size - 1) * step + 4, (height - 3 - upper/(101.0/(height-4)))]
         | 
| 199 199 |  | 
| @@ -225,10 +225,10 @@ class Sparklines | |
| 225 225 | 
             
                  @draw.rectangle(0,0,@canvas.columns,@canvas.rows)
         | 
| 226 226 | 
             
                end
         | 
| 227 227 | 
             
                @draw.clip_path('all')
         | 
| 228 | 
            -
             | 
| 228 | 
            +
             | 
| 229 229 | 
             
                drawbox(coords[@norm_data.index(@norm_data.min)+1], 1, min_color) if has_min == true
         | 
| 230 230 | 
             
                drawbox(coords[@norm_data.index(@norm_data.max)+1], 1, max_color) if has_max == true
         | 
| 231 | 
            -
             | 
| 231 | 
            +
             | 
| 232 232 | 
             
                drawbox(coords[-2], 1, last_color) if has_last == true
         | 
| 233 233 |  | 
| 234 234 | 
             
                @draw.draw(@canvas)
         | 
| @@ -244,7 +244,7 @@ class Sparklines | |
| 244 244 | 
             
                background_color = @options[:background_color]
         | 
| 245 245 |  | 
| 246 246 | 
             
                create_canvas(@norm_data.length * step + 2, height, background_color)
         | 
| 247 | 
            -
             | 
| 247 | 
            +
             | 
| 248 248 | 
             
                upper = @options[:upper].to_f
         | 
| 249 249 | 
             
                below_color = @options[:below_color]
         | 
| 250 250 | 
             
                above_color = @options[:above_color]
         | 
| @@ -254,8 +254,8 @@ class Sparklines | |
| 254 254 | 
             
                  color = (r >= upper) ? above_color : below_color
         | 
| 255 255 | 
             
                  @draw.stroke('transparent')
         | 
| 256 256 | 
             
                  @draw.fill(color)
         | 
| 257 | 
            -
                  @draw.rectangle( i, @canvas.rows, | 
| 258 | 
            -
             | 
| 257 | 
            +
                  @draw.rectangle( i, @canvas.rows,
         | 
| 258 | 
            +
                  i + step - 2, @canvas.rows - ( (r / @maximum_value) * @canvas.rows) )
         | 
| 259 259 | 
             
                  i += step
         | 
| 260 260 | 
             
                end
         | 
| 261 261 |  | 
| @@ -283,9 +283,9 @@ class Sparklines | |
| 283 283 | 
             
                step = @options[:step].to_f
         | 
| 284 284 |  | 
| 285 285 | 
             
                width = @norm_data.size * step - 1
         | 
| 286 | 
            -
             | 
| 286 | 
            +
             | 
| 287 287 | 
             
                create_canvas(@norm_data.size * step - 1, height, background_color)
         | 
| 288 | 
            -
             | 
| 288 | 
            +
             | 
| 289 289 | 
             
                below_color = @options[:below_color]
         | 
| 290 290 | 
             
                above_color = @options[:above_color]
         | 
| 291 291 | 
             
                std_dev_color = @options[:std_dev_color]
         | 
| @@ -294,11 +294,11 @@ class Sparklines | |
| 294 294 |  | 
| 295 295 | 
             
                i = 0
         | 
| 296 296 | 
             
                @norm_data.each do |r|
         | 
| 297 | 
            -
             | 
| 298 | 
            -
             | 
| 299 | 
            -
             | 
| 300 | 
            -
             | 
| 301 | 
            -
             | 
| 297 | 
            +
                  color = (r >= upper) ? above_color : below_color
         | 
| 298 | 
            +
                  @draw.stroke(color)
         | 
| 299 | 
            +
                  @draw.line(i, (@canvas.rows - r/(101.0/(height-4))-4).to_f,
         | 
| 300 | 
            +
                  i, (@canvas.rows - r/(101.0/(height-4))).to_f)
         | 
| 301 | 
            +
                  i += step
         | 
| 302 302 | 
             
                end
         | 
| 303 303 |  | 
| 304 304 | 
             
                @draw.draw(@canvas)
         | 
| @@ -320,11 +320,11 @@ class Sparklines | |
| 320 320 | 
             
                background_color = @options[:background_color]
         | 
| 321 321 |  | 
| 322 322 | 
             
                create_canvas(diameter, diameter, background_color)
         | 
| 323 | 
            -
             | 
| 323 | 
            +
             | 
| 324 324 | 
             
                share_color = @options[:share_color]
         | 
| 325 325 | 
             
                remain_color = @options[:remain_color]
         | 
| 326 326 | 
             
                percent = @norm_data[0]
         | 
| 327 | 
            -
             | 
| 327 | 
            +
             | 
| 328 328 | 
             
                # Adjust the radius so there's some edge left in the pie
         | 
| 329 329 | 
             
                r = diameter/2.0 - 2
         | 
| 330 330 | 
             
                @draw.fill(remain_color)
         | 
| @@ -333,14 +333,14 @@ class Sparklines | |
| 333 333 |  | 
| 334 334 | 
             
                # Special exceptions
         | 
| 335 335 | 
             
                if percent == 0
         | 
| 336 | 
            -
             | 
| 337 | 
            -
             | 
| 338 | 
            -
             | 
| 336 | 
            +
                  # For 0% return blank
         | 
| 337 | 
            +
                  @draw.draw(@canvas)
         | 
| 338 | 
            +
                  return @canvas.to_blob
         | 
| 339 339 | 
             
                elsif percent == 100
         | 
| 340 | 
            -
             | 
| 341 | 
            -
             | 
| 342 | 
            -
             | 
| 343 | 
            -
             | 
| 340 | 
            +
                  # For 100% just draw a full circle
         | 
| 341 | 
            +
                  @draw.ellipse(r + 2, r + 2, r , r , 0, 360)
         | 
| 342 | 
            +
                  @draw.draw(@canvas)
         | 
| 343 | 
            +
                  return @canvas.to_blob
         | 
| 344 344 | 
             
                end
         | 
| 345 345 |  | 
| 346 346 | 
             
                # Okay, this part is as confusing as hell, so pay attention:
         | 
| @@ -402,10 +402,10 @@ class Sparklines | |
| 402 402 | 
             
                step = @options[:step].to_f
         | 
| 403 403 | 
             
                height = @options[:height].to_f
         | 
| 404 404 | 
             
                width = ((@norm_data.size - 1) * step).to_f
         | 
| 405 | 
            -
             | 
| 405 | 
            +
             | 
| 406 406 | 
             
                background_color = @options[:background_color]
         | 
| 407 407 | 
             
                create_canvas(width, height, background_color)
         | 
| 408 | 
            -
             | 
| 408 | 
            +
             | 
| 409 409 | 
             
                min_color = @options[:min_color]
         | 
| 410 410 | 
             
                max_color = @options[:max_color]
         | 
| 411 411 | 
             
                last_color = @options[:last_color]
         | 
| @@ -415,7 +415,7 @@ class Sparklines | |
| 415 415 | 
             
                line_color = @options[:line_color]
         | 
| 416 416 | 
             
                has_std_dev = @options[:has_std_dev]
         | 
| 417 417 | 
             
                std_dev_color = @options[:std_dev_color]
         | 
| 418 | 
            -
             | 
| 418 | 
            +
             | 
| 419 419 | 
             
                drawstddevbox(width,height,std_dev_color) if has_std_dev == true
         | 
| 420 420 |  | 
| 421 421 | 
             
                @draw.stroke(line_color)
         | 
| @@ -425,7 +425,7 @@ class Sparklines | |
| 425 425 | 
             
                  coords.push [ i, (height - 3 - r/(101.0/(height-4))) ]
         | 
| 426 426 | 
             
                  i += step
         | 
| 427 427 | 
             
                end
         | 
| 428 | 
            -
             | 
| 428 | 
            +
             | 
| 429 429 | 
             
                if @options[:underneath_color]
         | 
| 430 430 | 
             
                  closed_polygon(height, width, coords)
         | 
| 431 431 | 
             
                else
         | 
| @@ -439,15 +439,15 @@ class Sparklines | |
| 439 439 | 
             
                @draw.draw(@canvas)
         | 
| 440 440 | 
             
                @canvas.to_blob
         | 
| 441 441 | 
             
              end
         | 
| 442 | 
            -
             | 
| 442 | 
            +
             | 
| 443 443 | 
             
              ##
         | 
| 444 | 
            -
              # Creates a whisker sparkline to track on/off type data. There are five states: | 
| 445 | 
            -
              # on, off, no value, exceptional on, exceptional off. On values create an up | 
| 446 | 
            -
              # whisker and off values create a down whisker. Exceptional values may be | 
| 444 | 
            +
              # Creates a whisker sparkline to track on/off type data. There are five states:
         | 
| 445 | 
            +
              # on, off, no value, exceptional on, exceptional off. On values create an up
         | 
| 446 | 
            +
              # whisker and off values create a down whisker. Exceptional values may be
         | 
| 447 447 | 
             
              # colored differently than regular values to indicate, for example, a shut out.
         | 
| 448 448 | 
             
              # No value produces an empty row to indicate a tie.
         | 
| 449 | 
            -
              # | 
| 450 | 
            -
              # * results - an array of integer values between -2 and 2. -2 is exceptional | 
| 449 | 
            +
              #
         | 
| 450 | 
            +
              # * results - an array of integer values between -2 and 2. -2 is exceptional
         | 
| 451 451 | 
             
              #   down, 1 is regular down, 0 is no value, 1 is up, and 2 is exceptional up.
         | 
| 452 452 | 
             
              # * options - a hash that takes parameters
         | 
| 453 453 | 
             
              #
         | 
| @@ -456,7 +456,7 @@ class Sparklines | |
| 456 456 | 
             
              #   :whisker_color - the color of regular whiskers; defaults to black
         | 
| 457 457 | 
             
              #
         | 
| 458 458 | 
             
              #   :exception_color - the color of exceptional whiskers; defaults to red
         | 
| 459 | 
            -
             | 
| 459 | 
            +
             | 
| 460 460 | 
             
              def whisker
         | 
| 461 461 |  | 
| 462 462 | 
             
                # step = @options[:step].to_f
         | 
| @@ -464,7 +464,7 @@ class Sparklines | |
| 464 464 | 
             
                background_color = @options[:background_color]
         | 
| 465 465 |  | 
| 466 466 | 
             
                create_canvas(@data.size * 2 - 1, height, background_color)
         | 
| 467 | 
            -
             | 
| 467 | 
            +
             | 
| 468 468 | 
             
                whisker_color = @options[:whisker_color] || 'black'
         | 
| 469 469 | 
             
                exception_color = @options[:exception_color] || 'red'
         | 
| 470 470 |  | 
| @@ -481,7 +481,7 @@ class Sparklines | |
| 481 481 | 
             
                  y_mid_point = (r >= 1) ? on_row : off_row
         | 
| 482 482 |  | 
| 483 483 | 
             
                  y_end_point = y_mid_point
         | 
| 484 | 
            -
                  if ( r > 0) | 
| 484 | 
            +
                  if ( r > 0)
         | 
| 485 485 | 
             
                    y_end_point = 0
         | 
| 486 486 | 
             
                  end
         | 
| 487 487 |  | 
| @@ -495,7 +495,7 @@ class Sparklines | |
| 495 495 | 
             
                end
         | 
| 496 496 |  | 
| 497 497 | 
             
                @draw.draw(@canvas)
         | 
| 498 | 
            -
                @canvas.to_blob | 
| 498 | 
            +
                @canvas.to_blob
         | 
| 499 499 | 
             
              end
         | 
| 500 500 |  | 
| 501 501 | 
             
              ##
         | 
| @@ -512,39 +512,45 @@ class Sparklines | |
| 512 512 | 
             
                @canvas.to_blob
         | 
| 513 513 | 
             
              end
         | 
| 514 514 |  | 
| 515 | 
            -
            private
         | 
| 515 | 
            +
              private
         | 
| 516 516 |  | 
| 517 517 | 
             
              def normalize_data
         | 
| 518 | 
            -
                @ | 
| 519 | 
            -
                @maximum_value = @data.max | 
| 520 | 
            -
                abs_min = @minumum_value.abs
         | 
| 518 | 
            +
                @minimum_value = @data.min
         | 
| 519 | 
            +
                @maximum_value = @data.max
         | 
| 521 520 | 
             
                if @options[:type].to_s == 'pie'
         | 
| 522 521 | 
             
                  @norm_data = @data
         | 
| 523 522 | 
             
                else
         | 
| 524 | 
            -
                  @norm_data = @data.map  | 
| 523 | 
            +
                  @norm_data = @data.map do |value|
         | 
| 524 | 
            +
                    value = ((value.to_f - @minimum_value)/(@maximum_value - @minimum_value)) * 100.0
         | 
| 525 | 
            +
                  end
         | 
| 525 526 | 
             
                end
         | 
| 526 527 | 
             
              end
         | 
| 527 528 |  | 
| 528 529 | 
             
              ##
         | 
| 529 530 | 
             
              #   :arr - an array of points (represented as two element arrays)
         | 
| 530 | 
            -
             | 
| 531 | 
            +
             | 
| 531 532 | 
             
              def open_ended_polyline(arr)
         | 
| 532 533 | 
             
                0.upto(arr.length - 2) { |i|
         | 
| 533 534 | 
             
                  @draw.line(arr[i][0], arr[i][1], arr[i+1][0], arr[i+1][1])
         | 
| 534 535 | 
             
                }
         | 
| 535 536 | 
             
              end
         | 
| 536 | 
            -
             | 
| 537 | 
            +
             | 
| 537 538 | 
             
              # Fills in the area under the line (used for a smooth graph)
         | 
| 538 539 | 
             
              def closed_polygon(height, width, coords)
         | 
| 539 540 | 
             
                return if @options[:underneath_color].nil?
         | 
| 540 541 | 
             
                list = []
         | 
| 541 | 
            -
                 | 
| 542 | 
            +
                # Start off screen so completed polygon doesn't show
         | 
| 543 | 
            +
                list << [-1, height + 1]
         | 
| 544 | 
            +
                list << [coords.first.first - 1, coords.first.last]
         | 
| 545 | 
            +
                # Now the normal coords
         | 
| 542 546 | 
             
                list << coords
         | 
| 543 | 
            -
                 | 
| 547 | 
            +
                # Close offscreen
         | 
| 548 | 
            +
                list << [coords.last.first + 1, coords.last.last]
         | 
| 549 | 
            +
                list << [width + 1, height + 1]
         | 
| 544 550 | 
             
                @draw.fill( @options[:underneath_color] )
         | 
| 545 551 | 
             
                @draw.polygon( *list.flatten )
         | 
| 546 552 | 
             
              end
         | 
| 547 | 
            -
             | 
| 553 | 
            +
             | 
| 548 554 | 
             
              ##
         | 
| 549 555 | 
             
              # Create an image to draw on and a drawable to do the drawing with.
         | 
| 550 556 | 
             
              #
         | 
| @@ -582,16 +588,16 @@ private | |
| 582 588 | 
             
                  @draw.fill = 'black'
         | 
| 583 589 | 
             
                  @draw.font = @font if @font
         | 
| 584 590 | 
             
                  @draw.gravity = Magick::WestGravity
         | 
| 585 | 
            -
                  @draw.annotate( @canvas, | 
| 586 | 
            -
             | 
| 587 | 
            -
             | 
| 588 | 
            -
             | 
| 591 | 
            +
                  @draw.annotate( @canvas,
         | 
| 592 | 
            +
                  @label_width, 1.0,
         | 
| 593 | 
            +
                  w - @label_and_data_last_width + @@label_margin, h - calculate_caps_height/2.0,
         | 
| 594 | 
            +
                  @options[:label])
         | 
| 589 595 |  | 
| 590 596 | 
             
                  @draw.fill = 'red'
         | 
| 591 | 
            -
                  @draw.annotate( @canvas, | 
| 592 | 
            -
             | 
| 593 | 
            -
             | 
| 594 | 
            -
             | 
| 597 | 
            +
                  @draw.annotate( @canvas,
         | 
| 598 | 
            +
                  @data_last_width, 1.0,
         | 
| 599 | 
            +
                  w - @data_last_width - @@label_margin * 2.0, h - calculate_caps_height/2.0,
         | 
| 600 | 
            +
                  @data.last.to_s)
         | 
| 595 601 | 
             
                end
         | 
| 596 602 | 
             
              end
         | 
| 597 603 |  | 
    
        data/test/test_all.rb
    CHANGED
    
    | @@ -149,6 +149,13 @@ class SparklinesTest < Test::Unit::TestCase | |
| 149 149 | 
             
                })
         | 
| 150 150 | 
             
              end
         | 
| 151 151 |  | 
| 152 | 
            +
              def test_close_values
         | 
| 153 | 
            +
                Sparklines.plot_to_file("#{@output_dir}/smooth_close_values.png", [100, 90, 95, 99, 80, 90], {
         | 
| 154 | 
            +
                  :type => 'smooth',
         | 
| 155 | 
            +
                  :line_color => "#6699cc",
         | 
| 156 | 
            +
                  :underneath_color => "#ebf3f6"
         | 
| 157 | 
            +
                })
         | 
| 158 | 
            +
              end
         | 
| 152 159 |  | 
| 153 160 | 
             
              def test_no_type
         | 
| 154 161 | 
             
                Sparklines.plot_to_file("#{@output_dir}/error.png", 0, :type => 'nonexistent')
         | 
    
        metadata
    CHANGED
    
    | @@ -1,10 +1,10 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            -
            rubygems_version: 0.9. | 
| 2 | 
            +
            rubygems_version: 0.9.4
         | 
| 3 3 | 
             
            specification_version: 1
         | 
| 4 4 | 
             
            name: sparklines
         | 
| 5 5 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 6 | 
            -
              version: 0.4. | 
| 7 | 
            -
            date: 2007- | 
| 6 | 
            +
              version: 0.4.7
         | 
| 7 | 
            +
            date: 2007-12-05 00:00:00 -08:00
         | 
| 8 8 | 
             
            summary: Tiny graphs.
         | 
| 9 9 | 
             
            require_paths: 
         | 
| 10 10 | 
             
            - lib
         |