Skip to content

Commit

Permalink
Fix build break caused by incorrect merge and re-gen resources. (#1231)
Browse files Browse the repository at this point in the history
  • Loading branch information
tellarin authored and wgx998877 committed Jan 9, 2019
1 parent a0b073f commit 544bd95
Show file tree
Hide file tree
Showing 8 changed files with 126 additions and 16 deletions.
Expand Up @@ -625,6 +625,7 @@ public static class DateTimeDefinitions
public static readonly Dictionary<string, int> SpecialDecadeCases = new Dictionary<string, int>
{
{ @"noughties", 2000 },
{ @"aughts", 2000 },
{ @"two thousands", 2000 }
};
public const string DefaultLanguageFallback = @"MDY";
Expand All @@ -640,6 +641,7 @@ public static class DateTimeDefinitions
public static readonly Dictionary<string, string> AmbiguityFiltersDict = new Dictionary<string, string>
{
{ @"\bmorning|afternoon|evening|night|day\b", @"\b(good\s+(morning|afternoon|evening|night|day))|(nighty\s+night)\b" },
{ @"\bnow\b", @"\b(^now,)|\b((is|are)\s+now\s+for|for\s+now)\b" },
{ @"\bmay\b", @"\b((^may i)|(i|you|he|she|we|they)\s+may|(may\s+((((also|not|(also not)|well)\s+)?(be|ask|contain|constitute|email|e-mail|take|have|result|involve|get|work|reply))|(or may not))))\b" }
};
public static readonly IList<string> MorningTermList = new List<string>
Expand Down
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Globalization;
using System.Linq;
using DateObject = System.DateTime;

namespace Microsoft.Recognizers.Text.DateTime
Expand Down Expand Up @@ -92,7 +92,8 @@ public DateTimeParseResult Parse(ExtractResult er, DateObject refTime)
er.Text = er.Text.Substring(aroundMatch.Length);
modStr = aroundMatch.Value;
}
else if ((er.Type.Equals(Constants.SYS_DATETIME_DATEPERIOD) && Config.YearRegex.Match(er.Text).Success) || (er.Type.Equals(Constants.SYS_DATETIME_DATE)))
else if ((er.Type.Equals(Constants.SYS_DATETIME_DATEPERIOD) && Config.YearRegex.Match(er.Text).Success) ||
er.Type.Equals(Constants.SYS_DATETIME_DATE))
{
// This has to be put at the end of the if, or cases like "before 2012" and "after 2012" would fall into this
// 2012 or after/above
Expand Down Expand Up @@ -228,9 +229,12 @@ public DateTimeParseResult Parse(ExtractResult er, DateObject refTime)
}

