     inspect
   end
 
+  % Determine whether or the not the Date object occurs within a leap year
   def leap_year?
     Erlang.calendar.is_leap_year(@year)
   end
 
+  % Return tomorrow's date, relative to the Date object
   def tomorrow
     gregorian_addition(1)
   end
 
+  % Return yesterdays's date, relative to the Date object
   def yesterday
     gregorian_addition(-1)
   end
 
+  % Subtract the number of *days* from the Date object.
   def -(days)
     gregorian_addition(-days)
   end
 
+  % Add the number of *days* from the Date object.
   def +(days)
     gregorian_addition(days)
   end
 
+  % Converts the Date object to a tuple, with year, month, and day
   def to_tuple
    {@year, @month, @day}
   end

% elixir: cache

object Date
  attr_reader ['day, 'month, 'year]

  module Mixin
    def today
      Date.new(Erlang.date)
    end

    def tomorrow
      Date.today.tomorrow
    end

    def yesterday
      Date.today.yesterday
    end

    def days_in_month(date)
      if [1,3,5,7,8,10,12].member?(date.month)
        31

    @('year: year, 'month: month, 'day: day)
  end

  % Return a string representation of the Date object.
  %
  % ## Example
  %
  %     date = Date.new(2012, 12, 21)
  %     date.inspect % => 2012-12-21
  %
  def inspect
    "#{@year}-#{convert_to_double_digit(@month)}-#{convert_to_double_digit(@day)}"
  end
