Module: RplLang::Words::TimeAndDate

Includes:
Types
Included in:
Rpl
Defined in:
lib/rpl/words/time-date.rb

Instance Method Summary collapse

Methods included from Types

new_object

Instance Method Details

#populate_dictionaryObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rpl/words/time-date.rb', line 10

def populate_dictionary
  super

  category = 'Time and date'

  @dictionary.add_word!( ['time'],
                         category,
                         '( -- t ) push current time',
                         proc do
                           @stack << Types.new_object( RplString, "\"#{DateTime.now.iso8601.to_s.split('T').last[0..7]}\"" )
                         end )
  @dictionary.add_word!( ['date'],
                         category,
                         '( -- d ) push current date',
                         proc do
                           @stack << Types.new_object( RplString, "\"#{Date.today.iso8601}\"" )
                         end )
  @dictionary.add_word!( ['ticks'],
                         category,
                         '( -- t ) push datetime as ticks',
                         proc do
                           ticks_since_epoch = Time.utc( 1, 1, 1 ).to_i * 10_000_000
                           now = Time.now
                           @stack << Types.new_object( RplNumeric, now.to_i * 10_000_000 + now.nsec / 100 - ticks_since_epoch )
                         end )
end