if ((Config.Options & DateTimeOptions.SplitDateAndTime) != 0 &&
((DateTimeResolutionResult)pr.Value)?.SubDateTimeEntities != null)
((DateTimeResolutionResult)pr?.Value)?.SubDateTimeEntities != null)
{
pr.Value = DateTimeResolutionForSplit(pr);
if (pr != null)
{
pr.Value = DateTimeResolutionForSplit(pr);
}
}
else
{
Expand All @@ -241,7 +245,7 @@ public DateTimeParseResult Parse(ExtractResult er, DateObject refTime)
// In this version, ExperimentalMode only cope with the "IncludePeriodEnd" case
if ((this.Config.Options & DateTimeOptions.ExperimentalMode) != 0)
{
if (pr.Metadata != null && pr.Metadata.PossiblyIncludePeriodEnd)
if (pr?.Metadata != null && pr.Metadata.PossiblyIncludePeriodEnd)
{
pr = SetInclusivePeriodEnd(pr);
}
Expand Down Expand Up @@ -289,15 +293,17 @@ public DateTimeParseResult SetInclusivePeriodEnd(DateTimeParseResult slot)
foreach (var values in valueSet)
{
// This is only a sanity check, as here we only handle DatePeriod like "(StartDate,EndDate,Duration)"
if (values.ContainsKey(DateTimeResolutionKey.START) && values.ContainsKey(DateTimeResolutionKey.END) && values.ContainsKey(DateTimeResolutionKey.Timex))
if (values.ContainsKey(DateTimeResolutionKey.START) && values.ContainsKey(DateTimeResolutionKey.END) &&
values.ContainsKey(DateTimeResolutionKey.Timex))
{
var startDate = DateObject.Parse(values[DateTimeResolutionKey.START]);
var endDate = DateObject.Parse(values[DateTimeResolutionKey.END]);
var durationStr = timexComponents[2];
var datePeriodTimexType = TimexUtility.GetDatePeriodTimexType(durationStr);
endDate = TimexUtility.OffsetDateObject(endDate, offset: 1, timexType: datePeriodTimexType);
values[DateTimeResolutionKey.END] = DateTimeFormatUtil.LuisDate(endDate);
values[DateTimeResolutionKey.Timex] = GenerateEndInclusiveTimex(slot.TimexStr, datePeriodTimexType, startDate, endDate);
values[DateTimeResolutionKey.Timex] =
GenerateEndInclusiveTimex(slot.TimexStr, datePeriodTimexType, startDate, endDate);

if (string.IsNullOrEmpty(altTimex))
{
Expand All @@ -316,8 +322,10 @@ public DateTimeParseResult SetInclusivePeriodEnd(DateTimeParseResult slot)
return slot;
}

public string GenerateEndInclusiveTimex(string originalTimex, DatePeriodTimexType datePeriodTimexType, DateObject startDate, DateObject endDate)
public string GenerateEndInclusiveTimex(string originalTimex, DatePeriodTimexType datePeriodTimexType,
DateObject startDate, DateObject endDate)
{

var timexEndInclusive = TimexUtility.GenerateDatePeriodTimex(startDate, endDate, datePeriodTimexType);

// Sometimes the original timex contains fuzzy part like "XXXX-05-31"
Expand Down Expand Up @@ -762,7 +770,7 @@ public void AddAltPeriodToResolution(Dictionary<string, string> resolutionDic, s
}

public void AddAltSingleDateTimeToResolution(Dictionary<string, string> resolutionDic, string type, string mod,
Dictionary<string, string> res)
Dictionary<string, string> res)
{
if (resolutionDic.ContainsKey(TimeTypeConstants.DATE))
{
Expand All @@ -780,7 +788,7 @@ public void AddAltPeriodToResolution(Dictionary<string, string> resolutionDic, s
}

public void AddSingleDateTimeToResolution(Dictionary<string, string> resolutionDic, string type, string mod,
Dictionary<string, string> res)
Dictionary<string, string> res)
{
if (resolutionDic.ContainsKey(type) &&
!resolutionDic[type].Equals(DateMinString) && !resolutionDic[type].Equals(DateTimeMinString))
Expand Down Expand Up @@ -818,7 +826,7 @@ public void AddAltPeriodToResolution(Dictionary<string, string> resolutionDic, s
}

public void AddPeriodToResolution(Dictionary<string, string> resolutionDic, string startType, string endType,
string mod, Dictionary<string, string> res)
string mod, Dictionary<string, string> res)
{
var start = "";
var end = "";
Expand Down
Expand Up @@ -1194,6 +1194,7 @@ public class EnglishDateTime {

public static final ImmutableMap<String, Integer> SpecialDecadeCases = ImmutableMap.<String, Integer>builder()
.put("noughties", 2000)
.put("aughts", 2000)
.put("two thousands", 2000)
.build();

Expand All @@ -1205,6 +1206,7 @@ public class EnglishDateTime {

public static final ImmutableMap<String, String> AmbiguityFiltersDict = ImmutableMap.<String, String>builder()
.put("\\bmorning|afternoon|evening|night|day\\b", "\\b(good\\s+(morning|afternoon|evening|night|day))|(nighty\\s+night)\\b")
.put("\\bnow\\b", "\\b(^now,)|\\b((is|are)\\s+now\\s+for|for\\s+now)\\b")
.put("\\bmay\\b", "\\b((^may i)|(i|you|he|she|we|they)\\s+may|(may\\s+((((also|not|(also not)|well)\\s+)?(be|ask|contain|constitute|email|e-mail|take|have|result|involve|get|work|reply))|(or may not))))\\b")
.build();

Expand Down
Expand Up @@ -30,9 +30,9 @@ public class SpanishNumeric {

public static final String TensNumberIntegerRegex = "(cincuenta|cuarenta|treinta|sesenta|setenta|ochenta|noventa)";

public static final String NegativeNumberTermsRegex = "^[.]";
public static final String NegativeNumberTermsRegex = "((?<!(al|lo)\\s+)menos\\s+)";

public static final String NegativeNumberSignRegex = "^({NegativeNumberTermsRegex}\\s+).*"
public static final String NegativeNumberSignRegex = "^{NegativeNumberTermsRegex}.*"
.replace("{NegativeNumberTermsRegex}", NegativeNumberTermsRegex);

public static final String DigitsNumberRegex = "\\d|\\d{1,3}(\\.\\d{3})";
Expand Down Expand Up @@ -184,6 +184,99 @@ public static String DoubleWithoutIntegralRegex(String placeholder) {
public static final String NumberWithPrefixPercentage = "(?<!%)({BaseNumbers.NumberReplaceToken})(\\s*)(%(?!{BaseNumbers.NumberReplaceToken})|(por ciento|por cien)\\b)"
.replace("{BaseNumbers.NumberReplaceToken}", BaseNumbers.NumberReplaceToken);

public static final String TillRegex = "(\\ba\\b|hasta|--|-|—|——|~|–)";

public static final String MoreRegex = "(más\\s+alt[oa]\\s+que|(m[áa]s|mayor(es)?|por\\s+encima)(\\s+(que|de|del))?|(?<!<|=)>)";

public static final String LessRegex = "((menos|menor|menores|por\\s+debajo)(\\s+(que|de|del))?|más\\s+baj[oa]\\s+que|(?<!>|=)<)";

public static final String EqualRegex = "((igual(es)?|equivalente(s)?|equivale|equivalen|son)(\\s+(a|que|de|al|del))?|(?<!<|>)=)";

public static final String MoreOrEqualPrefix = "((no\\s+{LessRegex})|(por\\s+lo\\s+menos|como\\s+m[íi]nimo|al\\s+menos))"
.replace("{LessRegex}", LessRegex);

public static final String MoreOrEqual = "(({MoreRegex}\\s+(o)?\\s+{EqualRegex})|({EqualRegex}\\s+(o|y)\\s+{MoreRegex})|{MoreOrEqualPrefix}(\\s+(o)\\s+{EqualRegex})?|({EqualRegex}\\s+(o)\\s+)?{MoreOrEqualPrefix}|>\\s*=)"
.replace("{MoreRegex}", MoreRegex)
.replace("{EqualRegex}", EqualRegex)
.replace("{LessRegex}", LessRegex)
.replace("{MoreOrEqualPrefix}", MoreOrEqualPrefix);

public static final String MoreOrEqualSuffix = "((\\b(y|o)\\b\\s+(m[áa]s|mayor|mayores)((?!\\s+(alt[oa]|baj[oa]|que|de|del))|(\\s+(que|de|del)(?!(\\s*\\d+)))))|como\\s+m[áa]ximo|por\\s+lo\\s+menos|al\\s+menos)";

public static final String LessOrEqualPrefix = "((no\\s+{MoreRegex})|(como\\s+máximo|como\\s+maximo|como\\s+mucho))"
.replace("{MoreRegex}", MoreRegex);

public static final String LessOrEqual = "(({LessRegex}\\s+(o)?\\s+{EqualRegex})|({EqualRegex}\\s+(o)?\\s+{LessRegex})|{LessOrEqualPrefix}(\\s+(o)?\\s+{EqualRegex})?|({EqualRegex}\\s+(o)?\\s+)?{LessOrEqualPrefix}|<\\s*=)"
.replace("{LessRegex}", LessRegex)
.replace("{EqualRegex}", EqualRegex)
.replace("{MoreRegex}", MoreRegex)
.replace("{LessOrEqualPrefix}", LessOrEqualPrefix);

public static final String LessOrEqualSuffix = "((\\b(y|o)\\b\\s+(menos|menor|menores)((?!\\s+(alt[oa]|baj[oa]|que|de|del))|(\\s+(que|de|del)(?!(\\s*\\d+)))))|como\\s+m[íi]nimo)";

public static final String NumberSplitMark = "(?![,.](?!\\d+))";

public static final String MoreRegexNoNumberSucceed = "((m[áa]s|mayor|mayores)((?!\\s+(que|de|del))|\\s+((que|de|del)(?!(\\s*\\d+))))|(por encima)(?!(\\s*\\d+)))";

public static final String LessRegexNoNumberSucceed = "((menos|menor|menores)((?!\\s+(que|de|del))|\\s+((que|de|del)(?!(\\s*\\d+))))|(por debajo)(?!(\\s*\\d+)))";

public static final String EqualRegexNoNumberSucceed = "((igual|iguales|equivalente|equivalentes|equivale|equivalen)((?!\\s+(a|que|de|al|del))|(\\s+(a|que|de|al|del)(?!(\\s*\\d+)))))";

public static final String OneNumberRangeMoreRegex1 = "({MoreOrEqual}|{MoreRegex})\\s*((el|la|los|las)\\s+)?(?<number1>({NumberSplitMark}.)+)"
.replace("{MoreOrEqual}", MoreOrEqual)
.replace("{MoreRegex}", MoreRegex)
.replace("{NumberSplitMark}", NumberSplitMark);

public static final String OneNumberRangeMoreRegex2 = "(?<number1>({NumberSplitMark}.)+)\\s*{MoreOrEqualSuffix}"
.replace("{MoreOrEqualSuffix}", MoreOrEqualSuffix)
.replace("{NumberSplitMark}", NumberSplitMark);

public static final String OneNumberRangeMoreSeparateRegex = "({EqualRegex}\\s+(?<number1>({NumberSplitMark}.)+)(\\s+o\\s+){MoreRegexNoNumberSucceed})|({MoreRegex}\\s+(?<number1>({NumberSplitMark}.)+)(\\s+o\\s+){EqualRegexNoNumberSucceed})"
.replace("{EqualRegex}", EqualRegex)
.replace("{MoreRegex}", MoreRegex)
.replace("{EqualRegexNoNumberSucceed}", EqualRegexNoNumberSucceed)
.replace("{MoreRegexNoNumberSucceed}", MoreRegexNoNumberSucceed)
.replace("{NumberSplitMark}", NumberSplitMark);

public static final String OneNumberRangeLessRegex1 = "({LessOrEqual}|{LessRegex})\\s*((el|la|los|las)\\s+)?(?<number2>({NumberSplitMark}.)+)"
.replace("{LessOrEqual}", LessOrEqual)
.replace("{LessRegex}", LessRegex)
.replace("{NumberSplitMark}", NumberSplitMark);

public static final String OneNumberRangeLessRegex2 = "(?<number2>({NumberSplitMark}.)+)\\s*{LessOrEqualSuffix}"
.replace("{LessOrEqualSuffix}", LessOrEqualSuffix)
.replace("{NumberSplitMark}", NumberSplitMark);

public static final String OneNumberRangeLessSeparateRegex = "({EqualRegex}\\s+(?<number1>({NumberSplitMark}.)+)(\\s+o\\s+){LessRegexNoNumberSucceed})|({LessRegex}\\s+(?<number1>({NumberSplitMark}.)+)(\\s+o\\s+){EqualRegexNoNumberSucceed})"
.replace("{EqualRegex}", EqualRegex)
.replace("{LessRegex}", LessRegex)
.replace("{EqualRegexNoNumberSucceed}", EqualRegexNoNumberSucceed)
.replace("{LessRegexNoNumberSucceed}", LessRegexNoNumberSucceed)
.replace("{NumberSplitMark}", NumberSplitMark);

public static final String OneNumberRangeEqualRegex = "{EqualRegex}\\s*((el|la|los|las)\\s+)?(?<number1>({NumberSplitMark}.)+)"
.replace("{EqualRegex}", EqualRegex)
.replace("{NumberSplitMark}", NumberSplitMark);

public static final String TwoNumberRangeRegex1 = "entre\\s*((el|la|los|las)\\s+)?(?<number1>({NumberSplitMark}.)+)\\s*y\\s*((el|la|los|las)\\s+)?(?<number2>({NumberSplitMark}.)+)"
.replace("{NumberSplitMark}", NumberSplitMark);

public static final String TwoNumberRangeRegex2 = "({OneNumberRangeMoreRegex1}|{OneNumberRangeMoreRegex2})\\s*(\\by\\b|\\be\\b|pero|,)\\s*({OneNumberRangeLessRegex1}|{OneNumberRangeLessRegex2})"
.replace("{OneNumberRangeMoreRegex1}", OneNumberRangeMoreRegex1)
.replace("{OneNumberRangeMoreRegex2}", OneNumberRangeMoreRegex2)
.replace("{OneNumberRangeLessRegex1}", OneNumberRangeLessRegex1)
.replace("{OneNumberRangeLessRegex2}", OneNumberRangeLessRegex2);

public static final String TwoNumberRangeRegex3 = "({OneNumberRangeLessRegex1}|{OneNumberRangeLessRegex2})\\s*(\\by\\b|\\be\\b|pero|,)\\s*({OneNumberRangeMoreRegex1}|{OneNumberRangeMoreRegex2})"
.replace("{OneNumberRangeMoreRegex1}", OneNumberRangeMoreRegex1)
.replace("{OneNumberRangeMoreRegex2}", OneNumberRangeMoreRegex2)
.replace("{OneNumberRangeLessRegex1}", OneNumberRangeLessRegex1)
.replace("{OneNumberRangeLessRegex2}", OneNumberRangeLessRegex2);

public static final String TwoNumberRangeRegex4 = "((de|desde)\\s+)?((el|la|los|las)\\s+)?(?<number1>({NumberSplitMark}(?!\\b(entre|de|desde|es)\\b).)+)\\s*{TillRegex}\\s*((el|la|los|las)\\s+)?(?<number2>({NumberSplitMark}.)+)"
.replace("{TillRegex}", TillRegex)
.replace("{NumberSplitMark}", NumberSplitMark);

public static final Character DecimalSeparatorChar = ',';

public static final String FractionMarkerToken = "sobre";
Expand Down
Expand Up @@ -29,9 +29,10 @@
import com.microsoft.recognizers.text.datetime.extractors.BaseTimePeriodExtractor;
import com.microsoft.recognizers.text.datetime.extractors.BaseTimeZoneExtractor;
import com.microsoft.recognizers.text.datetime.extractors.IDateTimeExtractor;
import com.microsoft.recognizers.text.datetime.spanish.extractors.SpanishDateTimeExtractorConfiguration;
import com.microsoft.recognizers.text.datetime.spanish.extractors.SpanishDateExtractorConfiguration;
import com.microsoft.recognizers.text.datetime.spanish.extractors.SpanishDatePeriodExtractorConfiguration;
import com.microsoft.recognizers.text.datetime.spanish.extractors.SpanishDateTimeExtractorConfiguration;
import com.microsoft.recognizers.text.datetime.spanish.extractors.SpanishDateTimePeriodExtractorConfiguration;
import com.microsoft.recognizers.text.datetime.spanish.extractors.SpanishDurationExtractorConfiguration;
import com.microsoft.recognizers.text.datetime.spanish.extractors.SpanishHolidayExtractorConfiguration;
import com.microsoft.recognizers.text.datetime.spanish.extractors.SpanishTimeExtractorConfiguration;
Expand Down

0 comments on commit 544bd95

Please sign in to comment.