module Haml

def self.version

the :rev key will have the revision hash.
If Haml is checked out from Git,
The :string key contains a human-readable string representation of the version.
The :major, :minor, and :teeny keys have their respective numbers.
Returns a hash representing the version of Haml.
def self.version
  return @@version if defined?(@@version)
  numbers = File.read(scope('VERSION')).strip.split('.').map { |n| n.to_i }
  @@version = {
    :major => numbers[0],
    :minor => numbers[1],
    :teeny => numbers[2]
  }
  @@version[:string] = [:major, :minor, :teeny].map { |comp| @@version[comp] }.compact.join('.')
  if File.exists?(scope('REVISION'))
    rev = File.read(scope('REVISION')).strip
    rev = nil if rev !~ /[a-f0-9]+/
  end
  if rev.nil? && File.exists?(scope('.git/HEAD'))
    rev = File.read(scope('.git/HEAD')).strip
    if rev =~ /^ref: (.*)$/
      rev = File.read(scope(".git/#{$1}")).strip
    end
  end
  if rev
    @@version[:rev] = rev
    @@version[:string] << "." << rev[0...7]
  end
  @@version
end