Class: Emendate::UnprocessableTagger
- Inherits:
-
Object
- Object
- Emendate::UnprocessableTagger
- 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
- #call ⇒ Object
-
#initialize(tokens) ⇒ UnprocessableTagger
constructor
A new instance of UnprocessableTagger.
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
.call ⇒ Object
10 11 12 |
# File 'lib/emendate/unprocessable_tagger.rb', line 10 def call(...) new(...).call end |
Instance Method Details
#call ⇒ Object
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 |