Class: Chronic::Scalar

Inherits:
Tag
  • Object
show all
Defined in:
lib/chronic/tags/scalar.rb

Constant Summary collapse

DAY_PORTIONS =
%w( am pm morning afternoon evening night )

Instance Attribute Summary

Attributes inherited from Tag

#type

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Tag

#initialize, #start=

Constructor Details

This class inherits a constructor from Chronic::Tag

Class Method Details

.scan(tokens, options) ⇒ Object

Scan an Array of Token objects and apply any necessary Scalar tags to each token.

tokens - An Array of tokens to scan. options - The Hash of options specified in Chronic::parse.

Returns an Array of tokens.


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/chronic/tags/scalar.rb', line 12

def self.scan(tokens, options)
  tokens.each_index do |i|
    token = tokens[i]
    post_token = tokens[i + 1]
    if token.word =~ /^\d+$/
        scalar = token.word.to_i
        token.tag(Scalar.new(scalar))
        token.tag(ScalarSubsecond.new(scalar)) if Chronic::Time::could_be_subsecond?(scalar)
        token.tag(ScalarSecond.new(scalar)) if Chronic::Time::could_be_second?(scalar)
        token.tag(ScalarMinute.new(scalar)) if Chronic::Time::could_be_minute?(scalar)
        token.tag(ScalarHour.new(scalar)) if Chronic::Time::could_be_hour?(scalar)
        unless post_token and DAY_PORTIONS.include?(post_token.word)
          token.tag(ScalarDay.new(scalar)) if Chronic::Date::could_be_day?(scalar)
          token.tag(ScalarMonth.new(scalar)) if Chronic::Date::could_be_month?(scalar)
          if Chronic::Date::could_be_year?(scalar)
            year = Chronic::Date::make_year(scalar, options[:ambiguous_year_future_bias])
            token.tag(ScalarYear.new(year.to_i))
          end
        end
    end
  end
end

Instance Method Details

#to_sObject


35
36
37
# File 'lib/chronic/tags/scalar.rb', line 35

def to_s
  'scalar'
end