LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
NormalizeDateTime.h
Go to the documentation of this file.
1// Copyright 2002-2013 CEA LIST
2// SPDX-FileCopyrightText: 2022 CEA LIST <gael.de-chalendar@cea.fr>
3//
4// SPDX-License-Identifier: MIT
5
6/************************************************************************
7 *
8 * @file NormalizeDateTime.h
9 * @author Besancon Romaric (romaric.besancon@cea.fr)
10 * @date Tue Jun 13 2006
11 * copyright Copyright (C) 2006-2012 by CEA LIST
12 * Project s2lp
13 *
14 * @brief actions for the normalization of dates and times
15 *
16 ***********************************************************************/
17
18#ifndef NORMALIZEDATETIME_H
19#define NORMALIZEDATETIME_H
20
24
25namespace Lima {
26namespace LinguisticProcessing {
27namespace SpecificEntities {
28
29//**********************************************************************
30// ids of actions defined in this file
31
32#define NormalizeDateId "NormalizeDate"
33#define NormalizeRelativeDateId "NormalizeRelativeDate"
34#define NormalizeLocalTimeId "NormalizeLocalTime"
35#define NormalizeUTCTimeId "NormalizeUTCTime"
36
37// a class to store reference objects for relative normalization
39 public:
42
43 void parseComplement(const LimaString& complement);
44 void parseReference(const LimaString& str);
45 bool getReferenceDate(const AnalysisContent& analysis,
46 QDate& date) const;
47 bool getReferenceTime(const AnalysisContent& analysis,
48 QTime& time) const;
49 bool getReferenceLocation(const AnalysisContent& analysis,
50 std::string& location) const;
51
52 const std::string& getDateRefName() const { return m_dateRefName; }
53 const std::string& getTimeRefName() const { return m_timeRefName; }
54 const std::string& getLocRefName() const { return m_locRefName; }
55
56 void setDateRefName(const std::string& name) { m_dateRefName=name; }
57 void setTimeRefName(const std::string& name) { m_timeRefName=name; }
58 void setLocRefName(const std::string& name) { m_locRefName=name; }
59
60 private:
61 std::string m_dateRefName;
62 std::string m_timeRefName;
63 std::string m_locRefName;
64};
65
67{
68public:
69 NormalizeDate(MediaId language,
70 const LimaString& complement=LimaString());
72
73 bool operator()(Automaton::RecognizerMatch& m,
74 AnalysisContent& analysis) const override;
75
76 bool actionNeedsRecognizedExpression() override { return true; }
77
78protected:
79 MediaId m_language;
80 std::shared_ptr<NormalizeDateTimeResources> m_resources;
82 const std::set<LinguisticCode>* m_microsForMonth;
83 const std::set<LinguisticCode>* m_microsForDays;
86
87 void updateCurrentDate(AnalysisContent& analysis,
88 const QDate& currentDate) const;
89 unsigned short getDayFromString(const LimaString& numdayString) const;
90 unsigned short getDay(Automaton::RecognizerMatch& m, const std::string& featureName) const;
91 unsigned short getWeekDay(Automaton::RecognizerMatch& m, const std::string& featureName) const;
92 unsigned short getMonth(Automaton::RecognizerMatch& m, const std::string& featureName, const std::string& alt="") const;
93 unsigned short getYear(Automaton::RecognizerMatch& m, const std::string& featureName) const;
94 unsigned short getDefaultYear(AnalysisContent& analysis) const;
95 QString getDateSpan(unsigned short year, unsigned short month, unsigned short day) const;
96
97};
98
100{
101public:
102 NormalizeRelativeDate(MediaId language,
103 const LimaString& complement=LimaString());
105
106 bool operator()(Automaton::RecognizerMatch& m,
107 AnalysisContent& analysis) const override;
108
109 bool actionNeedsRecognizedExpression() override { return true; }
110private:
111 bool m_getNext;
112 int m_diff;
113};
114
115// abstract constraint that contains common functions for
116// time normalization
118{
119public:
120 NormalizeTime(MediaId language,
121 const LimaString& complement=LimaString());
122 virtual ~NormalizeTime() {}
123
125 AnalysisContent& analysis) const override=0;
126 virtual bool actionNeedsRecognizedExpression() override { return true; }
127
128 const ReferenceData& getReferenceData() const { return m_referenceData; }
129 bool hasResources() const { return (m_resources!=0); }
130 const std::shared_ptr<NormalizeDateTimeResources> getResources() const { return m_resources; }
131
132protected:
133 //private member functions
134 QTime
135 getUTCTime(const QDate& d,
136 const QTime& duration/*,
137 const std::string& location,
138 const boost::local_time::tz_database& tz_db*/) const;
139 QTime getTimeDuration(const Automaton::RecognizerMatch& m) const;
140
141private:
142 MediaId m_language;
143 std::shared_ptr<NormalizeDateTimeResources> m_resources;
144 ReferenceData m_referenceData;
145};
146
148{
149public:
150 NormalizeLocalTime(MediaId language,
151 const LimaString& complement=LimaString());
153
154 bool operator()(Automaton::RecognizerMatch& m,
155 AnalysisContent& analysis) const override;
156private:
157};
158
160{
161public:
162 NormalizeUTCTime(MediaId language,
163 const LimaString& complement=LimaString());
165
166 bool operator()(Automaton::RecognizerMatch& m,
167 AnalysisContent& analysis) const override;
168private:
169};
170
171} // end namespace
172} // end namespace
173} // end namespace
174
175#endif
#define LIMA_SPECIFICENTITIES_DATETIME_EXPORT
Holds all data that pass through the ProcessUnits Analysis data are shared pointers,...
Provide function to read write and check a property.
std::shared_ptr< NormalizeDateTimeResources > m_resources
const Common::PropertyCode::PropertyAccessor * m_microAccessor
unsigned short getDefaultYear(AnalysisContent &analysis) const
const std::shared_ptr< NormalizeDateTimeResources > getResources() const
virtual bool operator()(Automaton::RecognizerMatch &m, AnalysisContent &analysis) const override=0
zero-ary constraint function : applies the function without a vertex indication (used for actions,...
NAUTITIA.
QString LimaString
Definition LimaString.h:33