Skip to content

Commit 3648b79

Browse files
committed
datetime parser adaptoer around core DateParser
1 parent 553990b commit 3648b79

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from collections import namedtuple
2+
from .errors import DateParserException
3+
from .core_datetime_formats import DateTimeFormats
4+
5+
6+
class DateTimeParser:
7+
"""
8+
DateTime Adaptor class for DateParser
9+
"""
10+
11+
def __init__(self, text, start_year, end_year, datetime_format=None):
12+
self.text = text
13+
self.start_year = start_year
14+
self.end_year = end_year
15+
self._datetime_format = datetime_format
16+
if self._datetime_format == None:
17+
self._datetime_format = DateTimeFormats.FORMATS
18+
self._dateparser_formatter = self._format_datetime
19+
self.datetime = self._parser(self.text, self.start_year, self.end_year,
20+
self._datetime_format, self._dateparser_formatter)
21+
22+
def __repr__(self):
23+
return f"DateTimeParser(start={self.start_year}, end={self.end_year}, format={self._datetime_format})"
24+
25+
@staticmethod
26+
def _parser(text, start_year, end_year, datetime_format, formatter):
27+
DP = DateParser(datetime_format, start_year=start_year,
28+
end_year=end_year)
29+
try:
30+
dt = DP.parse_string(text)
31+
_dt = [formatter(i) for i in dt]
32+
return _dt
33+
except DateParserException:
34+
return None
35+
36+
@staticmethod
37+
def _format_datetime(datetime_object):
38+
_datetime = namedtuple(
39+
"datetime", ["date", "token_span", "token_index", "format"])
40+
return _datetime(datetime_object[0],
41+
(datetime_object[1], datetime_object[2]),
42+
(datetime_object[4], datetime_object[5]), datetime_object[3])

0 commit comments

Comments
 (0)