Module: Haml::Version
Overview
Handles Haml version-reporting. Haml not only reports the standard three version numbers, but its Git revision hash as well, if it was installed from Git.
Constant Summary
Constants included from Util
Instance Method Summary collapse
-
#version ⇒ Hash<Symbol, String/Fixnum>
Returns a hash representing the version of Haml.
Methods included from Util
#check_encoding, #def_static_method, #enum_with_index, #has?, #map_hash, #map_keys, #map_vals, #merge_adjacent_strings, #powerset, #ruby1_8?, #scope, #static_method_name, #to_hash
Instance Method Details
#version ⇒ Hash<Symbol, String/Fixnum>
Returns a hash representing the version of Haml.
The :major
, :minor
, and :teeny
keys have their respective numbers as Fixnums.
The :name
key has the name of the version.
The :string
key contains a human-readable string representation of the version.
The :number
key is the major, minor, and teeny keys separated by periods.
If Haml is checked out from Git, the :rev
key will have the revision hash.
For example:
{
:string => "2.1.0.9616393",
:rev => "9616393b8924ef36639c7e82aa88a51a24d16949",
:number => "2.1.0",
:major => 2, :minor => 1, :teeny => 0
}
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/haml/version.rb', line 27
def version
return @@version if defined?(@@version)
numbers = File.read(scope('VERSION')).strip.split('.').map { |n| n.to_i }
name = File.read(scope('VERSION_NAME')).strip
@@version = {
:major => numbers[0],
:minor => numbers[1],
:teeny => numbers[2],
:name => name
}
@@version[:number] = [:major, :minor, :teeny].map { |comp| @@version[comp] }.compact.join('.')
@@version[:string] = @@version[:number].dup
if File.exists?(scope('REVISION'))
rev = File.read(scope('REVISION')).strip
rev = nil if rev !~ /^([a-f0-9]+|\(.*\))$/
end
if (rev.nil? || rev == '(unknown)') && 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
unless rev[0] == ?(
@@version[:string] << "." << rev[0...7]
end
@@version[:string] << " (#{name})"
end
@@version
end
|