#
# time.rb
#
-
module Puppet::Parser::Functions
- newfunction(:time, :type => :rvalue, :doc => <<-EOS
-This function will return the current time since epoch as an integer.
+ newfunction(:time, :type => :rvalue, :doc => <<-DOC
+ @summary
+ This function will return the current time since epoch as an integer.
+
+ @return
+ the current time since epoch as an integer.
+
+ @example **Usage**
+
+ time()
+ Will return something like: 1311972653
-*Examples:*
+ > *Note:* that since Puppet 4.8.0 the Puppet language has the data types Timestamp (a point in time) and
+ Timespan (a duration). The following example is equivalent to calling time() without
+ any arguments:
- time()
+ ```Timestamp()```
-Will return something like: 1311972653
- EOS
- ) do |arguments|
+ DOC
+ ) do |arguments|
# The Time Zone argument is optional ...
time_zone = arguments[0] if arguments[0]
- if (arguments.size != 0) and (arguments.size != 1) then
- raise(Puppet::ParseError, "time(): Wrong number of arguments "+
- "given #{arguments.size} for 0 or 1")
+ if !arguments.empty? && (arguments.size != 1)
+ raise(Puppet::ParseError, "time(): Wrong number of arguments given #{arguments.size} for 0 or 1")
end
time = Time.new
# There is probably a better way to handle Time Zone ...
- if time_zone and not time_zone.empty?
+ if time_zone && !time_zone.empty?
original_zone = ENV['TZ']
local_time = time.clone
ENV['TZ'] = time_zone
- time = local_time.localtime
+ result = local_time.localtime.strftime('%s')
ENV['TZ'] = original_zone
+ else
+ result = time.localtime.strftime('%s')
end
# Calling Time#to_i on a receiver changes it. Trust me I am the Doctor.
- result = time.strftime('%s')
result = result.to_i
return result