working on documentation - reportable - Fork of reportable required by WarVox, from hdm/reportable.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
 (DIR) commit 793ccc345c8f37fa8cbfc3eb8579779d1c248ffa
 (DIR) parent e6ea4a8f5cae154c3ef76132a449d0b8117e9ace
 (HTM) Author: marcoow <marco.otte-witte@simplabs.com>
       Date:   Fri, 12 Dec 2008 02:28:19 +0800
       
       working on documentation
       
       Signed-off-by: Marco Otte-Witte <marco.otte-witte@simplabs.com>
       Diffstat:
         M generators/reports_as_sparkline_mi… |       4 +---
         M lib/kvlr/core_extensions/date_time… |       7 ++++---
         M lib/kvlr/reports_as_sparkline.rb    |      46 +++++++++++++++++--------------
         M lib/kvlr/reports_as_sparkline/asse… |      16 ++++++++++++++--
         M lib/kvlr/reports_as_sparkline/cumu… |      14 +++++++++++++-
         M lib/kvlr/reports_as_sparkline/grou… |      15 ++++++++++-----
         M lib/kvlr/reports_as_sparkline/repo… |       6 +++---
         M lib/kvlr/reports_as_sparkline/repo… |       2 +-
         M lib/kvlr/reports_as_sparkline/repo… |       4 ++--
         A rdoc/classes/Kvlr/CoreExtensions/D… |     145 +++++++++++++++++++++++++++++++
         A rdoc/classes/Kvlr/ReportsAsSparkli… |     164 +++++++++++++++++++++++++++++++
         A rdoc/classes/Kvlr/ReportsAsSparkli… |     201 ++++++++++++++++++++++++++++++
         A rdoc/classes/Kvlr/ReportsAsSparkli… |     167 +++++++++++++++++++++++++++++++
         A rdoc/classes/Kvlr/ReportsAsSparkli… |     247 +++++++++++++++++++++++++++++++
         A rdoc/classes/Kvlr/ReportsAsSparkli… |     227 +++++++++++++++++++++++++++++++
         A rdoc/classes/Kvlr/ReportsAsSparkli… |     167 +++++++++++++++++++++++++++++++
         A rdoc/classes/Kvlr/ReportsAsSparkli… |     297 +++++++++++++++++++++++++++++++
         A rdoc/created.rid                    |       1 +
         A rdoc/files/README_rdoc.html         |     168 +++++++++++++++++++++++++++++++
         A rdoc/files/lib/kvlr/core_extension… |     102 +++++++++++++++++++++++++++++++
         A rdoc/files/lib/kvlr/reports_as_spa… |     102 +++++++++++++++++++++++++++++++
         A rdoc/files/lib/kvlr/reports_as_spa… |     102 +++++++++++++++++++++++++++++++
         A rdoc/files/lib/kvlr/reports_as_spa… |     102 +++++++++++++++++++++++++++++++
         A rdoc/files/lib/kvlr/reports_as_spa… |     102 +++++++++++++++++++++++++++++++
         A rdoc/files/lib/kvlr/reports_as_spa… |     102 +++++++++++++++++++++++++++++++
         A rdoc/files/lib/kvlr/reports_as_spa… |     102 +++++++++++++++++++++++++++++++
         A rdoc/files/lib/kvlr/reports_as_spa… |     102 +++++++++++++++++++++++++++++++
         A rdoc/fr_class_index.html            |      35 +++++++++++++++++++++++++++++++
         A rdoc/fr_file_index.html             |      36 +++++++++++++++++++++++++++++++
         A rdoc/fr_method_index.html           |      43 ++++++++++++++++++++++++++++++
         A rdoc/index.html                     |      25 +++++++++++++++++++++++++
         A rdoc/rdoc-style.css                 |     209 +++++++++++++++++++++++++++++++
       
       32 files changed, 3022 insertions(+), 40 deletions(-)
       ---
 (DIR) diff --git a/generators/reports_as_sparkline_migration/reports_as_sparkline_migration_generator.rb b/generators/reports_as_sparkline_migration/reports_as_sparkline_migration_generator.rb
       @@ -1,7 +1,5 @@
       -# Generates the migration that adds the caching table
       -class ReportsAsSparklineMigrationGenerator < Rails::Generator::NamedBase
       +class ReportsAsSparklineMigrationGenerator < Rails::Generator::NamedBase #:nodoc:
        
       -  # Creates the generator's manifest
          def manifest
            record do |m|
              m.migration_template 'migration.erb', 'db/migrate'
 (DIR) diff --git a/lib/kvlr/core_extensions/date_time.rb b/lib/kvlr/core_extensions/date_time.rb
       @@ -1,13 +1,14 @@
       -module Simplabs
       +module Kvlr #:nodoc:
        
       -  module CoreExtensions
       +  module CoreExtensions #:nodoc:
        
            module DateTime
        
              ::DateTime.class_eval do
        
       +        # Converts the DateTime into a Kvlr::ReportsAsSparkline::ReportingPeriod
                def to_reporting_period(grouping)
       -          Kvlr::ReportsAsSparkline::ReportsAsSparkline.new(grouping, self)
       +          Kvlr::ReportsAsSparkline::ReportingPeriod.new(grouping, self)
                end
        
              end
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline.rb b/lib/kvlr/reports_as_sparkline.rb
       @@ -1,34 +1,40 @@
        module Kvlr #:nodoc:
        
       -  module ReportsAsSparkline #:nodoc:
       +  module ReportsAsSparkline
        
            def self.included(base) #:nodoc:
              base.extend ClassMethods
            end
        
       -    class InvalidGroupExpception < Exception
       -    end
       -
       -    class InvalidOperationExpception < Exception
       -    end
       -
            module ClassMethods
        
       +      # Generates a report on a model. The report can then be executed via <name>_report
       +      # 
       +      # ==== Parameters
       +      #
       +      # * <tt>name</tt> - The name of the report, defines the name of the generated report method (<name>_report)
       +      #
       +      # ==== Options
       +      #
       +      # * <tt>:date_column_name</tt> - The name of the date column on that the records are aggregated
       +      # * <tt>:value_column_name</tt> - The name of the column that holds the value to sum for aggregation :sum
       +      # * <tt>:aggregation</tt> - The aggregation to use (either :count or :sum); when using :sum, :value_column_name must also be specified
       +      # * <tt>:grouping</tt> - The period records are grouped on (:hour, :day, :week, :month)
       +      # * <tt>:limit</tt> - The number of periods to get (see :grouping)
       +      # * <tt>:conditions</tt> - Conditions like in ActiveRecord::Base#find; only records that match there conditions are reported on
              #
       -      # Examples:
       +      # ==== Examples
              #
       -      # class Game < ActiveRecord::Base
       -      #   report_as_sparkline :games_per_day
       -      #   report_as_sparkline :games_played_total, :cumulate => true
       -      # end
       -      # class User < ActiveRecord::Base
       -      #   report_as_sparkline :registrations, :operation => :count
       -      #   report_as_sparkline :activations, :date_column => :activated_at, :operation => :count
       -      #   report_as_sparkline :total_users_report, :cumulate => true
       -      # end
       -      # class Rake < ActiveRecord::Base
       -      #   report_as_sparkline :rake, :operation => :sum
       -      # end
       +      #  class Game < ActiveRecord::Base
       +      #    report_as_sparkline :games_per_day
       +      #    report_as_sparkline :games_played_total, :cumulate => true
       +      #  end
       +      #  class User < ActiveRecord::Base
       +      #    report_as_sparkline :registrations, :operation => :count
       +      #    report_as_sparkline :activations, :date_column_name => :activated_at, :operation => :count
       +      #    report_as_sparkline :total_users_report, :cumulate => true
       +      #    report_as_sparkline :rake, :aggregation => :sum, :value_column_name => :profile_visits
       +      #  end
              def report_as_sparkline(name, options = {})
                (class << self; self; end).instance_eval do
                  define_method "#{name.to_s}_report".to_sym do |*args|
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/asset_tag_helper.rb b/lib/kvlr/reports_as_sparkline/asset_tag_helper.rb
       @@ -2,12 +2,24 @@ module Kvlr #:nodoc:
        
          module ReportsAsSparkline #:nodoc:
        
       -    # View helper that provides sparkline methods
            module AssetTagHelper
        
              # Renders a sparkline with the given data.
       +      #
       +      # ==== Parameters
       +      #
       +      # *<tt>data</tt> - The data to render the sparkline for
       +      #
       +      # ==== Options
       +      #
       +      # *<tt>width</tt> - The width of the generated image
       +      # *<tt>height</tt> - The height of the generated image
       +      # *<tt>color</tt> - The base color of the generated image (hex code)
       +      #
       +      # ==== Example
       +      # <%= sparkline_tag(User.registrations_report, :width => 200, :height => 100, :color => '000') %>
              def sparkline_tag(data, options = {})
       -        options.reverse_merge!({:width => 300, :height => 34, :color => '0077CC'})
       +        options.reverse_merge!({:width => 300, :height => 34, :color => '0077cc'})
                data.collect! { |element| element[1].to_s }
                image_tag(
                  "http://chart.apis.google.com/chart?cht=ls&chs=#{options[:width]}x#{options[:height]}&chd=t:#{data.join(',')}&chco=#{options[:color]}&chm=B,E6F2FA,0,0,0&chls=1,0,0&chds=#{data.min},#{data.max}"
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/cumulated_report.rb b/lib/kvlr/reports_as_sparkline/cumulated_report.rb
       @@ -2,15 +2,27 @@ module Kvlr #:nodoc:
        
          module ReportsAsSparkline #:nodoc:
        
       +    # A special report class that cumulates all data (see Kvlr::ReportsAsSparkline::Report)
       +    #
       +    # ==== Examples
       +    #
       +    #  When Kvlr::ReportsAsSparkline::Report returns
       +    #
       +    #    [[<DateTime today>, 1], [<DateTime yesterday>, 2], etc.]
       +    #
       +    #  Kvlr::ReportsAsSparkline::CumulatedReport returns
       +    #
       +    #    [[<DateTime today>, 3], [<DateTime yesterday>, 2], etc.]
            class CumulatedReport < Report
        
       +      # Runs the report (see Kvlr::ReportsAsSparkline::Report#run)
              def run(options = {})
                cumulate(super)
              end
        
              protected
        
       -        def cumulate(data)
       +        def cumulate(data) #:nodoc:
                  acc = 0.0
                  result = []
                  data.reverse_each do |element|
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/grouping.rb b/lib/kvlr/reports_as_sparkline/grouping.rb
       @@ -2,18 +2,23 @@ module Kvlr #:nodoc:
        
          module ReportsAsSparkline #:nodoc:
        
       +    # This is the grouping a report uses to group records in the database
       +    #
       +    # ==== Parameters
       +    #  * <tt>identifier</tt> - The identifier of the grouping - one of :hour, :day, :week or :month
            class Grouping
        
       -      def initialize(grouping)
       -        raise ArgumentError.new("Invalid grouping #{grouping}") unless [:hour, :day, :week, :month].include?(grouping)
       -        @identifier = grouping
       +      def initialize(identifier)
       +        raise ArgumentError.new("Invalid grouping #{grouping}") unless [:hour, :day, :week, :month].include?(identifier)
       +        @identifier = identifier
              end
        
       +      # Returns the Grouping's identifier
              def identifier
                @identifier
              end
        
       -      def date_parts_from_db_string(db_string)
       +      def date_parts_from_db_string(db_string) #:nodoc:
                if ActiveRecord::Base.connection.class.to_s == 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter'
                  case @identifier
                    when :hour
       @@ -35,7 +40,7 @@ module Kvlr #:nodoc:
                end
              end
        
       -      def to_sql(date_column_name)
       +      def to_sql(date_column_name) #:nodoc:
                return case ActiveRecord::Base.connection.class.to_s
                  when 'ActiveRecord::ConnectionAdapters::MysqlAdapter'
                    mysql_format(date_column_name)
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/report.rb b/lib/kvlr/reports_as_sparkline/report.rb
       @@ -32,7 +32,7 @@ module Kvlr #:nodoc:
        
              private
        
       -        def read_data(begin_at, conditions = [])
       +        def read_data(begin_at, conditions = []) #:nodoc:
                  conditions = setup_conditions(begin_at, conditions)
                  @klass.send(@aggregation,
                    @value_column_name,
       @@ -42,7 +42,7 @@ module Kvlr #:nodoc:
                  )
                end
        
       -        def setup_conditions(begin_at, custom_conditions = [])
       +        def setup_conditions(begin_at, custom_conditions = []) #:nodoc:
                  conditions = ['']
                  if custom_conditions.is_a?(Hash)
                    conditions = [custom_conditions.map{ |k, v| "#{k.to_s} = ?" }.join(' AND '), *custom_conditions.map{ |k, v| v }]
       @@ -53,7 +53,7 @@ module Kvlr #:nodoc:
                  conditions << begin_at
                end
        
       -        def ensure_valid_options(options, context = :initialize)
       +        def ensure_valid_options(options, context = :initialize) #:nodoc:
                  case context
                    when :initialize
                      options.each_key do |k|
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/report_cache.rb b/lib/kvlr/reports_as_sparkline/report_cache.rb
       @@ -2,7 +2,7 @@ module Kvlr #:nodoc:
        
          module ReportsAsSparkline #:nodoc:
        
       -    class ReportCache < ActiveRecord::Base
       +    class ReportCache < ActiveRecord::Base #:nodoc:
        
              serialize :reporting_period, Kvlr::ReportsAsSparkline::ReportingPeriod
        
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/reporting_period.rb b/lib/kvlr/reports_as_sparkline/reporting_period.rb
       @@ -25,7 +25,7 @@ module Kvlr #:nodoc:
                end
              end
        
       -      def self.from_db_string(grouping, db_string)
       +      def self.from_db_string(grouping, db_string) #:nodoc:
                parts = grouping.date_parts_from_db_string(db_string)
                result = case grouping.identifier
                  when :hour
       @@ -53,7 +53,7 @@ module Kvlr #:nodoc:
                end
              end
        
       -      def ==(other)
       +      def ==(other) #:nodoc:
                if other.class == Kvlr::ReportsAsSparkline::ReportingPeriod
                  return @date_time.to_s == other.date_time.to_s && @grouping.identifier.to_s == other.grouping.identifier.to_s
                end
 (DIR) diff --git a/rdoc/classes/Kvlr/CoreExtensions/DateTime.html b/rdoc/classes/Kvlr/CoreExtensions/DateTime.html
       @@ -0,0 +1,144 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Module: Kvlr::CoreExtensions::DateTime</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +    <div id="classHeader">
       +        <table class="header-table">
       +        <tr class="top-aligned-row">
       +          <td><strong>Module</strong></td>
       +          <td class="class-name-in-header">Kvlr::CoreExtensions::DateTime</td>
       +        </tr>
       +        <tr class="top-aligned-row">
       +            <td><strong>In:</strong></td>
       +            <td>
       +                <a href="../../../files/lib/kvlr/core_extensions/date_time_rb.html">
       +                lib/kvlr/core_extensions/date_time.rb
       +                </a>
       +        <br />
       +            </td>
       +        </tr>
       +
       +        </table>
       +    </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +    <div id="method-list">
       +      <h3 class="section-bar">Methods</h3>
       +
       +      <div class="name-list">
       +      <a href="#M000016">to_reporting_period</a>&nbsp;&nbsp;
       +      </div>
       +    </div>
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +    <div id="methods">
       +      <h3 class="section-bar">Public Instance methods</h3>
       +
       +      <div id="method-M000016" class="method-detail">
       +        <a name="M000016"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000016" class="method-signature">
       +          <span class="method-name">to_reporting_period</span><span class="method-args">(grouping)</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p>
       +Converts the <a href="DateTime.html">DateTime</a> into a <a
       +href="../ReportsAsSparkline/ReportingPeriod.html">Kvlr::ReportsAsSparkline::ReportingPeriod</a>
       +</p>
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000016-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/core_extensions/date_time.rb, line 10</span>
       +10:         <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_reporting_period</span>(<span class="ruby-identifier">grouping</span>)
       +11:           <span class="ruby-constant">Kvlr</span><span class="ruby-operator">::</span><span class="ruby-constant">ReportsAsSparkline</span><span class="ruby-operator">::</span><span class="ruby-constant">ReportingPeriod</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-keyword kw">self</span>)
       +12:         <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +
       +    </div>
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/AssetTagHelper.html b/rdoc/classes/Kvlr/ReportsAsSparkline/AssetTagHelper.html
       @@ -0,0 +1,163 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Module: Kvlr::ReportsAsSparkline::AssetTagHelper</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +    <div id="classHeader">
       +        <table class="header-table">
       +        <tr class="top-aligned-row">
       +          <td><strong>Module</strong></td>
       +          <td class="class-name-in-header">Kvlr::ReportsAsSparkline::AssetTagHelper</td>
       +        </tr>
       +        <tr class="top-aligned-row">
       +            <td><strong>In:</strong></td>
       +            <td>
       +                <a href="../../../files/lib/kvlr/reports_as_sparkline/asset_tag_helper_rb.html">
       +                lib/kvlr/reports_as_sparkline/asset_tag_helper.rb
       +                </a>
       +        <br />
       +            </td>
       +        </tr>
       +
       +        </table>
       +    </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +    <div id="method-list">
       +      <h3 class="section-bar">Methods</h3>
       +
       +      <div class="name-list">
       +      <a href="#M000002">sparkline_tag</a>&nbsp;&nbsp;
       +      </div>
       +    </div>
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +    <div id="methods">
       +      <h3 class="section-bar">Public Instance methods</h3>
       +
       +      <div id="method-M000002" class="method-detail">
       +        <a name="M000002"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000002" class="method-signature">
       +          <span class="method-name">sparkline_tag</span><span class="method-args">(data, options = {})</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p>
       +Renders a sparkline with the given data.
       +</p>
       +<h4>Parameters</h4>
       +<p>
       +*<tt>data</tt> - The data to render the sparkline for
       +</p>
       +<h4>Options</h4>
       +<p>
       +*<tt>width</tt> - The width of the generated image *<tt>height</tt> - The
       +height of the generated image *<tt>color</tt> - The base color of the
       +generated image (hex code)
       +</p>
       +<h4>Example</h4>
       +<p>
       +&lt;%= <a
       +href="AssetTagHelper.html#M000002">sparkline_tag</a>(User.registrations_report,
       +:width =&gt; 200, :height =&gt; 100, :color =&gt; &#8216;000&#8217;) %&gt;
       +</p>
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000002-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/asset_tag_helper.rb, line 21</span>
       +21:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sparkline_tag</span>(<span class="ruby-identifier">data</span>, <span class="ruby-identifier">options</span> = {})
       +22:         <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reverse_merge!</span>({<span class="ruby-identifier">:width</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">300</span>, <span class="ruby-identifier">:height</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">34</span>, <span class="ruby-identifier">:color</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'0077cc'</span>})
       +23:         <span class="ruby-identifier">data</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">element</span><span class="ruby-operator">|</span> <span class="ruby-identifier">element</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_s</span> }
       +24:         <span class="ruby-identifier">image_tag</span>(
       +25:           <span class="ruby-node">&quot;http://chart.apis.google.com/chart?cht=ls&amp;chs=#{options[:width]}x#{options[:height]}&amp;chd=t:#{data.join(',')}&amp;chco=#{options[:color]}&amp;chm=B,E6F2FA,0,0,0&amp;chls=1,0,0&amp;chds=#{data.min},#{data.max}&quot;</span>
       +26:         )
       +27:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +
       +    </div>
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/ClassMethods.html b/rdoc/classes/Kvlr/ReportsAsSparkline/ClassMethods.html
       @@ -0,0 +1,200 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Module: Kvlr::ReportsAsSparkline::ClassMethods</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +    <div id="classHeader">
       +        <table class="header-table">
       +        <tr class="top-aligned-row">
       +          <td><strong>Module</strong></td>
       +          <td class="class-name-in-header">Kvlr::ReportsAsSparkline::ClassMethods</td>
       +        </tr>
       +        <tr class="top-aligned-row">
       +            <td><strong>In:</strong></td>
       +            <td>
       +                <a href="../../../files/lib/kvlr/reports_as_sparkline_rb.html">
       +                lib/kvlr/reports_as_sparkline.rb
       +                </a>
       +        <br />
       +            </td>
       +        </tr>
       +
       +        </table>
       +    </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +    <div id="method-list">
       +      <h3 class="section-bar">Methods</h3>
       +
       +      <div class="name-list">
       +      <a href="#M000001">report_as_sparkline</a>&nbsp;&nbsp;
       +      </div>
       +    </div>
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +    <div id="methods">
       +      <h3 class="section-bar">Public Instance methods</h3>
       +
       +      <div id="method-M000001" class="method-detail">
       +        <a name="M000001"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000001" class="method-signature">
       +          <span class="method-name">report_as_sparkline</span><span class="method-args">(name, options = {})</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p>
       +Generates a report on a model. The report can then be executed via
       +&lt;name&gt;_report
       +</p>
       +<h4>Parameters</h4>
       +<ul>
       +<li><tt>name</tt> - The name of the report, defines the name of the generated
       +report method (&lt;name&gt;_report)
       +
       +</li>
       +</ul>
       +<h4>Options</h4>
       +<ul>
       +<li><tt>:date_column_name</tt> - The name of the date column on that the
       +records are aggregated
       +
       +</li>
       +<li><tt>:value_column_name</tt> - The name of the column that holds the value
       +to sum for aggregation :sum
       +
       +</li>
       +<li><tt>:aggregation</tt> - The aggregation to use (either :count or :sum);
       +when using :sum, :value_column_name must also be specified
       +
       +</li>
       +<li><tt>:grouping</tt> - The period records are grouped on (:hour, :day, :week,
       +:month)
       +
       +</li>
       +<li><tt>:limit</tt> - The number of periods to get (see :grouping)
       +
       +</li>
       +<li><tt>:conditions</tt> - Conditions like in ActiveRecord::Base#find; only
       +records that match there conditions are reported on
       +
       +</li>
       +</ul>
       +<h4>Examples</h4>
       +<pre>
       + class Game &lt; ActiveRecord::Base
       +   report_as_sparkline :games_per_day
       +   report_as_sparkline :games_played_total, :cumulate =&gt; true
       + end
       + class User &lt; ActiveRecord::Base
       +   report_as_sparkline :registrations, :operation =&gt; :count
       +   report_as_sparkline :activations, :date_column_name =&gt; :activated_at, :operation =&gt; :count
       +   report_as_sparkline :total_users_report, :cumulate =&gt; true
       +   report_as_sparkline :rake, :aggregation =&gt; :sum, :value_column_name =&gt; :profile_visits
       + end
       +</pre>
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000001-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline.rb, line 38</span>
       +38:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report_as_sparkline</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">options</span> = {})
       +39:         (<span class="ruby-keyword kw">class</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">self</span>; <span class="ruby-keyword kw">self</span>; <span class="ruby-keyword kw">end</span>).<span class="ruby-identifier">instance_eval</span> <span class="ruby-keyword kw">do</span>
       +40:           <span class="ruby-identifier">define_method</span> <span class="ruby-node">&quot;#{name.to_s}_report&quot;</span>.<span class="ruby-identifier">to_sym</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span>
       +41:             <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:cumulate</span>)
       +42:               <span class="ruby-identifier">report</span> = <span class="ruby-constant">Kvlr</span><span class="ruby-operator">::</span><span class="ruby-constant">ReportsAsSparkline</span><span class="ruby-operator">::</span><span class="ruby-constant">CumulatedReport</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">options</span>)
       +43:             <span class="ruby-keyword kw">else</span>
       +44:               <span class="ruby-identifier">report</span> = <span class="ruby-constant">Kvlr</span><span class="ruby-operator">::</span><span class="ruby-constant">ReportsAsSparkline</span><span class="ruby-operator">::</span><span class="ruby-constant">Report</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">options</span>)
       +45:             <span class="ruby-keyword kw">end</span>
       +46:             <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>))
       +47:             <span class="ruby-identifier">report</span>.<span class="ruby-identifier">run</span>(<span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> {} <span class="ruby-operator">:</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>])
       +48:           <span class="ruby-keyword kw">end</span>
       +49:         <span class="ruby-keyword kw">end</span>
       +50:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +
       +    </div>
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/CumulatedReport.html b/rdoc/classes/Kvlr/ReportsAsSparkline/CumulatedReport.html
       @@ -0,0 +1,166 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Class: Kvlr::ReportsAsSparkline::CumulatedReport</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +    <div id="classHeader">
       +        <table class="header-table">
       +        <tr class="top-aligned-row">
       +          <td><strong>Class</strong></td>
       +          <td class="class-name-in-header">Kvlr::ReportsAsSparkline::CumulatedReport</td>
       +        </tr>
       +        <tr class="top-aligned-row">
       +            <td><strong>In:</strong></td>
       +            <td>
       +                <a href="../../../files/lib/kvlr/reports_as_sparkline/cumulated_report_rb.html">
       +                lib/kvlr/reports_as_sparkline/cumulated_report.rb
       +                </a>
       +        <br />
       +            </td>
       +        </tr>
       +
       +        <tr class="top-aligned-row">
       +            <td><strong>Parent:</strong></td>
       +            <td>
       +                <a href="Report.html">
       +                Report
       +               </a>
       +            </td>
       +        </tr>
       +        </table>
       +    </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +    <div id="description">
       +      <p>
       +A special report class that cumulates all data (see <a
       +href="Report.html">Kvlr::ReportsAsSparkline::Report</a>)
       +</p>
       +<h4>Examples</h4>
       +<pre>
       + When Kvlr::ReportsAsSparkline::Report returns
       +   [[&lt;DateTime today&gt;, 1], [&lt;DateTime yesterday&gt;, 2]]
       + Kvlr::ReportsAsSparkline::CumulatedReport returns
       +   [[&lt;DateTime today&gt;, 3], [&lt;DateTime yesterday&gt;, 2]]
       +</pre>
       +
       +    </div>
       +
       +
       +   </div>
       +
       +    <div id="method-list">
       +      <h3 class="section-bar">Methods</h3>
       +
       +      <div class="name-list">
       +      <a href="#M000003">run</a>&nbsp;&nbsp;
       +      </div>
       +    </div>
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +    <div id="methods">
       +      <h3 class="section-bar">Public Instance methods</h3>
       +
       +      <div id="method-M000003" class="method-detail">
       +        <a name="M000003"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000003" class="method-signature">
       +          <span class="method-name">run</span><span class="method-args">(options = {})</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p>
       +Runs the report (see <a
       +href="Report.html#M000015">Kvlr::ReportsAsSparkline::Report#run</a>)
       +</p>
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000003-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/cumulated_report.rb, line 16</span>
       +16:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>(<span class="ruby-identifier">options</span> = {})
       +17:         <span class="ruby-identifier">cumulate</span>(<span class="ruby-keyword kw">super</span>)
       +18:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +
       +    </div>
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/Grouping.html b/rdoc/classes/Kvlr/ReportsAsSparkline/Grouping.html
       @@ -0,0 +1,246 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Class: Kvlr::ReportsAsSparkline::Grouping</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +    <div id="classHeader">
       +        <table class="header-table">
       +        <tr class="top-aligned-row">
       +          <td><strong>Class</strong></td>
       +          <td class="class-name-in-header">Kvlr::ReportsAsSparkline::Grouping</td>
       +        </tr>
       +        <tr class="top-aligned-row">
       +            <td><strong>In:</strong></td>
       +            <td>
       +                <a href="../../../files/lib/kvlr/reports_as_sparkline/grouping_rb.html">
       +                lib/kvlr/reports_as_sparkline/grouping.rb
       +                </a>
       +        <br />
       +            </td>
       +        </tr>
       +
       +        <tr class="top-aligned-row">
       +            <td><strong>Parent:</strong></td>
       +            <td>
       +                Object
       +            </td>
       +        </tr>
       +        </table>
       +    </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +    <div id="method-list">
       +      <h3 class="section-bar">Methods</h3>
       +
       +      <div class="name-list">
       +      <a href="#M000007">date_parts_from_db_string</a>&nbsp;&nbsp;
       +      <a href="#M000006">identifier</a>&nbsp;&nbsp;
       +      <a href="#M000005">new</a>&nbsp;&nbsp;
       +      <a href="#M000008">to_sql</a>&nbsp;&nbsp;
       +      </div>
       +    </div>
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +    <div id="methods">
       +      <h3 class="section-bar">Public Class methods</h3>
       +
       +      <div id="method-M000005" class="method-detail">
       +        <a name="M000005"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000005" class="method-signature">
       +          <span class="method-name">new</span><span class="method-args">(grouping)</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000005-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 7</span>
       + 7:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">grouping</span>)
       + 8:         <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;Invalid grouping #{grouping}&quot;</span>) <span class="ruby-keyword kw">unless</span> [<span class="ruby-identifier">:hour</span>, <span class="ruby-identifier">:day</span>, <span class="ruby-identifier">:week</span>, <span class="ruby-identifier">:month</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">grouping</span>)
       + 9:         <span class="ruby-ivar">@identifier</span> = <span class="ruby-identifier">grouping</span>
       +10:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +      <h3 class="section-bar">Public Instance methods</h3>
       +
       +      <div id="method-M000007" class="method-detail">
       +        <a name="M000007"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000007" class="method-signature">
       +          <span class="method-name">date_parts_from_db_string</span><span class="method-args">(db_string)</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000007-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 16</span>
       +16:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">date_parts_from_db_string</span>(<span class="ruby-identifier">db_string</span>)
       +17:         <span class="ruby-keyword kw">if</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter'</span>
       +18:           <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@identifier</span>
       +19:             <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       +20:               <span class="ruby-keyword kw">return</span> (<span class="ruby-identifier">db_string</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">9</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>) <span class="ruby-operator">+</span> [<span class="ruby-identifier">db_string</span>[<span class="ruby-value">11</span><span class="ruby-operator">..</span><span class="ruby-value">12</span>]]).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       +21:             <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       +22:               <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">db_string</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">9</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       +23:             <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       +24:               <span class="ruby-identifier">parts</span> = <span class="ruby-identifier">db_string</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">9</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       +25:               <span class="ruby-identifier">date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">2</span>])
       +26:               <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">date</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">date</span>.<span class="ruby-identifier">cweek</span>]
       +27:             <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       +28:               <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">db_string</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>)[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>].<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       +29:           <span class="ruby-keyword kw">end</span>
       +30:         <span class="ruby-keyword kw">else</span>
       +31:           <span class="ruby-identifier">parts</span> = <span class="ruby-identifier">db_string</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       +32:           <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">parts</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::MysqlAdapter'</span>
       +33:           <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@identifier</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:week</span>
       +34:           <span class="ruby-identifier">parts</span>
       +35:         <span class="ruby-keyword kw">end</span>
       +36:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +      <div id="method-M000006" class="method-detail">
       +        <a name="M000006"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000006" class="method-signature">
       +          <span class="method-name">identifier</span><span class="method-args">()</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000006-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 12</span>
       +12:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">identifier</span>
       +13:         <span class="ruby-ivar">@identifier</span>
       +14:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +      <div id="method-M000008" class="method-detail">
       +        <a name="M000008"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000008" class="method-signature">
       +          <span class="method-name">to_sql</span><span class="method-args">(date_column_name)</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000008-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 38</span>
       +38:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_sql</span>(<span class="ruby-identifier">date_column_name</span>)
       +39:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">case</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>
       +40:           <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::MysqlAdapter'</span>
       +41:             <span class="ruby-identifier">mysql_format</span>(<span class="ruby-identifier">date_column_name</span>)
       +42:           <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::SQLite3Adapter'</span>
       +43:             <span class="ruby-identifier">sqlite_format</span>(<span class="ruby-identifier">date_column_name</span>)
       +44:           <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter'</span>
       +45:             <span class="ruby-identifier">postgresql_format</span>(<span class="ruby-identifier">date_column_name</span>)
       +46:         <span class="ruby-keyword kw">end</span>
       +47:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +
       +    </div>
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/Report.html b/rdoc/classes/Kvlr/ReportsAsSparkline/Report.html
       @@ -0,0 +1,226 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Class: Kvlr::ReportsAsSparkline::Report</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +    <div id="classHeader">
       +        <table class="header-table">
       +        <tr class="top-aligned-row">
       +          <td><strong>Class</strong></td>
       +          <td class="class-name-in-header">Kvlr::ReportsAsSparkline::Report</td>
       +        </tr>
       +        <tr class="top-aligned-row">
       +            <td><strong>In:</strong></td>
       +            <td>
       +                <a href="../../../files/lib/kvlr/reports_as_sparkline/report_rb.html">
       +                lib/kvlr/reports_as_sparkline/report.rb
       +                </a>
       +        <br />
       +            </td>
       +        </tr>
       +
       +        <tr class="top-aligned-row">
       +            <td><strong>Parent:</strong></td>
       +            <td>
       +                Object
       +            </td>
       +        </tr>
       +        </table>
       +    </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +    <div id="method-list">
       +      <h3 class="section-bar">Methods</h3>
       +
       +      <div class="name-list">
       +      <a href="#M000014">new</a>&nbsp;&nbsp;
       +      <a href="#M000015">run</a>&nbsp;&nbsp;
       +      </div>
       +    </div>
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +    <div id="attribute-list">
       +      <h3 class="section-bar">Attributes</h3>
       +
       +      <div class="name-list">
       +        <table>
       +        <tr class="top-aligned-row context-row">
       +          <td class="context-item-name">aggregation</td>
       +          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
       +          <td class="context-item-desc"></td>
       +        </tr>
       +        <tr class="top-aligned-row context-row">
       +          <td class="context-item-name">date_column_name</td>
       +          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
       +          <td class="context-item-desc"></td>
       +        </tr>
       +        <tr class="top-aligned-row context-row">
       +          <td class="context-item-name">grouping</td>
       +          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
       +          <td class="context-item-desc"></td>
       +        </tr>
       +        <tr class="top-aligned-row context-row">
       +          <td class="context-item-name">klass</td>
       +          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
       +          <td class="context-item-desc"></td>
       +        </tr>
       +        <tr class="top-aligned-row context-row">
       +          <td class="context-item-name">name</td>
       +          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
       +          <td class="context-item-desc"></td>
       +        </tr>
       +        <tr class="top-aligned-row context-row">
       +          <td class="context-item-name">value_column_name</td>
       +          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
       +          <td class="context-item-desc"></td>
       +        </tr>
       +        </table>
       +      </div>
       +    </div>
       +      
       +
       +
       +    <!-- if method_list -->
       +    <div id="methods">
       +      <h3 class="section-bar">Public Class methods</h3>
       +
       +      <div id="method-M000014" class="method-detail">
       +        <a name="M000014"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000014" class="method-signature">
       +          <span class="method-name">new</span><span class="method-args">(klass, name, options = {})</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000014-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/report.rb, line 9</span>
       + 9:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">klass</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">options</span> = {})
       +10:         <span class="ruby-identifier">ensure_valid_options</span>(<span class="ruby-identifier">options</span>)
       +11:         <span class="ruby-ivar">@klass</span>             = <span class="ruby-identifier">klass</span>
       +12:         <span class="ruby-ivar">@name</span>              = <span class="ruby-identifier">name</span>
       +13:         <span class="ruby-ivar">@date_column_name</span>  = (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:date_column_name</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'created_at'</span>).<span class="ruby-identifier">to_s</span>
       +14:         <span class="ruby-ivar">@value_column_name</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:value_column_name</span>] <span class="ruby-operator">||</span> (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:aggregation</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">:sum</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'id'</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">name</span>)).<span class="ruby-identifier">to_s</span>
       +15:         <span class="ruby-ivar">@aggregation</span>       = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:aggregation</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">:count</span>
       +16:         <span class="ruby-ivar">@grouping</span>          = <span class="ruby-constant">Grouping</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:grouping</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">:day</span>)
       +17:         <span class="ruby-ivar">@options</span> = {
       +18:           <span class="ruby-identifier">:limit</span>             =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:limit</span>] <span class="ruby-operator">||</span> <span class="ruby-value">100</span>,
       +19:           <span class="ruby-identifier">:conditions</span>        =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:conditions</span>] <span class="ruby-operator">||</span> []
       +20:         }
       +21:         <span class="ruby-ivar">@options</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">options</span>)
       +22:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +      <h3 class="section-bar">Public Instance methods</h3>
       +
       +      <div id="method-M000015" class="method-detail">
       +        <a name="M000015"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000015" class="method-signature">
       +          <span class="method-name">run</span><span class="method-args">(options = {})</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000015-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/report.rb, line 24</span>
       +24:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>(<span class="ruby-identifier">options</span> = {})
       +25:         <span class="ruby-identifier">ensure_valid_options</span>(<span class="ruby-identifier">options</span>, <span class="ruby-identifier">:run</span>)
       +26:         <span class="ruby-identifier">custom_conditions</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">:conditions</span>)
       +27:         <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reverse_merge!</span>(<span class="ruby-ivar">@options</span>)
       +28:         <span class="ruby-constant">ReportCache</span>.<span class="ruby-identifier">process</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:limit</span>], <span class="ruby-identifier">custom_conditions</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">begin_at</span><span class="ruby-operator">|</span>
       +29:           <span class="ruby-identifier">read_data</span>(<span class="ruby-identifier">begin_at</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:conditions</span>])
       +30:         <span class="ruby-keyword kw">end</span>
       +31:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +
       +    </div>
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/ReportCache.html b/rdoc/classes/Kvlr/ReportsAsSparkline/ReportCache.html
       @@ -0,0 +1,166 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Class: Kvlr::ReportsAsSparkline::ReportCache</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +    <div id="classHeader">
       +        <table class="header-table">
       +        <tr class="top-aligned-row">
       +          <td><strong>Class</strong></td>
       +          <td class="class-name-in-header">Kvlr::ReportsAsSparkline::ReportCache</td>
       +        </tr>
       +        <tr class="top-aligned-row">
       +            <td><strong>In:</strong></td>
       +            <td>
       +                <a href="../../../files/lib/kvlr/reports_as_sparkline/report_cache_rb.html">
       +                lib/kvlr/reports_as_sparkline/report_cache.rb
       +                </a>
       +        <br />
       +            </td>
       +        </tr>
       +
       +        <tr class="top-aligned-row">
       +            <td><strong>Parent:</strong></td>
       +            <td>
       +                ActiveRecord::Base
       +            </td>
       +        </tr>
       +        </table>
       +    </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +    <div id="method-list">
       +      <h3 class="section-bar">Methods</h3>
       +
       +      <div class="name-list">
       +      <a href="#M000004">process</a>&nbsp;&nbsp;
       +      </div>
       +    </div>
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +    <div id="methods">
       +      <h3 class="section-bar">Public Class methods</h3>
       +
       +      <div id="method-M000004" class="method-detail">
       +        <a name="M000004"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000004" class="method-signature">
       +          <span class="method-name">process</span><span class="method-args">(report, limit, no_cache = false) {|last_reporting_period_to_read.date_time| ...}</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000004-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/report_cache.rb, line 9</span>
       + 9:       <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">process</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">limit</span>, <span class="ruby-identifier">no_cache</span> = <span class="ruby-keyword kw">false</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
       +10:         <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'A block must be given'</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">block_given?</span>
       +11:         <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">transaction</span> <span class="ruby-keyword kw">do</span>
       +12:           <span class="ruby-identifier">cached_data</span> = []
       +13:           <span class="ruby-identifier">last_reporting_period_to_read</span> = <span class="ruby-constant">ReportingPeriod</span>.<span class="ruby-identifier">first</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">limit</span>)
       +14:           <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">no_cache</span>
       +15:             <span class="ruby-identifier">cached_data</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">find</span>(
       +16:               <span class="ruby-identifier">:all</span>,
       +17:               <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> {
       +18:                 <span class="ruby-identifier">:model_name</span>  =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">klass</span>.<span class="ruby-identifier">to_s</span>,
       +19:                 <span class="ruby-identifier">:report_name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>,
       +20:                 <span class="ruby-identifier">:grouping</span>    =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">to_s</span>,
       +21:                 <span class="ruby-identifier">:aggregation</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">aggregation</span>.<span class="ruby-identifier">to_s</span>
       +22:               },
       +23:               <span class="ruby-identifier">:limit</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">limit</span>,
       +24:               <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'reporting_period DESC'</span>
       +25:             )
       +26:             <span class="ruby-identifier">last_reporting_period_to_read</span> = <span class="ruby-identifier">cached_data</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">reporting_period</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">cached_data</span>.<span class="ruby-identifier">empty?</span>
       +27:           <span class="ruby-keyword kw">end</span>
       +28:           <span class="ruby-identifier">new_data</span> = <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">last_reporting_period_to_read</span>.<span class="ruby-identifier">date_time</span>)
       +29:           <span class="ruby-identifier">prepare_result</span>(<span class="ruby-identifier">new_data</span>, <span class="ruby-identifier">cached_data</span>, <span class="ruby-identifier">last_reporting_period_to_read</span>, <span class="ruby-identifier">report</span>, <span class="ruby-identifier">no_cache</span>)
       +30:         <span class="ruby-keyword kw">end</span>
       +31:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +
       +    </div>
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html b/rdoc/classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html
       @@ -0,0 +1,296 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Class: Kvlr::ReportsAsSparkline::ReportingPeriod</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +    <div id="classHeader">
       +        <table class="header-table">
       +        <tr class="top-aligned-row">
       +          <td><strong>Class</strong></td>
       +          <td class="class-name-in-header">Kvlr::ReportsAsSparkline::ReportingPeriod</td>
       +        </tr>
       +        <tr class="top-aligned-row">
       +            <td><strong>In:</strong></td>
       +            <td>
       +                <a href="../../../files/lib/kvlr/reports_as_sparkline/reporting_period_rb.html">
       +                lib/kvlr/reports_as_sparkline/reporting_period.rb
       +                </a>
       +        <br />
       +            </td>
       +        </tr>
       +
       +        <tr class="top-aligned-row">
       +            <td><strong>Parent:</strong></td>
       +            <td>
       +                Object
       +            </td>
       +        </tr>
       +        </table>
       +    </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +    <div id="method-list">
       +      <h3 class="section-bar">Methods</h3>
       +
       +      <div class="name-list">
       +      <a href="#M000013">==</a>&nbsp;&nbsp;
       +      <a href="#M000010">first</a>&nbsp;&nbsp;
       +      <a href="#M000011">from_db_string</a>&nbsp;&nbsp;
       +      <a href="#M000009">new</a>&nbsp;&nbsp;
       +      <a href="#M000012">previous</a>&nbsp;&nbsp;
       +      </div>
       +    </div>
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +    <div id="attribute-list">
       +      <h3 class="section-bar">Attributes</h3>
       +
       +      <div class="name-list">
       +        <table>
       +        <tr class="top-aligned-row context-row">
       +          <td class="context-item-name">date_time</td>
       +          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
       +          <td class="context-item-desc"></td>
       +        </tr>
       +        <tr class="top-aligned-row context-row">
       +          <td class="context-item-name">grouping</td>
       +          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
       +          <td class="context-item-desc"></td>
       +        </tr>
       +        </table>
       +      </div>
       +    </div>
       +      
       +
       +
       +    <!-- if method_list -->
       +    <div id="methods">
       +      <h3 class="section-bar">Public Class methods</h3>
       +
       +      <div id="method-M000010" class="method-detail">
       +        <a name="M000010"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000010" class="method-signature">
       +          <span class="method-name">first</span><span class="method-args">(grouping, limit)</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000010-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 14</span>
       +14:       <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">first</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">limit</span>)
       +15:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">identifier</span>
       +16:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       +17:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">hours</span>)
       +18:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       +19:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">days</span>)
       +20:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       +21:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">weeks</span>)
       +22:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       +23:             <span class="ruby-identifier">date</span> = <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">months</span>
       +24:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">date</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">date</span>.<span class="ruby-identifier">month</span>, <span class="ruby-value">1</span>))
       +25:         <span class="ruby-keyword kw">end</span>
       +26:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +      <div id="method-M000011" class="method-detail">
       +        <a name="M000011"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000011" class="method-signature">
       +          <span class="method-name">from_db_string</span><span class="method-args">(grouping, db_string)</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000011-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 28</span>
       +28:       <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">from_db_string</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">db_string</span>)
       +29:         <span class="ruby-identifier">parts</span> = <span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">date_parts_from_db_string</span>(<span class="ruby-identifier">db_string</span>)
       +30:         <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">identifier</span>
       +31:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       +32:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">2</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">3</span>], <span class="ruby-value">0</span>, <span class="ruby-value">0</span>))
       +33:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       +34:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">2</span>]))
       +35:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       +36:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>]))
       +37:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       +38:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>], <span class="ruby-value">1</span>))
       +39:         <span class="ruby-keyword kw">end</span>
       +40:         <span class="ruby-identifier">result</span>
       +41:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +      <div id="method-M000009" class="method-detail">
       +        <a name="M000009"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000009" class="method-signature">
       +          <span class="method-name">new</span><span class="method-args">(grouping, date_time = DateTime.now)</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000009-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 9</span>
       + 9:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">date_time</span> = <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span>)
       +10:         <span class="ruby-ivar">@grouping</span>  = <span class="ruby-identifier">grouping</span>
       +11:         <span class="ruby-ivar">@date_time</span> = <span class="ruby-identifier">parse_date_time</span>(<span class="ruby-identifier">date_time</span>)
       +12:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +      <h3 class="section-bar">Public Instance methods</h3>
       +
       +      <div id="method-M000013" class="method-detail">
       +        <a name="M000013"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000013" class="method-signature">
       +          <span class="method-name">==</span><span class="method-args">(other)</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000013-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 56</span>
       +56:       <span class="ruby-keyword kw">def</span> <span class="ruby-operator">==</span>(<span class="ruby-identifier">other</span>)
       +57:         <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Kvlr</span><span class="ruby-operator">::</span><span class="ruby-constant">ReportsAsSparkline</span><span class="ruby-operator">::</span><span class="ruby-constant">ReportingPeriod</span>
       +58:           <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@date_time</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">date_time</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@grouping</span>.<span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">to_s</span>
       +59:         <span class="ruby-keyword kw">end</span>
       +60:         <span class="ruby-keyword kw">false</span>
       +61:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +      <div id="method-M000012" class="method-detail">
       +        <a name="M000012"></a>
       +
       +        <div class="method-heading">
       +          <a href="#M000012" class="method-signature">
       +          <span class="method-name">previous</span><span class="method-args">()</span>
       +          </a>
       +        </div>
       +      
       +        <div class="method-description">
       +          <p><a class="source-toggle" href="#"
       +            onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000012-source">
       +<pre>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 43</span>
       +43:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">previous</span>
       +44:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@grouping</span>.<span class="ruby-identifier">identifier</span>
       +45:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       +46:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">hour</span>)
       +47:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       +48:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">day</span>)
       +49:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       +50:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">week</span>)
       +51:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       +52:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">month</span>)
       +53:         <span class="ruby-keyword kw">end</span>
       +54:       <span class="ruby-keyword kw">end</span>
       +</pre>
       +          </div>
       +        </div>
       +      </div>
       +
       +
       +    </div>
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/created.rid b/rdoc/created.rid
       @@ -0,0 +1 @@
       +Thu, 11 Dec 2008 19:24:20 +0100
 (DIR) diff --git a/rdoc/files/README_rdoc.html b/rdoc/files/README_rdoc.html
       @@ -0,0 +1,167 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>File: README.rdoc</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +  <div id="fileHeader">
       +    <h1>README.rdoc</h1>
       +    <table class="header-table">
       +    <tr class="top-aligned-row">
       +      <td><strong>Path:</strong></td>
       +      <td>README.rdoc
       +      </td>
       +    </tr>
       +    <tr class="top-aligned-row">
       +      <td><strong>Last Update:</strong></td>
       +      <td>Thu Dec 04 14:58:12 +0100 2008</td>
       +    </tr>
       +    </table>
       +  </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +    <div id="description">
       +      <h1>ReportsAsSparkline</h1>
       +<p>
       +ReportsAsSparkline enables you to generate reports and sparklines from your
       +database with very little effort.
       +</p>
       +<p>
       +### Example
       +</p>
       +<p>
       +This shows the first basic usage. Consider the following user model,
       +including <b>created_at</b> and <b>activated_at</b> timestamp fields.
       +</p>
       +<pre>
       +    class User &lt; ActiveRecord::Base
       +      report_as_sparkline :registrations
       +      report_as_sparkline :activations, :date_column =&gt; :activated_at
       +      report_as_sparkline :total_users, :cumulate =&gt; :registrations
       +    end
       +</pre>
       +<p>
       +Using <b>report_as_sparkline</b> like this will add the following class
       +methods to your User model:
       +</p>
       +<pre>
       +    # Generates a sparkline from the google chart api
       +    # so you see the registrations per day
       +    User.registrations_graph
       +
       +    # Gets an array of the data to use in numerical display
       +    User.registrations_report
       +</pre>
       +<p>
       +### Implemented features
       +</p>
       +<ul>
       +<li>cumulate option that depends on other report
       +
       +</li>
       +</ul>
       +<h2>TODOs/ future plans</h2>
       +<ul>
       +<li>support for Oracle and DB2 (and others?) missing
       +
       +</li>
       +<li>Implement data ranges in arguments
       +
       +</li>
       +<li>Limit number of data points to maximum that the google chart api allows
       +
       +</li>
       +<li>Make graph styling configurable
       +
       +</li>
       +</ul>
       +<p>
       +If you want ot suggest any new features or report bugs, do so at <a
       +href="http://simplabs.lighthouseapp.com/projects/21060-reportsassparkline/overview">simplabs.lighthouseapp.com/projects/21060-reportsassparkline/overview</a>.
       +</p>
       +<p>
       +&amp;copy; 2008 Martin Kavalar, Marco Otte-Witte (<a
       +href="http://simplabs.com/#projects">simplabs.com/#projects</a>), released
       +under the MIT license
       +</p>
       +
       +    </div>
       +
       +
       +   </div>
       +
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/files/lib/kvlr/core_extensions/date_time_rb.html b/rdoc/files/lib/kvlr/core_extensions/date_time_rb.html
       @@ -0,0 +1,101 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>File: date_time.rb</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +  <div id="fileHeader">
       +    <h1>date_time.rb</h1>
       +    <table class="header-table">
       +    <tr class="top-aligned-row">
       +      <td><strong>Path:</strong></td>
       +      <td>lib/kvlr/core_extensions/date_time.rb
       +      </td>
       +    </tr>
       +    <tr class="top-aligned-row">
       +      <td><strong>Last Update:</strong></td>
       +      <td>Thu Dec 11 19:09:52 +0100 2008</td>
       +    </tr>
       +    </table>
       +  </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/asset_tag_helper_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/asset_tag_helper_rb.html
       @@ -0,0 +1,101 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>File: asset_tag_helper.rb</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +  <div id="fileHeader">
       +    <h1>asset_tag_helper.rb</h1>
       +    <table class="header-table">
       +    <tr class="top-aligned-row">
       +      <td><strong>Path:</strong></td>
       +      <td>lib/kvlr/reports_as_sparkline/asset_tag_helper.rb
       +      </td>
       +    </tr>
       +    <tr class="top-aligned-row">
       +      <td><strong>Last Update:</strong></td>
       +      <td>Thu Dec 11 19:17:16 +0100 2008</td>
       +    </tr>
       +    </table>
       +  </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/cumulated_report_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/cumulated_report_rb.html
       @@ -0,0 +1,101 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>File: cumulated_report.rb</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +  <div id="fileHeader">
       +    <h1>cumulated_report.rb</h1>
       +    <table class="header-table">
       +    <tr class="top-aligned-row">
       +      <td><strong>Path:</strong></td>
       +      <td>lib/kvlr/reports_as_sparkline/cumulated_report.rb
       +      </td>
       +    </tr>
       +    <tr class="top-aligned-row">
       +      <td><strong>Last Update:</strong></td>
       +      <td>Thu Dec 11 19:24:13 +0100 2008</td>
       +    </tr>
       +    </table>
       +  </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/grouping_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/grouping_rb.html
       @@ -0,0 +1,101 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>File: grouping.rb</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +  <div id="fileHeader">
       +    <h1>grouping.rb</h1>
       +    <table class="header-table">
       +    <tr class="top-aligned-row">
       +      <td><strong>Path:</strong></td>
       +      <td>lib/kvlr/reports_as_sparkline/grouping.rb
       +      </td>
       +    </tr>
       +    <tr class="top-aligned-row">
       +      <td><strong>Last Update:</strong></td>
       +      <td>Thu Dec 11 18:45:43 +0100 2008</td>
       +    </tr>
       +    </table>
       +  </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/report_cache_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/report_cache_rb.html
       @@ -0,0 +1,101 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>File: report_cache.rb</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +  <div id="fileHeader">
       +    <h1>report_cache.rb</h1>
       +    <table class="header-table">
       +    <tr class="top-aligned-row">
       +      <td><strong>Path:</strong></td>
       +      <td>lib/kvlr/reports_as_sparkline/report_cache.rb
       +      </td>
       +    </tr>
       +    <tr class="top-aligned-row">
       +      <td><strong>Last Update:</strong></td>
       +      <td>Thu Dec 11 17:45:37 +0100 2008</td>
       +    </tr>
       +    </table>
       +  </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/report_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/report_rb.html
       @@ -0,0 +1,101 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>File: report.rb</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +  <div id="fileHeader">
       +    <h1>report.rb</h1>
       +    <table class="header-table">
       +    <tr class="top-aligned-row">
       +      <td><strong>Path:</strong></td>
       +      <td>lib/kvlr/reports_as_sparkline/report.rb
       +      </td>
       +    </tr>
       +    <tr class="top-aligned-row">
       +      <td><strong>Last Update:</strong></td>
       +      <td>Thu Dec 11 19:19:10 +0100 2008</td>
       +    </tr>
       +    </table>
       +  </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/reporting_period_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/reporting_period_rb.html
       @@ -0,0 +1,101 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>File: reporting_period.rb</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +  <div id="fileHeader">
       +    <h1>reporting_period.rb</h1>
       +    <table class="header-table">
       +    <tr class="top-aligned-row">
       +      <td><strong>Path:</strong></td>
       +      <td>lib/kvlr/reports_as_sparkline/reporting_period.rb
       +      </td>
       +    </tr>
       +    <tr class="top-aligned-row">
       +      <td><strong>Last Update:</strong></td>
       +      <td>Wed Dec 10 15:35:51 +0100 2008</td>
       +    </tr>
       +    </table>
       +  </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline_rb.html
       @@ -0,0 +1,101 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>File: reports_as_sparkline.rb</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       +  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       +  <script type="text/javascript">
       +  // <![CDATA[
       +
       +  function popupCode( url ) {
       +    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       +  }
       +
       +  function toggleCode( id ) {
       +    if ( document.getElementById )
       +      elem = document.getElementById( id );
       +    else if ( document.all )
       +      elem = eval( "document.all." + id );
       +    else
       +      return false;
       +
       +    elemStyle = elem.style;
       +    
       +    if ( elemStyle.display != "block" ) {
       +      elemStyle.display = "block"
       +    } else {
       +      elemStyle.display = "none"
       +    }
       +
       +    return true;
       +  }
       +  
       +  // Make codeblocks hidden by default
       +  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       +  
       +  // ]]>
       +  </script>
       +
       +</head>
       +<body>
       +
       +
       +
       +  <div id="fileHeader">
       +    <h1>reports_as_sparkline.rb</h1>
       +    <table class="header-table">
       +    <tr class="top-aligned-row">
       +      <td><strong>Path:</strong></td>
       +      <td>lib/kvlr/reports_as_sparkline.rb
       +      </td>
       +    </tr>
       +    <tr class="top-aligned-row">
       +      <td><strong>Last Update:</strong></td>
       +      <td>Thu Dec 11 19:07:54 +0100 2008</td>
       +    </tr>
       +    </table>
       +  </div>
       +  <!-- banner header -->
       +
       +  <div id="bodyContent">
       +
       +
       +
       +  <div id="contextContent">
       +
       +
       +
       +   </div>
       +
       +
       +  </div>
       +
       +
       +    <!-- if includes -->
       +
       +    <div id="section">
       +
       +
       +
       +
       +
       +      
       +
       +
       +    <!-- if method_list -->
       +
       +
       +  </div>
       +
       +
       +<div id="validator-badges">
       +  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       +</div>
       +
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/fr_class_index.html b/rdoc/fr_class_index.html
       @@ -0,0 +1,34 @@
       +
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<!--
       +
       +    Classes
       +
       +  -->
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Classes</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
       +  <base target="docwin" />
       +</head>
       +<body>
       +<div id="index">
       +  <h1 class="section-bar">Classes</h1>
       +  <div id="index-entries">
       +    <a href="classes/Kvlr/CoreExtensions/DateTime.html">Kvlr::CoreExtensions::DateTime</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/AssetTagHelper.html">Kvlr::ReportsAsSparkline::AssetTagHelper</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ClassMethods.html">Kvlr::ReportsAsSparkline::ClassMethods</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/CumulatedReport.html">Kvlr::ReportsAsSparkline::CumulatedReport</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html">Kvlr::ReportsAsSparkline::Grouping</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Report.html">Kvlr::ReportsAsSparkline::Report</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportCache.html">Kvlr::ReportsAsSparkline::ReportCache</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html">Kvlr::ReportsAsSparkline::ReportingPeriod</a><br />
       +  </div>
       +</div>
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/fr_file_index.html b/rdoc/fr_file_index.html
       @@ -0,0 +1,35 @@
       +
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<!--
       +
       +    Files
       +
       +  -->
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Files</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
       +  <base target="docwin" />
       +</head>
       +<body>
       +<div id="index">
       +  <h1 class="section-bar">Files</h1>
       +  <div id="index-entries">
       +    <a href="files/README_rdoc.html">README.rdoc</a><br />
       +    <a href="files/lib/kvlr/core_extensions/date_time_rb.html">lib/kvlr/core_extensions/date_time.rb</a><br />
       +    <a href="files/lib/kvlr/reports_as_sparkline_rb.html">lib/kvlr/reports_as_sparkline.rb</a><br />
       +    <a href="files/lib/kvlr/reports_as_sparkline/asset_tag_helper_rb.html">lib/kvlr/reports_as_sparkline/asset_tag_helper.rb</a><br />
       +    <a href="files/lib/kvlr/reports_as_sparkline/cumulated_report_rb.html">lib/kvlr/reports_as_sparkline/cumulated_report.rb</a><br />
       +    <a href="files/lib/kvlr/reports_as_sparkline/grouping_rb.html">lib/kvlr/reports_as_sparkline/grouping.rb</a><br />
       +    <a href="files/lib/kvlr/reports_as_sparkline/report_rb.html">lib/kvlr/reports_as_sparkline/report.rb</a><br />
       +    <a href="files/lib/kvlr/reports_as_sparkline/report_cache_rb.html">lib/kvlr/reports_as_sparkline/report_cache.rb</a><br />
       +    <a href="files/lib/kvlr/reports_as_sparkline/reporting_period_rb.html">lib/kvlr/reports_as_sparkline/reporting_period.rb</a><br />
       +  </div>
       +</div>
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/fr_method_index.html b/rdoc/fr_method_index.html
       @@ -0,0 +1,42 @@
       +
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       +
       +<!--
       +
       +    Methods
       +
       +  -->
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>Methods</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +  <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
       +  <base target="docwin" />
       +</head>
       +<body>
       +<div id="index">
       +  <h1 class="section-bar">Methods</h1>
       +  <div id="index-entries">
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000013">== (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000007">date_parts_from_db_string (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000010">first (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000011">from_db_string (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000006">identifier (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000005">new (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Report.html#M000014">new (Kvlr::ReportsAsSparkline::Report)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000009">new (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000012">previous (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportCache.html#M000004">process (Kvlr::ReportsAsSparkline::ReportCache)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ClassMethods.html#M000001">report_as_sparkline (Kvlr::ReportsAsSparkline::ClassMethods)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Report.html#M000015">run (Kvlr::ReportsAsSparkline::Report)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/CumulatedReport.html#M000003">run (Kvlr::ReportsAsSparkline::CumulatedReport)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/AssetTagHelper.html#M000002">sparkline_tag (Kvlr::ReportsAsSparkline::AssetTagHelper)</a><br />
       +    <a href="classes/Kvlr/CoreExtensions/DateTime.html#M000016">to_reporting_period (Kvlr::CoreExtensions::DateTime)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000008">to_sql (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       +  </div>
       +</div>
       +</body>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/index.html b/rdoc/index.html
       @@ -0,0 +1,24 @@
       +<?xml version="1.0" encoding="iso-8859-1"?>
       +<!DOCTYPE html 
       +     PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
       +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
       +
       +<!--
       +
       +    ReportsAsSparkline
       +
       +  -->
       +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       +<head>
       +  <title>ReportsAsSparkline</title>
       +  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       +</head>
       +<frameset rows="20%, 80%">
       +    <frameset cols="25%,35%,45%">
       +        <frame src="fr_file_index.html"   title="Files" name="Files" />
       +        <frame src="fr_class_index.html"  name="Classes" />
       +        <frame src="fr_method_index.html" name="Methods" />
       +    </frameset>
       +    <frame src="files/README_rdoc.html" name="docwin" />
       +</frameset>
       +</html>
       +\ No newline at end of file
 (DIR) diff --git a/rdoc/rdoc-style.css b/rdoc/rdoc-style.css
       @@ -0,0 +1,208 @@
       +
       +body {
       +    font-family: Verdana,Arial,Helvetica,sans-serif;
       +    font-size:   90%;
       +    margin: 0;
       +    margin-left: 40px;
       +    padding: 0;
       +    background: white;
       +}
       +
       +h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
       +h1 { font-size: 150%; }
       +h2,h3,h4 { margin-top: 1em; }
       +
       +a { background: #eef; color: #039; text-decoration: none; }
       +a:hover { background: #039; color: #eef; }
       +
       +/* Override the base stylesheet's Anchor inside a table cell */
       +td > a {
       +  background: transparent;
       +  color: #039;
       +  text-decoration: none;
       +}
       +
       +/* and inside a section title */
       +.section-title > a {
       +  background: transparent;
       +  color: #eee;
       +  text-decoration: none;
       +}
       +
       +/* === Structural elements =================================== */
       +
       +div#index {
       +    margin: 0;
       +    margin-left: -40px;
       +    padding: 0;
       +    font-size: 90%;
       +}
       +
       +
       +div#index a {
       +    margin-left: 0.7em;
       +}
       +
       +div#index .section-bar {
       +   margin-left: 0px;
       +   padding-left: 0.7em;
       +   background: #ccc;
       +   font-size: small;
       +}
       +
       +
       +div#classHeader, div#fileHeader {
       +    width: auto;
       +    color: white;
       +    padding: 0.5em 1.5em 0.5em 1.5em;
       +    margin: 0;
       +    margin-left: -40px;
       +    border-bottom: 3px solid #006;
       +}
       +
       +div#classHeader a, div#fileHeader a {
       +    background: inherit;
       +    color: white;
       +}
       +
       +div#classHeader td, div#fileHeader td {
       +    background: inherit;
       +    color: white;
       +}
       +
       +
       +div#fileHeader {
       +    background: #057;
       +}
       +
       +div#classHeader {
       +    background: #048;
       +}
       +
       +
       +.class-name-in-header {
       +  font-size:  180%;
       +  font-weight: bold;
       +}
       +
       +
       +div#bodyContent {
       +    padding: 0 1.5em 0 1.5em;
       +}
       +
       +div#description {
       +    padding: 0.5em 1.5em;
       +    background: #efefef;
       +    border: 1px dotted #999;
       +}
       +
       +div#description h1,h2,h3,h4,h5,h6 {
       +    color: #125;;
       +    background: transparent;
       +}
       +
       +div#validator-badges {
       +    text-align: center;
       +}
       +div#validator-badges img { border: 0; }
       +
       +div#copyright {
       +    color: #333;
       +    background: #efefef;
       +    font: 0.75em sans-serif;
       +    margin-top: 5em;
       +    margin-bottom: 0;
       +    padding: 0.5em 2em;
       +}
       +
       +
       +/* === Classes =================================== */
       +
       +table.header-table {
       +    color: white;
       +    font-size: small;
       +}
       +
       +.type-note {
       +    font-size: small;
       +    color: #DEDEDE;
       +}
       +
       +.xxsection-bar {
       +    background: #eee;
       +    color: #333;
       +    padding: 3px;
       +}
       +
       +.section-bar {
       +   color: #333;
       +   border-bottom: 1px solid #999;
       +    margin-left: -20px;
       +}
       +
       +
       +.section-title {
       +    background: #79a;
       +    color: #eee;
       +    padding: 3px;
       +    margin-top: 2em;
       +    margin-left: -30px;
       +    border: 1px solid #999;
       +}
       +
       +.top-aligned-row {  vertical-align: top }
       +.bottom-aligned-row { vertical-align: bottom }
       +
       +/* --- Context section classes ----------------------- */
       +
       +.context-row { }
       +.context-item-name { font-family: monospace; font-weight: bold; color: black; }
       +.context-item-value { font-size: small; color: #448; }
       +.context-item-desc { color: #333; padding-left: 2em; }
       +
       +/* --- Method classes -------------------------- */
       +.method-detail {
       +    background: #efefef;
       +    padding: 0;
       +    margin-top: 0.5em;
       +    margin-bottom: 1em;
       +    border: 1px dotted #ccc;
       +}
       +.method-heading {
       +  color: black;
       +  background: #ccc;
       +  border-bottom: 1px solid #666;
       +  padding: 0.2em 0.5em 0 0.5em;
       +}
       +.method-signature { color: black; background: inherit; }
       +.method-name { font-weight: bold; }
       +.method-args { font-style: italic; }
       +.method-description { padding: 0 0.5em 0 0.5em; }
       +
       +/* --- Source code sections -------------------- */
       +
       +a.source-toggle { font-size: 90%; }
       +div.method-source-code {
       +    background: #262626;
       +    color: #ffdead;
       +    margin: 1em;
       +    padding: 0.5em;
       +    border: 1px dashed #999;
       +    overflow: hidden;
       +}
       +
       +div.method-source-code pre { color: #ffdead; overflow: hidden; }
       +
       +/* --- Ruby keyword styles --------------------- */
       +
       +.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
       +
       +.ruby-constant  { color: #7fffd4; background: transparent; }
       +.ruby-keyword { color: #00ffff; background: transparent; }
       +.ruby-ivar    { color: #eedd82; background: transparent; }
       +.ruby-operator  { color: #00ffee; background: transparent; }
       +.ruby-identifier { color: #ffdead; background: transparent; }
       +.ruby-node    { color: #ffa07a; background: transparent; }
       +.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
       +.ruby-regexp  { color: #ffa07a; background: transparent; }
       +.ruby-value   { color: #7fffd4; background: transparent; }
       +\ No newline at end of file