Class: Emendate::UnprocessableTagger

Inherits:
Object
  • Object
show all
Defined in:
lib/emendate/unprocessable_tagger.rb

Overview

Returns a single DateTypes::Error with error type :unprocessable if date string matches a known unsupported pattern

Constant Summary collapse

PATTERNS =
[
  /^y-\d+$/,
  /xxxx-\d{2}-xx/,
  /\dxxx-xx/,
  /\dxxx-\d{2}/,
  /\d{2}xx-\d{2}-\d{2}/,
  /\d{3}x-\d{2}-\d{2}/,
  /^\d{3,4}S\d+$/,
  /\d{4}-\d{2}-xx/,
  /^Unknown-\d{1,2}-Unknown$/i,
  /^\d{1,2}\/\d\(\d\)\/\d{4}$/
]
Re =
Regexp.union(PATTERNS)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tokens) ⇒ UnprocessableTagger

Returns a new instance of UnprocessableTagger.



29
30
31
32
# File 'lib/emendate/unprocessable_tagger.rb', line 29

def initialize(tokens)
  @tokens = tokens
  @str = tokens.orig_string.downcase
end

Class Method Details

.callObject



10
11
12
# File 'lib/emendate/unprocessable_tagger.rb', line 10

def call(...)
  new(...).call
end

Instance Method Details

#callObject



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/emendate/unprocessable_tagger.rb', line 34

def call
  return(Success(tokens)) unless str.match?(Re)

  result = tokens.class.new.copy(tokens)
  result.clear
  result << Emendate::DateTypes::Error.new(
    error_type: :unprocessable,
    sources: tokens
  )
  result.warnings << "Unprocessable string"
  Failure(result)
end