text: 
  nv.models.sparkline = function() {
    "use strict";
    //============================================================
    // Public Variables with Default Settings
    //------------------------------------------------------------
  
    var margin = {top: 2, right: 0, bottom: 2, left: 0}
      , width = 400
      , height = 32
      , animate = true
      , x = d3.scale.linear()
      , y = d3.scale.linear()
      , getX = function(d) { return d.x }
      , getY = function(d) { return d.y }
      , color = nv.utils.getColor(['#000'])
      , xDomain
      , yDomain
      , xRange
      , yRange
      ;
  
    //============================================================
  
  
    function chart(selection) {
      selection.each(function(data) {
        var availableWidth = width - margin.left - margin.right,
            availableHeight = height - margin.top - margin.bottom,
            container = d3.select(this);
  
  
        //------------------------------------------------------------
        // Setup Scales
  
        x   .domain(xDomain || d3.extent(data, getX ))
            .range(xRange || [0, availableWidth]);
  
        y   .domain(yDomain || d3.extent(data, getY ))
            .range(yRange || [availableHeight, 0]);
  
        //------------------------------------------------------------
  
  
        //------------------------------------------------------------
        // Setup containers and skeleton of chart
  
        var wrap = container.selectAll('g.nv-wrap.nv-sparkline').data([data]);
        var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-sparkline');
        var gEnter = wrapEnter.append('g');
        var g = wrap.select('g');
  
        wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
  
        //------------------------------------------------------------
  
  
        var paths = wrap.selectAll('path')
            .data(function(d) { return [d] });
        paths.enter().append('path');
        paths.exit().remove();
        paths
            .style('stroke', function(d,i) { return d.color || color(d, i) })
            .attr('d', d3.svg.line()
              .x(function(d,i) { return x(getX(d,i)) })
              .y(function(d,i) { return y(getY(d,i)) })
            );
  
  
        // TODO: Add CURRENT data point (Need Min, Mac, Current / Most recent)
        var points = wrap.selectAll('circle.nv-point')
            .data(function(data) {
                var yValues = data.map(function(d, i) { return getY(d,i); });
                function pointIndex(index) {
                    if (index != -1) {
                    var result = data[index];
                        result.pointIndex = index;
                        return result;
                    } else {
                        return null;
                    }
                }
                var maxPoint = pointIndex(yValues.lastIndexOf(y.domain()[1])),
                    minPoint = pointIndex(yValues.indexOf(y.domain()[0])),
                    currentPoint = pointIndex(yValues.length - 1);
                return [minPoint, maxPoint, currentPoint].filter(function (d) {return d != null;});
            });
        points.enter().append('circle');
        points.exit().remove();
        points
            .attr('cx', function(d,i) { return x(getX(d,d.pointIndex)) })
            .attr('cy', function(d,i) { return y(getY(d,d.pointIndex)) })
            .attr('r', 2)
            .attr('class', function(d,i) {
              return getX(d, d.pointIndex) == x.domain()[1] ? 'nv-point nv-currentValue' :
                     getY(d, d.pointIndex) == y.domain()[0] ? 'nv-point nv-minValue' : 'nv-point nv-maxValue'
            });
      });
  
      return chart;
    }
  
  
    //============================================================
    // Expose Public Variables
    //------------------------------------------------------------
    chart.options = nv.utils.optionsFunc.bind(chart);
  
    chart.margin = function(_) {
      if (!arguments.length) return margin;
      margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
      margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
      margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
      margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
      return chart;
    };
  
    chart.width = function(_) {
      if (!arguments.length) return width;
      width = _;
      return chart;
    };
  
    chart.height = function(_) {
      if (!arguments.length) return height;
      height = _;
      return chart;
    };
  
    chart.x = function(_) {
      if (!arguments.length) return getX;
      getX = d3.functor(_);
      return chart;
    };
  
    chart.y = function(_) {
      if (!arguments.length) return getY;
      getY = d3.functor(_);
      return chart;
    };
  
    chart.xScale = function(_) {
      if (!arguments.length) return x;
      x = _;
      return chart;
    };
  
    chart.yScale = function(_) {
      if (!arguments.length) return y;
      y = _;
      return chart;
    };
  
    chart.xDomain = function(_) {
      if (!arguments.length) return xDomain;
      xDomain = _;
      return chart;
    };
  
    chart.yDomain = function(_) {
      if (!arguments.length) return yDomain;
      yDomain = _;
      return chart;
    };
  
    chart.xRange = function(_) {
      if (!arguments.length) return xRange;
      xRange = _;
      return chart;
    };
  
    chart.yRange = function(_) {
      if (!arguments.length) return yRange;
      yRange = _;
      return chart;
    };
  
    chart.animate = function(_) {
      if (!arguments.length) return animate;
      animate = _;
      return chart;
    };
  
    chart.color = function(_) {
      if (!arguments.length) return color;
      color = nv.utils.getColor(_);
      return chart;
    };
  
    //============================================================
  
  
    return chart;
  }
  