Sha256: 945ee7ccaae257ce4f29f5e07d32c239843095b54b47d8a57566b635b791798f

Contents?: true

Size: 1.24 KB

Versions: 14

Compression:

Stored size: 1.24 KB

Contents

module CloudSesame
  module Query
    module AST
      class DateValue < StringValue

        COMPILE_FORMAT = '%FT%TZ'.freeze
        DATETIME_FORMAT = '%FT%T'.freeze
        TIME_FORMAT = '%F %T %z'.freeze
        DATE_FORMAT = '%F'.freeze

        def self.parse(value)
          return value.parse self if value.kind_of?(RangeValue)
          range?(value) || string_range?(value) ? RangeValue.new(value, self) : new(value)
        end

        def initialize(value, type = nil)
          value = Value.string_datetime?(value) ? parse_datetime(value) :
                  Value.string_time?(value) ? parse_time(value) :
                  Value.string_date?(value) ? parse_date(value) : value
          super(value, type)
        end

        def to_s
          compile
        end

        private

        def parse_datetime(string)
          DateTime.strptime(string, DATETIME_FORMAT)
        end

        def parse_time(string)
          DateTime.strptime(string, TIME_FORMAT)
        end

        def parse_date(string)
          Date.strptime(string, DATE_FORMAT)
        end

        def recompile(value)
          super strip format value
        end

        def format(value)
          value.strftime COMPILE_FORMAT
        end

      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
CloudSesame-1.0.1 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-1.0.0 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.9.4 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.9.3 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.9.2 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.9.1 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.9.0 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.8.3 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.8.2 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.8.1 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.8.0 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.7.13 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.7.12 lib/cloud_sesame/query/ast/date_value.rb
CloudSesame-0.7.11 lib/cloud_sesame/query/ast/date_value.rb