Sha256: c6da0a7d9a6ee88ee6fb1030d7b0125310303fa1c8803fb94399091cdca83fcc

Contents?: true

Size: 1.07 KB

Versions: 8

Compression:

Stored size: 1.07 KB

Contents

module OpenActive
  module Validators
    # https://schema.org/Time
    # format spec: https://www.w3.org/TR/xmlschema-2/#time
    class TimeValidator < BaseValidator
      # https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s07.html#id2175516
      # Minor additions to make second values and timezone optional
      REGEX = /(?<hour>2[0-3]|[01][0-9]):?(?<minute>[0-5][0-9]):?(?<second>[0-5][0-9])?(?<timezone>Z|[+-](?:2[0-3]|[01][0-9])(?::?(?:[0-5][0-9]))?)?/

      # Coerce given value to the type the validator is validating against.
      # PLEASE NOTE: no checks are performed on the given value.
      # It is therefore recommended to call the "run" method first before this.
      #
      # @param value [mixed] The value to coerce.
      # @return [mixed] The same value.
      def coerce(value)
        value
      end

      # Run validation on the given value.
      #
      # @param value [mixed] The value to validate.
      # @return [Boolean] Whether validation passes or not.
      def run(value)
        REGEX =~ value
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
openactive-0.5.0 lib/openactive/validators/time_validator.rb
openactive-0.4.0 lib/openactive/validators/time_validator.rb
openactive-0.3.0 lib/openactive/validators/time_validator.rb
openactive-0.2.2 lib/openactive/validators/time_validator.rb
openactive-0.2.1 lib/openactive/validators/time_validator.rb
openactive-0.2.0 lib/openactive/validators/time_validator.rb
openactive-0.1.0 lib/openactive/validators/time_validator.rb
openactive-0.1.0.rc1 lib/openactive/validators/time_validator.rb