From 039f49cec09a642a237e5baf3923de2e49d9acf9 Mon Sep 17 00:00:00 2001 From: Mu Guo Date: Mon, 12 Nov 2018 16:25:40 +0800 Subject: [PATCH] Support cases like "the day after" and "the day before" (#956) * Support cases like "the day after" and "the day before" * Refactor the Code-Writers and Generate resources in JavaScript and Python --- .../English/DateTimeDefinitions.cs | 28 ++++++- .../French/DateTimeDefinitions.cs | 35 +++++++- .../German/DateTimeDefinitions.cs | 21 +++++ .../Italian/DateTimeDefinitions.cs | 7 ++ .../Portuguese/DateTimeDefinitions.cs | 30 +++++++ .../Spanish/DateTimeDefinitions.cs | 27 ++++++ .../EnglishDateExtractorConfiguration.cs | 11 +++ .../Parsers/EnglishDateParserConfiguration.cs | 83 +++++++------------ .../Parsers/FrenchDateParserConfiguration.cs | 29 +++++++ .../Parsers/GermanDateParserConfiguration.cs | 75 ++++++----------- .../Parsers/ItalianDateParserConfiguration.cs | 64 +++++++------- .../Parsers/BaseDateParser.cs | 78 ++++++++++++++++- .../Parsers/IDateParserConfiguration.cs | 15 +++- .../PortugueseDateParserConfiguration.cs | 69 ++++++--------- .../Parsers/SpanishDateParserConfiguration.cs | 74 +++++++---------- .../src/dateTime/english/dateConfiguration.ts | 4 + .../src/dateTime/french/dateConfiguration.ts | 3 +- .../src/resources/chineseDateTime.ts | 12 +-- .../src/resources/englishDateTime.ts | 25 +++--- .../src/resources/frenchDateTime.ts | 18 ++-- .../src/resources/portugueseDateTime.ts | 15 ++-- .../src/resources/spanishDateTime.ts | 15 ++-- .../src/resources/chineseNumericWithUnit.ts | 8 +- .../src/resources/englishNumericWithUnit.ts | 12 +-- .../src/resources/frenchNumericWithUnit.ts | 12 +-- .../src/resources/japaneseNumericWithUnit.ts | 4 +- .../resources/portugueseNumericWithUnit.ts | 8 +- .../src/resources/spanishNumericWithUnit.ts | 10 +-- .../src/resources/chineseNumeric.ts | 2 +- .../src/resources/englishNumeric.ts | 8 +- .../src/resources/frenchNumeric.ts | 8 +- .../src/resources/japaneseNumeric.ts | 2 +- .../src/resources/portugueseNumeric.ts | 10 +-- .../src/resources/spanishNumeric.ts | 8 +- .../src/resources/basePhoneNumbers.ts | 6 +- .../src/resources/baseURL.ts | 2 +- .../resource-generator/lib/code-writers.ts | 2 +- Patterns/English/English-DateTime.yaml | 28 ++++++- Patterns/French/French-DateTime.yaml | 37 +++++++++ Patterns/German/German-DateTime.yaml | 21 +++++ Patterns/Italian/Italian-DateTime.yaml | 12 +++ Patterns/Portuguese/Portuguese-DateTime.yaml | 30 +++++++ Patterns/Spanish/Spanish-DateTime.yaml | 27 ++++++ .../date_time/english/date_parser_config.py | 4 + .../date_time/french/date_parser_config.py | 2 +- .../resources/english_date_time.py | 9 +- .../resources/french_date_time.py | 8 ++ .../resources/portuguese_date_time.py | 5 ++ .../resources/spanish_date_time.py | 5 ++ Specs/DateTime/English/DateTimeModel.json | 56 +++++++++++++ .../English/DateTimeModelComplexCalendar.json | 56 +++++++++++++ .../DateTimeModelExperimentalMode.json | 56 +++++++++++++ Specs/DateTime/French/DateParser.json | 6 +- 53 files changed, 875 insertions(+), 327 deletions(-) diff --git a/.NET/Microsoft.Recognizers.Definitions/English/DateTimeDefinitions.cs b/.NET/Microsoft.Recognizers.Definitions/English/DateTimeDefinitions.cs index 5155de4356..b5ba37f4a6 100644 --- a/.NET/Microsoft.Recognizers.Definitions/English/DateTimeDefinitions.cs +++ b/.NET/Microsoft.Recognizers.Definitions/English/DateTimeDefinitions.cs @@ -42,7 +42,7 @@ public static class DateTimeDefinitions public const string SingleWeekDayRegex = @"\b(?sunday|monday|tuesday|wednesday|thursday|friday|saturday|mon|tue|tues|wedn|weds|wed|thurs|thur|thu|fri|((?<=on\s+)(sat|sun)))\b"; public static readonly string RelativeMonthRegex = $@"(?(of\s+)?{RelativeRegex}\s+month)\b"; public const string WrittenMonthRegex = @"(((the\s+)?month of\s+)?(?april|apr|august|aug|december|dec|february|feb|january|jan|july|jul|june|jun|march|mar|may|november|nov|october|oct|september|sept|sep))"; - public static readonly string MonthSuffixRegex = $@"(?(in\s+|of\s+|on\s+)?({RelativeMonthRegex}|{WrittenMonthRegex}))"; + public static readonly string MonthSuffixRegex = $@"(?((in|of|on)\s+)?({RelativeMonthRegex}|{WrittenMonthRegex}))"; public const string DateUnitRegex = @"(?decades?|years?|months?|weeks?|(?business\s+)?days?)\b"; public const string DateTokenPrefix = "on "; public const string TimeTokenPrefix = "at "; @@ -86,7 +86,7 @@ public static class DateTimeDefinitions public static readonly string ThisRegex = $@"\b((this(\s*week)?(\s*on)?\s+){WeekDayRegex})|({WeekDayRegex}((\s+of)?\s+this\s*week))\b"; public static readonly string LastDateRegex = $@"\b({PastPrefixRegex}(\s*week)?\s+{WeekDayRegex})|({WeekDayRegex}(\s+last\s*week))\b"; public static readonly string NextDateRegex = $@"\b({NextPrefixRegex}(\s*week(\s*,?\s*on)?)?\s+{WeekDayRegex})|((on\s+)?{WeekDayRegex}((\s+of)?\s+(the\s+following|(the\s+)?next)\s*week))\b"; - public static readonly string SpecialDayRegex = $@"\b((the\s+)?day before yesterday|(the\s+)?day after (tomorrow|tmr)|((the\s+)?({RelativeRegex}|my)\s+day)|yesterday|tomorrow|tmr|today)\b"; + public static readonly string SpecialDayRegex = $@"\b((the\s+)?day before yesterday|(the\s+)?day after (tomorrow|tmr)|the\s+day\s+(before|after)(?!=\s+day)|((the\s+)?({RelativeRegex}|my)\s+day)|yesterday|tomorrow|tmr|today)\b"; public static readonly string SpecialDayWithNumRegex = $@"\b((?{WrittenNumRegex})\s+days?\s+from\s+(?yesterday|tomorrow|tmr|today))\b"; public static readonly string RelativeDayRegex = $@"\b(((the\s+)?{RelativeRegex}\s+day))\b"; public const string SetWeekDayRegex = @"\b(?on\s+)?(?morning|afternoon|evening|night|sunday|monday|tuesday|wednesday|thursday|friday|saturday)s\b"; @@ -649,5 +649,29 @@ public static class DateTimeDefinitions { "night" }; + public static readonly IList SameDayTerms = new List + { + "today" + }; + public static readonly IList PlusOneDayTerms = new List + { + "tomorrow", + "tmr", + "day after" + }; + public static readonly IList MinusOneDayTerms = new List + { + "yesterday", + "day before" + }; + public static readonly IList PlusTwoDayTerms = new List + { + "day after tomorrow", + "day after tmr" + }; + public static readonly IList MinusTwoDayTerms = new List + { + "day before yesterday" + }; } } \ No newline at end of file diff --git a/.NET/Microsoft.Recognizers.Definitions/French/DateTimeDefinitions.cs b/.NET/Microsoft.Recognizers.Definitions/French/DateTimeDefinitions.cs index d9f1b8a196..4daff33f67 100644 --- a/.NET/Microsoft.Recognizers.Definitions/French/DateTimeDefinitions.cs +++ b/.NET/Microsoft.Recognizers.Definitions/French/DateTimeDefinitions.cs @@ -1,6 +1,4 @@ - - -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // Changes to this file may cause incorrect behavior and will be lost if @@ -196,6 +194,9 @@ public static class DateTimeDefinitions public static readonly string RelativeTimeUnitRegex = $@"(((({ThisPrefixRegex})?)\s+({TimeUnitRegex}(\s*{NextSuffixRegex}|{PastSuffixRegex})?))|((le))\s+({RestrictedTimeUnitRegex}))"; public static readonly string RelativeDurationUnitRegex = $@"(((?<=({ThisPrefixRegex})\s+)?\b({DurationUnitRegex})(\s+{NextSuffixRegex}|{PastSuffixRegex})?)|((le|my))\s+({RestrictedTimeUnitRegex}))"; public const string ReferenceDatePeriodRegex = @"^[.]"; + public const string NextPrefixRegex = @"^[\.]"; + public const string PastPrefixRegex = @"^[\.]"; + public const string RelativeDayRegex = @"^[\.]"; public const string ConnectorRegex = @"^(,|pour|t|vers)$"; public const string ConnectorAndRegex = @"\b(et\s*(le|la(s)?)?)\b.+"; public const string FromRegex = @"((de|du)?)$"; @@ -699,5 +700,33 @@ public static class DateTimeDefinitions { "nuit" }; + public static readonly IList SameDayTerms = new List + { + "aujourd'hui", + "auj" + }; + public static readonly IList PlusOneDayTerms = new List + { + "demain", + "a2m1", + "lendemain", + "jour suivant" + }; + public static readonly IList MinusOneDayTerms = new List + { + "hier", + "dernier" + }; + public static readonly IList PlusTwoDayTerms = new List + { + "après demain", + "après-demain", + "apres-demain" + }; + public static readonly IList MinusTwoDayTerms = new List + { + "avant-hier", + "avant hier" + }; } } \ No newline at end of file diff --git a/.NET/Microsoft.Recognizers.Definitions/German/DateTimeDefinitions.cs b/.NET/Microsoft.Recognizers.Definitions/German/DateTimeDefinitions.cs index 24434e7d3c..2c8dc538a3 100644 --- a/.NET/Microsoft.Recognizers.Definitions/German/DateTimeDefinitions.cs +++ b/.NET/Microsoft.Recognizers.Definitions/German/DateTimeDefinitions.cs @@ -677,5 +677,26 @@ public static class DateTimeDefinitions { "nacht" }; + public static readonly IList SameDayTerms = new List + { + "heute" + }; + public static readonly IList PlusOneDayTerms = new List + { + "morgen", + "tmr" + }; + public static readonly IList MinusOneDayTerms = new List + { + "gestern" + }; + public static readonly IList PlusTwoDayTerms = new List + { + "übermorgen" + }; + public static readonly IList MinusTwoDayTerms = new List + { + "vorgestern" + }; } } \ No newline at end of file diff --git a/.NET/Microsoft.Recognizers.Definitions/Italian/DateTimeDefinitions.cs b/.NET/Microsoft.Recognizers.Definitions/Italian/DateTimeDefinitions.cs index c04b2a02bb..afff241342 100644 --- a/.NET/Microsoft.Recognizers.Definitions/Italian/DateTimeDefinitions.cs +++ b/.NET/Microsoft.Recognizers.Definitions/Italian/DateTimeDefinitions.cs @@ -69,6 +69,8 @@ public static class DateTimeDefinitions public static readonly string WeekDayOfMonthRegex = $@"(?(la\s+)?(?prima|seconda|terza|quarta|quinta|ultima)\s+{WeekDayRegex}\s+{MonthSuffixRegex})"; public const string RelativeWeekDayRegex = @"^[.]"; public const string NumberEndingPattern = @"^[.]"; + public const string NextPrefixRegex = @"^[.]"; + public const string PastPrefixRegex = @"^[.]"; public static readonly string SpecialDate = $@"(?=\b(di|al)\s+il\s+){DayRegex}\b"; public static readonly string DateExtractor1 = $@"\b({WeekDayRegex}(\s+|\s*,\s*))?{MonthRegex}\s*[/\\\.\-]?\s*{DayRegex}\b"; public static readonly string DateExtractor2 = $@"\b({WeekDayRegex}(\s+|\s*,\s*))?{DayRegex}(\s+|\s*,\s*|\s+){MonthRegex}\s*[\.\-]?\s*{DateYearRegex}\b"; @@ -590,5 +592,10 @@ public static class DateTimeDefinitions { "nuit" }; + public static readonly string[] SameDayTerms = { }; + public static readonly string[] PlusOneDayTerms = { }; + public static readonly string[] MinusOneDayTerms = { }; + public static readonly string[] PlusTwoDayTerms = { }; + public static readonly string[] MinusTwoDayTerms = { }; } } \ No newline at end of file diff --git a/.NET/Microsoft.Recognizers.Definitions/Portuguese/DateTimeDefinitions.cs b/.NET/Microsoft.Recognizers.Definitions/Portuguese/DateTimeDefinitions.cs index 7ffbcdad9c..8a84fab459 100644 --- a/.NET/Microsoft.Recognizers.Definitions/Portuguese/DateTimeDefinitions.cs +++ b/.NET/Microsoft.Recognizers.Definitions/Portuguese/DateTimeDefinitions.cs @@ -507,5 +507,35 @@ public static class DateTimeDefinitions { "noite" }; + public static readonly IList SameDayTerms = new List + { + "hoje", + "este dia", + "esse dia", + "o dia" + }; + public static readonly IList PlusOneDayTerms = new List + { + "amanha", + "de amanha", + "dia seguinte", + "o dia de amanha", + "proximo dia" + }; + public static readonly IList MinusOneDayTerms = new List + { + "ontem", + "ultimo dia" + }; + public static readonly IList PlusTwoDayTerms = new List + { + "depois de amanha", + "dia depois de amanha" + }; + public static readonly IList MinusTwoDayTerms = new List + { + "anteontem", + "dia antes de ontem" + }; } } \ No newline at end of file diff --git a/.NET/Microsoft.Recognizers.Definitions/Spanish/DateTimeDefinitions.cs b/.NET/Microsoft.Recognizers.Definitions/Spanish/DateTimeDefinitions.cs index a1c3d0e3d6..f4a41d9177 100644 --- a/.NET/Microsoft.Recognizers.Definitions/Spanish/DateTimeDefinitions.cs +++ b/.NET/Microsoft.Recognizers.Definitions/Spanish/DateTimeDefinitions.cs @@ -481,5 +481,32 @@ public static class DateTimeDefinitions { "noche" }; + public static readonly IList SameDayTerms = new List + { + "hoy", + "el dia" + }; + public static readonly IList PlusOneDayTerms = new List + { + "mañana", + "dia siguiente", + "el dia de mañana", + "proximo dia" + }; + public static readonly IList MinusOneDayTerms = new List + { + "ayer", + "ultimo dia" + }; + public static readonly IList PlusTwoDayTerms = new List + { + "pasado mañana", + "dia despues de mañana" + }; + public static readonly IList MinusTwoDayTerms = new List + { + "anteayer", + "dia antes de ayer" + }; } } \ No newline at end of file diff --git a/.NET/Microsoft.Recognizers.Text.DateTime/English/Extractors/EnglishDateExtractorConfiguration.cs b/.NET/Microsoft.Recognizers.Text.DateTime/English/Extractors/EnglishDateExtractorConfiguration.cs index 36e13737c0..e990b8d46e 100644 --- a/.NET/Microsoft.Recognizers.Text.DateTime/English/Extractors/EnglishDateExtractorConfiguration.cs +++ b/.NET/Microsoft.Recognizers.Text.DateTime/English/Extractors/EnglishDateExtractorConfiguration.cs @@ -120,16 +120,27 @@ public EnglishDateExtractorConfiguration(IOptionsConfiguration config) : base(co ImplicitDateList = new List { + // extract "12" from "on 12" OnRegex, + // extract "12th" from "on/at/in 12th" RelaxedOnRegex, + // "the day before yesterday", "previous day", "today", "yesterday", "tomorrow" SpecialDayRegex, + // "this Monday", "Tuesday of this week" ThisRegex, + // "last/previous Monday", "Monday of last week" LastDateRegex, + // "next/following Monday", "Monday of next week" NextDateRegex, + // "Sunday", "Weds" SingleWeekDayRegex, + // "2nd Monday of April" WeekDayOfMonthRegex, + // "on the 12th" SpecialDate, + // "two days from today", "five days from tomorrow" SpecialDayWithNumRegex, + // "three Monday from now" RelativeWeekDayRegex }; diff --git a/.NET/Microsoft.Recognizers.Text.DateTime/English/Parsers/EnglishDateParserConfiguration.cs b/.NET/Microsoft.Recognizers.Text.DateTime/English/Parsers/EnglishDateParserConfiguration.cs index 8d87ee62e0..49085e3584 100644 --- a/.NET/Microsoft.Recognizers.Text.DateTime/English/Parsers/EnglishDateParserConfiguration.cs +++ b/.NET/Microsoft.Recognizers.Text.DateTime/English/Parsers/EnglishDateParserConfiguration.cs @@ -59,19 +59,11 @@ public class EnglishDateParserConfiguration : BaseOptionsConfiguration, IDatePar public Regex RelativeWeekDayRegex { get; } - /* - The following three regexes only used in this configuration - They are not used in the base parser, therefore they are not extracted - If the spanish date parser need the same regexes, they should be extracted - */ - public static readonly Regex RelativeDayRegex= - new Regex(DateTimeDefinitions.RelativeDayRegex, RegexOptions.Singleline); + public Regex RelativeDayRegex { get; } - public static readonly Regex NextPrefixRegex = - new Regex(DateTimeDefinitions.NextPrefixRegex, RegexOptions.Singleline); + public Regex NextPrefixRegex { get; } - public static readonly Regex PastPrefixRegex = - new Regex(DateTimeDefinitions.PastPrefixRegex, RegexOptions.Singleline); + public Regex PastPrefixRegex { get; } public IImmutableDictionary DayOfMonth { get; } @@ -81,6 +73,16 @@ The following three regexes only used in this configuration public IImmutableDictionary CardinalMap { get; } + public IImmutableList SameDayTerms { get; } + + public IImmutableList PlusOneDayTerms { get; } + + public IImmutableList MinusOneDayTerms { get; } + + public IImmutableList PlusTwoDayTerms { get; } + + public IImmutableList MinusTwoDayTerms { get; } + public IDateTimeUtilityConfiguration UtilityConfiguration { get; } public EnglishDateParserConfiguration(ICommonDateTimeParserConfiguration config) : base(config) @@ -109,65 +111,33 @@ public EnglishDateParserConfiguration(ICommonDateTimeParserConfiguration config) RelativeMonthRegex = EnglishDateExtractorConfiguration.RelativeMonthRegex; YearSuffix = EnglishDateExtractorConfiguration.YearSuffix; RelativeWeekDayRegex = EnglishDateExtractorConfiguration.RelativeWeekDayRegex; + RelativeDayRegex = new Regex(DateTimeDefinitions.RelativeDayRegex, RegexOptions.Singleline); + NextPrefixRegex = new Regex(DateTimeDefinitions.NextPrefixRegex, RegexOptions.Singleline); + PastPrefixRegex = new Regex(DateTimeDefinitions.PastPrefixRegex, RegexOptions.Singleline); DayOfMonth = config.DayOfMonth; DayOfWeek = config.DayOfWeek; MonthOfYear = config.MonthOfYear; CardinalMap = config.CardinalMap; UnitMap = config.UnitMap; UtilityConfiguration = config.UtilityConfiguration; - } - - public int GetSwiftDay(string text) - { - var trimmedText = text.Trim().ToLowerInvariant(); - var swift = 0; - - var match = RelativeDayRegex.Match(text); - - if (trimmedText.Equals("today")) - { - swift = 0; - } - else if (trimmedText.Equals("tomorrow") || trimmedText.Equals("tmr")) - { - swift = 1; - } - else if (trimmedText.Equals("yesterday")) - { - swift = -1; - } - else if (trimmedText.EndsWith("day after tomorrow") || - trimmedText.EndsWith("day after tmr")) - { - swift = 2; - } - else if (trimmedText.EndsWith("day before yesterday")) - { - swift = -2; - } - else if (match.Success) - { - swift = GetSwift(text); - } - - return swift; + SameDayTerms = DateTimeDefinitions.SameDayTerms.ToImmutableList(); + PlusOneDayTerms = DateTimeDefinitions.PlusOneDayTerms.ToImmutableList(); + PlusTwoDayTerms = DateTimeDefinitions.PlusTwoDayTerms.ToImmutableList(); + MinusOneDayTerms = DateTimeDefinitions.MinusOneDayTerms.ToImmutableList(); + MinusTwoDayTerms = DateTimeDefinitions.MinusTwoDayTerms.ToImmutableList(); } public int GetSwiftMonth(string text) - { - return GetSwift(text); - } - - public int GetSwift(string text) { var trimmedText = text.Trim().ToLowerInvariant(); - var swift = 0; + if (NextPrefixRegex.IsMatch(trimmedText)) { swift = 1; } - else if (PastPrefixRegex.IsMatch(trimmedText)) + + if (PastPrefixRegex.IsMatch(trimmedText)) { swift = -1; } @@ -180,5 +150,10 @@ public bool IsCardinalLast(string text) var trimmedText = text.Trim().ToLowerInvariant(); return trimmedText.Equals("last"); } + + public string Normalize(string text) + { + return text; + } } } diff --git a/.NET/Microsoft.Recognizers.Text.DateTime/French/Parsers/FrenchDateParserConfiguration.cs b/.NET/Microsoft.Recognizers.Text.DateTime/French/Parsers/FrenchDateParserConfiguration.cs index 2548de89a1..5a34e1d2b0 100644 --- a/.NET/Microsoft.Recognizers.Text.DateTime/French/Parsers/FrenchDateParserConfiguration.cs +++ b/.NET/Microsoft.Recognizers.Text.DateTime/French/Parsers/FrenchDateParserConfiguration.cs @@ -61,6 +61,12 @@ public class FrenchDateParserConfiguration : BaseOptionsConfiguration, IDatePars public Regex RelativeWeekDayRegex { get; } + public Regex RelativeDayRegex { get; } + + public Regex NextPrefixRegex { get; } + + public Regex PastPrefixRegex { get; } + public IImmutableDictionary DayOfMonth { get; } public IImmutableDictionary DayOfWeek { get; } @@ -69,6 +75,16 @@ public class FrenchDateParserConfiguration : BaseOptionsConfiguration, IDatePars public IImmutableDictionary CardinalMap { get; } + public IImmutableList SameDayTerms { get; } + + public IImmutableList PlusOneDayTerms { get; } + + public IImmutableList MinusOneDayTerms { get; } + + public IImmutableList PlusTwoDayTerms { get; } + + public IImmutableList MinusTwoDayTerms { get; } + public IDateTimeUtilityConfiguration UtilityConfiguration { get; } public FrenchDateParserConfiguration(ICommonDateTimeParserConfiguration config) : base(config) @@ -98,12 +114,20 @@ public FrenchDateParserConfiguration(ICommonDateTimeParserConfiguration config) RelativeMonthRegex = FrenchDateExtractorConfiguration.RelativeMonthRegex; YearSuffix = FrenchDateExtractorConfiguration.YearSuffix; RelativeWeekDayRegex = FrenchDateExtractorConfiguration.RelativeWeekDayRegex; + RelativeDayRegex = new Regex(DateTimeDefinitions.RelativeDayRegex, RegexOptions.Singleline); + NextPrefixRegex = new Regex(DateTimeDefinitions.NextPrefixRegex, RegexOptions.Singleline); + PastPrefixRegex = new Regex(DateTimeDefinitions.PastPrefixRegex, RegexOptions.Singleline); DayOfMonth = config.DayOfMonth; DayOfWeek = config.DayOfWeek; MonthOfYear = config.MonthOfYear; CardinalMap = config.CardinalMap; UnitMap = config.UnitMap; UtilityConfiguration = config.UtilityConfiguration; + SameDayTerms = DateTimeDefinitions.SameDayTerms.ToImmutableList(); + PlusOneDayTerms = DateTimeDefinitions.PlusOneDayTerms.ToImmutableList(); + PlusTwoDayTerms = DateTimeDefinitions.PlusTwoDayTerms.ToImmutableList(); + MinusOneDayTerms = DateTimeDefinitions.MinusOneDayTerms.ToImmutableList(); + MinusTwoDayTerms = DateTimeDefinitions.MinusTwoDayTerms.ToImmutableList(); } public int GetSwiftDay(string text) @@ -163,5 +187,10 @@ public bool IsCardinalLast(string text) return (trimmedText.Equals("dernière") || trimmedText.Equals("dernières") || trimmedText.Equals("derniere") || trimmedText.Equals("dernieres")); } + + public string Normalize(string text) + { + return text; + } } } diff --git a/.NET/Microsoft.Recognizers.Text.DateTime/German/Parsers/GermanDateParserConfiguration.cs b/.NET/Microsoft.Recognizers.Text.DateTime/German/Parsers/GermanDateParserConfiguration.cs index f01408329e..a2f7b2b954 100644 --- a/.NET/Microsoft.Recognizers.Text.DateTime/German/Parsers/GermanDateParserConfiguration.cs +++ b/.NET/Microsoft.Recognizers.Text.DateTime/German/Parsers/GermanDateParserConfiguration.cs @@ -60,17 +60,11 @@ public class GermanDateParserConfiguration : BaseOptionsConfiguration, IDatePars public Regex RelativeWeekDayRegex { get; } - public static readonly Regex RelativeDayRegex= new Regex( - DateTimeDefinitions.RelativeDayRegex, - RegexOptions.Singleline); + public Regex RelativeDayRegex { get; } - public static readonly Regex NextPrefixRegex = new Regex( - DateTimeDefinitions.NextPrefixRegex, - RegexOptions.Singleline); + public Regex NextPrefixRegex { get; } - public static readonly Regex PastPrefixRegex = new Regex( - DateTimeDefinitions.PastPrefixRegex, - RegexOptions.Singleline); + public Regex PastPrefixRegex { get; } public IImmutableDictionary DayOfMonth { get; } @@ -80,6 +74,16 @@ public class GermanDateParserConfiguration : BaseOptionsConfiguration, IDatePars public IImmutableDictionary CardinalMap { get; } + public IImmutableList SameDayTerms { get; } + + public IImmutableList PlusOneDayTerms { get; } + + public IImmutableList MinusOneDayTerms { get; } + + public IImmutableList PlusTwoDayTerms { get; } + + public IImmutableList MinusTwoDayTerms { get; } + public IDateTimeUtilityConfiguration UtilityConfiguration { get; } public GermanDateParserConfiguration(ICommonDateTimeParserConfiguration config) : base(config) @@ -108,54 +112,23 @@ public GermanDateParserConfiguration(ICommonDateTimeParserConfiguration config) RelativeMonthRegex = GermanDateExtractorConfiguration.RelativeMonthRegex; YearSuffix = GermanDateExtractorConfiguration.YearSuffix; RelativeWeekDayRegex = GermanDateExtractorConfiguration.RelativeWeekDayRegex; + RelativeDayRegex = new Regex(DateTimeDefinitions.RelativeDayRegex, RegexOptions.Singleline); + NextPrefixRegex = new Regex(DateTimeDefinitions.NextPrefixRegex, RegexOptions.Singleline); + PastPrefixRegex = new Regex(DateTimeDefinitions.PastPrefixRegex, RegexOptions.Singleline); DayOfMonth = config.DayOfMonth; DayOfWeek = config.DayOfWeek; MonthOfYear = config.MonthOfYear; CardinalMap = config.CardinalMap; UnitMap = config.UnitMap; UtilityConfiguration = config.UtilityConfiguration; - } - - public int GetSwiftDay(string text) - { - var trimmedText = text.Trim().ToLowerInvariant(); - var swift = 0; - - var match = RelativeDayRegex.Match(text); - - if (trimmedText.Equals("heute")) - { - swift = 0; - } - else if (trimmedText.Equals("morgen") || trimmedText.Equals("tmr")) - { - swift = 1; - } - else if (trimmedText.Equals("gestern")) - { - swift = -1; - } - else if (trimmedText.EndsWith("übermorgen")) - { - swift = 2; - } - else if (trimmedText.EndsWith("vorgestern")) - { - swift = -2; - } - else if (match.Success) - { - swift = GetSwift(text); - } - return swift; + SameDayTerms = DateTimeDefinitions.SameDayTerms.ToImmutableList(); + PlusOneDayTerms = DateTimeDefinitions.PlusOneDayTerms.ToImmutableList(); + PlusTwoDayTerms = DateTimeDefinitions.PlusTwoDayTerms.ToImmutableList(); + MinusOneDayTerms = DateTimeDefinitions.MinusOneDayTerms.ToImmutableList(); + MinusTwoDayTerms = DateTimeDefinitions.MinusTwoDayTerms.ToImmutableList(); } public int GetSwiftMonth(string text) - { - return GetSwift(text); - } - - public int GetSwift(string text) { var trimmedText = text.Trim().ToLowerInvariant(); var swift = 0; @@ -167,6 +140,7 @@ public int GetSwift(string text) { swift = -1; } + return swift; } @@ -175,5 +149,10 @@ public bool IsCardinalLast(string text) var trimmedText = text.Trim().ToLowerInvariant(); return trimmedText.Equals("letzten"); } + + public string Normalize(string text) + { + return text; + } } } diff --git a/.NET/Microsoft.Recognizers.Text.DateTime/Italian/Parsers/ItalianDateParserConfiguration.cs b/.NET/Microsoft.Recognizers.Text.DateTime/Italian/Parsers/ItalianDateParserConfiguration.cs index ab794a1578..3480e32e9f 100644 --- a/.NET/Microsoft.Recognizers.Text.DateTime/Italian/Parsers/ItalianDateParserConfiguration.cs +++ b/.NET/Microsoft.Recognizers.Text.DateTime/Italian/Parsers/ItalianDateParserConfiguration.cs @@ -61,6 +61,12 @@ public class ItalianDateParserConfiguration : BaseOptionsConfiguration, IDatePar public Regex RelativeWeekDayRegex { get; } + public Regex RelativeDayRegex { get; } + + public Regex NextPrefixRegex { get; } + + public Regex PastPrefixRegex { get; } + public IImmutableDictionary DayOfMonth { get; } public IImmutableDictionary DayOfWeek { get; } @@ -69,6 +75,16 @@ public class ItalianDateParserConfiguration : BaseOptionsConfiguration, IDatePar public IImmutableDictionary CardinalMap { get; } + public IImmutableList SameDayTerms { get; } + + public IImmutableList PlusOneDayTerms { get; } + + public IImmutableList MinusOneDayTerms { get; } + + public IImmutableList PlusTwoDayTerms { get; } + + public IImmutableList MinusTwoDayTerms { get; } + public IDateTimeUtilityConfiguration UtilityConfiguration { get; } public ItalianDateParserConfiguration(ICommonDateTimeParserConfiguration config) : base(config.Options) @@ -98,47 +114,20 @@ public ItalianDateParserConfiguration(ICommonDateTimeParserConfiguration config) RelativeMonthRegex = ItalianDateExtractorConfiguration.RelativeMonthRegex; YearSuffix = ItalianDateExtractorConfiguration.YearSuffix; RelativeWeekDayRegex = ItalianDateExtractorConfiguration.RelativeWeekDayRegex; + RelativeDayRegex = new Regex(DateTimeDefinitions.RelativeDayRegex, RegexOptions.Singleline); + NextPrefixRegex = new Regex(DateTimeDefinitions.NextPrefixRegex, RegexOptions.Singleline); + PastPrefixRegex = new Regex(DateTimeDefinitions.PastPrefixRegex, RegexOptions.Singleline); DayOfMonth = config.DayOfMonth; DayOfWeek = config.DayOfWeek; MonthOfYear = config.MonthOfYear; CardinalMap = config.CardinalMap; UnitMap = config.UnitMap; UtilityConfiguration = config.UtilityConfiguration; - } - - public int GetSwiftDay(string text) - { - var trimmedText = text.Trim().ToLowerInvariant(); - - var swift = 0; - if (trimmedText.Equals("aujourd'hui") || trimmedText.Equals("auj")) //today - { - swift = 0; - } - else if (trimmedText.Equals("demain") || trimmedText.Equals("a2m1") || - trimmedText.Equals("lendemain") || trimmedText.Equals("jour suivant")) - { - swift = 1; - } - else if (trimmedText.Equals("hier")) // yesterday - { - swift = -1; - } - else if (trimmedText.EndsWith("après demain") || // day after tomorrow - trimmedText.EndsWith("après-demain")) - { - swift = 2; - } - else if (trimmedText.StartsWith("avant-hier") || // day before yesterday - trimmedText.StartsWith("avant hier")) - { - swift = -2; - } - else if (trimmedText.EndsWith("dernier")) // dernier - { - swift = -1; - } - return swift; + SameDayTerms = DateTimeDefinitions.SameDayTerms.ToImmutableList(); + PlusOneDayTerms = DateTimeDefinitions.PlusOneDayTerms.ToImmutableList(); + PlusTwoDayTerms = DateTimeDefinitions.PlusTwoDayTerms.ToImmutableList(); + MinusOneDayTerms = DateTimeDefinitions.MinusOneDayTerms.ToImmutableList(); + MinusTwoDayTerms = DateTimeDefinitions.MinusTwoDayTerms.ToImmutableList(); } public int GetSwiftMonth(string text) @@ -163,5 +152,10 @@ public bool IsCardinalLast(string text) return (trimmedText.Equals("dernière") || trimmedText.Equals("dernières") || trimmedText.Equals("derniere") || trimmedText.Equals("dernieres")); } + + public string Normalize(string text) + { + return text; + } } } diff --git a/.NET/Microsoft.Recognizers.Text.DateTime/Parsers/BaseDateParser.cs b/.NET/Microsoft.Recognizers.Text.DateTime/Parsers/BaseDateParser.cs index 3945a59d39..9ee2cc1329 100644 --- a/.NET/Microsoft.Recognizers.Text.DateTime/Parsers/BaseDateParser.cs +++ b/.NET/Microsoft.Recognizers.Text.DateTime/Parsers/BaseDateParser.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; using System.Text.RegularExpressions; using DateObject = System.DateTime; @@ -166,7 +168,7 @@ private DateTimeResolutionResult ParseImplicitDate(string text, DateObject refer match = this.config.SpecialDayRegex.Match(trimmedText); if (match.Success && match.Index == 0 && match.Length == trimmedText.Length) { - var swift = this.config.GetSwiftDay(match.Value); + var swift = GetSwiftDay(match.Value); var value = referenceDate.AddDays(swift); @@ -181,7 +183,7 @@ private DateTimeResolutionResult ParseImplicitDate(string text, DateObject refer match = this.config.SpecialDayWithNumRegex.Match(trimmedText); if (match.Success && match.Index == 0 && match.Length == trimmedText.Length) { - var swift = this.config.GetSwiftDay(match.Groups["day"].Value); + var swift = GetSwiftDay(match.Groups["day"].Value); var numErs = this.config.IntegerExtractor.Extract(trimmedText); var numOfDays = Convert.ToInt32((double)(this.config.NumberParser.Parse(numErs[0]).Value ?? 0)); @@ -523,7 +525,7 @@ private DateTimeResolutionResult ParseDurationWithAgoAndLater(string text, DateO return AgoLaterUtil.ParseDurationWithAgoAndLater(text, referenceDate, config.DurationExtractor, config.DurationParser, config.UnitMap, config.UnitRegex, - config.UtilityConfiguration, config.GetSwiftDay); + config.UtilityConfiguration, GetSwiftDay); } // parse a regex match which includes 'day', 'month' and 'year' (optional) group @@ -685,5 +687,75 @@ public List FilterResults(string query, List terms) + { + var result = false; + + foreach (var term in terms) + { + if (text.EndsWith(term)) + { + result = true; + break; + } + } + + return result; + } } } \ No newline at end of file diff --git a/.NET/Microsoft.Recognizers.Text.DateTime/Parsers/IDateParserConfiguration.cs b/.NET/Microsoft.Recognizers.Text.DateTime/Parsers/IDateParserConfiguration.cs index 47ed6c8ecc..e3d08312c7 100644 --- a/.NET/Microsoft.Recognizers.Text.DateTime/Parsers/IDateParserConfiguration.cs +++ b/.NET/Microsoft.Recognizers.Text.DateTime/Parsers/IDateParserConfiguration.cs @@ -46,6 +46,9 @@ public interface IDateParserConfiguration : IOptionsConfiguration Regex RelativeMonthRegex { get; } Regex YearSuffix { get; } Regex RelativeWeekDayRegex { get; } + Regex RelativeDayRegex { get; } + Regex NextPrefixRegex { get; } + Regex PastPrefixRegex { get; } #endregion @@ -58,12 +61,22 @@ public interface IDateParserConfiguration : IOptionsConfiguration #endregion - int GetSwiftDay(string text); + #region Lists + + IImmutableList SameDayTerms { get; } + IImmutableList PlusOneDayTerms { get; } + IImmutableList MinusOneDayTerms { get; } + IImmutableList PlusTwoDayTerms { get; } + IImmutableList MinusTwoDayTerms { get; } + + #endregion int GetSwiftMonth(string text); bool IsCardinalLast(string text); + string Normalize(string text); + IDateTimeUtilityConfiguration UtilityConfiguration { get; } } } diff --git a/.NET/Microsoft.Recognizers.Text.DateTime/Portuguese/Parsers/PortugueseDateParserConfiguration.cs b/.NET/Microsoft.Recognizers.Text.DateTime/Portuguese/Parsers/PortugueseDateParserConfiguration.cs index d827b6070f..28863896a3 100644 --- a/.NET/Microsoft.Recognizers.Text.DateTime/Portuguese/Parsers/PortugueseDateParserConfiguration.cs +++ b/.NET/Microsoft.Recognizers.Text.DateTime/Portuguese/Parsers/PortugueseDateParserConfiguration.cs @@ -60,12 +60,11 @@ public class PortugueseDateParserConfiguration : BaseOptionsConfiguration, IDate public Regex RelativeWeekDayRegex { get; } - //TODO: implement the relative day regex if needed. If yes, they should be abstracted - public static readonly Regex RelativeDayRegex = new Regex("", RegexOptions.Singleline); + public Regex RelativeDayRegex { get; } - public static readonly Regex NextPrefixRegex = new Regex(DateTimeDefinitions.NextPrefixRegex, RegexOptions.Singleline); + public Regex NextPrefixRegex { get; } - public static readonly Regex PastPrefixRegex = new Regex(DateTimeDefinitions.PastPrefixRegex, RegexOptions.Singleline); + public Regex PastPrefixRegex { get; } public IImmutableDictionary DayOfMonth { get; } @@ -75,6 +74,16 @@ public class PortugueseDateParserConfiguration : BaseOptionsConfiguration, IDate public IImmutableDictionary CardinalMap { get; } + public IImmutableList SameDayTerms { get; } + + public IImmutableList PlusOneDayTerms { get; } + + public IImmutableList MinusOneDayTerms { get; } + + public IImmutableList PlusTwoDayTerms { get; } + + public IImmutableList MinusTwoDayTerms { get; } + public IDateTimeUtilityConfiguration UtilityConfiguration { get; } public PortugueseDateParserConfiguration(ICommonDateTimeParserConfiguration config) : base(config) @@ -96,6 +105,9 @@ public PortugueseDateParserConfiguration(ICommonDateTimeParserConfiguration conf RelativeMonthRegex = PortugueseDateExtractorConfiguration.RelativeMonthRegex; YearSuffix = PortugueseDateExtractorConfiguration.YearSuffix; RelativeWeekDayRegex = PortugueseDateExtractorConfiguration.RelativeWeekDayRegex; + RelativeDayRegex = new Regex(DateTimeDefinitions.RelativeDayRegex, RegexOptions.Singleline); + NextPrefixRegex = new Regex(DateTimeDefinitions.NextPrefixRegex, RegexOptions.Singleline); + PastPrefixRegex = new Regex(DateTimeDefinitions.PastPrefixRegex, RegexOptions.Singleline); DayOfMonth = config.DayOfMonth; DayOfWeek = config.DayOfWeek; MonthOfYear = config.MonthOfYear; @@ -109,46 +121,11 @@ public PortugueseDateParserConfiguration(ICommonDateTimeParserConfiguration conf DurationParser = config.DurationParser; UnitMap = config.UnitMap; UtilityConfiguration = config.UtilityConfiguration; - } - - public int GetSwiftDay(string text) - { - var trimmedText = text.Trim().ToLowerInvariant().Normalized(); - var swift = 0; - - //TODO: add the relative day logic if needed. If yes, the whole method should be abstracted. - if (trimmedText.Equals("hoje") || trimmedText.Equals("este dia") || trimmedText.Equals("esse dia") || trimmedText.Equals("o dia")) - { - swift = 0; - } - else if (trimmedText.Equals("amanha") || - trimmedText.Equals("de amanha") || - trimmedText.EndsWith("dia seguinte") || - trimmedText.EndsWith("o dia de amanha") || - trimmedText.EndsWith("proximo dia")) - { - swift = 1; - } - else if (trimmedText.Equals("ontem")) - { - swift = -1; - } - else if (trimmedText.EndsWith("depois de amanha") || - trimmedText.EndsWith("dia depois de amanha")) - { - swift = 2; - } - else if (trimmedText.EndsWith("anteontem") || - trimmedText.EndsWith("dia antes de ontem")) - { - swift = -2; - } - else if (trimmedText.EndsWith("ultimo dia")) - { - swift = -1; - } - - return swift; + SameDayTerms = DateTimeDefinitions.SameDayTerms.ToImmutableList(); + PlusOneDayTerms = DateTimeDefinitions.PlusOneDayTerms.ToImmutableList(); + PlusTwoDayTerms = DateTimeDefinitions.PlusTwoDayTerms.ToImmutableList(); + MinusOneDayTerms = DateTimeDefinitions.MinusOneDayTerms.ToImmutableList(); + MinusTwoDayTerms = DateTimeDefinitions.MinusTwoDayTerms.ToImmutableList(); } public int GetSwiftMonth(string text) @@ -175,6 +152,10 @@ public bool IsCardinalLast(string text) return PastPrefixRegex.IsMatch(trimmedText); } + public string Normalize(string text) + { + return text.Normalized(); + } } public static class StringExtension diff --git a/.NET/Microsoft.Recognizers.Text.DateTime/Spanish/Parsers/SpanishDateParserConfiguration.cs b/.NET/Microsoft.Recognizers.Text.DateTime/Spanish/Parsers/SpanishDateParserConfiguration.cs index 950acc201f..ee2d018544 100644 --- a/.NET/Microsoft.Recognizers.Text.DateTime/Spanish/Parsers/SpanishDateParserConfiguration.cs +++ b/.NET/Microsoft.Recognizers.Text.DateTime/Spanish/Parsers/SpanishDateParserConfiguration.cs @@ -59,12 +59,11 @@ public class SpanishDateParserConfiguration : BaseOptionsConfiguration, IDatePar public Regex RelativeWeekDayRegex { get; } - //TODO: implement the relative day regex if needed. If yes, they should be abstracted - public static readonly Regex RelativeDayRegex = new Regex("", RegexOptions.Singleline); + public Regex RelativeDayRegex { get; } - public static readonly Regex NextPrefixRegex = new Regex(DateTimeDefinitions.NextPrefixRegex, RegexOptions.Singleline); + public Regex NextPrefixRegex { get; } - public static readonly Regex PastPrefixRegex = new Regex(DateTimeDefinitions.PastPrefixRegex, RegexOptions.Singleline); + public Regex PastPrefixRegex { get; } public IImmutableDictionary DayOfMonth { get; } @@ -74,6 +73,16 @@ public class SpanishDateParserConfiguration : BaseOptionsConfiguration, IDatePar public IImmutableDictionary CardinalMap { get; } + public IImmutableList SameDayTerms { get; } + + public IImmutableList PlusOneDayTerms { get; } + + public IImmutableList MinusOneDayTerms { get; } + + public IImmutableList PlusTwoDayTerms { get; } + + public IImmutableList MinusTwoDayTerms { get; } + public IDateTimeUtilityConfiguration UtilityConfiguration { get; } public SpanishDateParserConfiguration(ICommonDateTimeParserConfiguration config) : base(config) @@ -95,6 +104,9 @@ public SpanishDateParserConfiguration(ICommonDateTimeParserConfiguration config) RelativeMonthRegex = SpanishDateExtractorConfiguration.RelativeMonthRegex; YearSuffix = SpanishDateExtractorConfiguration.YearSuffix; RelativeWeekDayRegex = SpanishDateExtractorConfiguration.RelativeWeekDayRegex; + RelativeDayRegex = new Regex(DateTimeDefinitions.RelativeDayRegex, RegexOptions.Singleline); + NextPrefixRegex = new Regex(DateTimeDefinitions.NextPrefixRegex, RegexOptions.Singleline); + PastPrefixRegex = new Regex(DateTimeDefinitions.PastPrefixRegex, RegexOptions.Singleline); DayOfMonth = config.DayOfMonth; DayOfWeek = config.DayOfWeek; MonthOfYear = config.MonthOfYear; @@ -108,50 +120,16 @@ public SpanishDateParserConfiguration(ICommonDateTimeParserConfiguration config) DurationParser = config.DurationParser; UnitMap = config.UnitMap; UtilityConfiguration = config.UtilityConfiguration; - } - - public int GetSwiftDay(string text) - { - var trimmedText = text.Trim().ToLowerInvariant().Normalized(); - var swift = 0; - - //TODO: add the relative day logic if needed. If yes, the whole method should be abstracted. - if (trimmedText.Equals("hoy") || trimmedText.Equals("el dia")) - { - swift = 0; - } - else if (trimmedText.Equals("mañana") || - trimmedText.EndsWith("dia siguiente") || - trimmedText.EndsWith("el dia de mañana") || - trimmedText.EndsWith("proximo dia")) - { - swift = 1; - } - else if (trimmedText.Equals("ayer")) - { - swift = -1; - } - else if (trimmedText.EndsWith("pasado mañana") || - trimmedText.EndsWith("dia despues de mañana")) - { - swift = 2; - } - else if (trimmedText.EndsWith("anteayer") || - trimmedText.EndsWith("dia antes de ayer")) - { - swift = -2; - } - else if (trimmedText.EndsWith("ultimo dia")) - { - swift = -1; - } - - return swift; + SameDayTerms = DateTimeDefinitions.SameDayTerms.ToImmutableList(); + PlusOneDayTerms = DateTimeDefinitions.PlusOneDayTerms.ToImmutableList(); + PlusTwoDayTerms = DateTimeDefinitions.PlusTwoDayTerms.ToImmutableList(); + MinusOneDayTerms = DateTimeDefinitions.MinusOneDayTerms.ToImmutableList(); + MinusTwoDayTerms = DateTimeDefinitions.MinusTwoDayTerms.ToImmutableList(); } public int GetSwiftMonth(string text) { - var trimmedText = text.Trim().ToLowerInvariant(); + var trimmedText = text.Trim().ToLowerInvariant().Normalized(); var swift = 0; if (NextPrefixRegex.IsMatch(trimmedText)) @@ -169,10 +147,14 @@ public int GetSwiftMonth(string text) public bool IsCardinalLast(string text) { - var trimmedText = text.Trim().ToLowerInvariant(); + var trimmedText = text.Trim().ToLowerInvariant().Normalized(); return PastPrefixRegex.IsMatch(trimmedText); } - + + public string Normalize(string text) + { + return text.Normalized(); + } } public static class StringExtension diff --git a/JavaScript/packages/recognizers-date-time/src/dateTime/english/dateConfiguration.ts b/JavaScript/packages/recognizers-date-time/src/dateTime/english/dateConfiguration.ts index 6056d29e3f..f6075f5580 100644 --- a/JavaScript/packages/recognizers-date-time/src/dateTime/english/dateConfiguration.ts +++ b/JavaScript/packages/recognizers-date-time/src/dateTime/english/dateConfiguration.ts @@ -159,6 +159,10 @@ export class EnglishDateParserConfiguration implements IDateParserConfiguration swift = 2; } else if (trimmedText.endsWith("day before yesterday")) { swift = -2; + } else if (trimmedText.endsWith("day after")) { + swift = 1; + } else if (trimmedText.endsWith("day before")) { + swift = -1; } else if (matches.length) { swift = this.getSwift(source); } diff --git a/JavaScript/packages/recognizers-date-time/src/dateTime/french/dateConfiguration.ts b/JavaScript/packages/recognizers-date-time/src/dateTime/french/dateConfiguration.ts index 6cb437b07d..6ad708ac7a 100644 --- a/JavaScript/packages/recognizers-date-time/src/dateTime/french/dateConfiguration.ts +++ b/JavaScript/packages/recognizers-date-time/src/dateTime/french/dateConfiguration.ts @@ -154,7 +154,8 @@ export class FrenchDateParserConfiguration implements IDateParserConfiguration { } else if (trimedText === "hier") { swift = -1; } else if (trimedText.endsWith("après demain") || - trimedText.endsWith("après-demain")) { + trimedText.endsWith("après-demain") || + trimedText.endsWith("apres-demain")) { swift = 2; } else if (trimedText.endsWith("avant-hier") || trimedText.endsWith("avant hier")) { diff --git a/JavaScript/packages/recognizers-date-time/src/resources/chineseDateTime.ts b/JavaScript/packages/recognizers-date-time/src/resources/chineseDateTime.ts index 8d7e470b89..c98411a983 100644 --- a/JavaScript/packages/recognizers-date-time/src/resources/chineseDateTime.ts +++ b/JavaScript/packages/recognizers-date-time/src/resources/chineseDateTime.ts @@ -97,7 +97,7 @@ export namespace ChineseDateTime { export const DurationYearRegex = `((\\d{3,4})|0\\d|两千)\\s*年`; export const DurationHalfSuffixRegex = `半`; export const DurationSuffixList: ReadonlyMap = new Map([["M", "分钟"],["S", "秒钟|秒"],["H", "个小时|小时"],["D", "天"],["W", "星期|个星期|周"],["Mon", "个月"],["Y", "年"]]); - export const DurationAmbiguousUnits = [ '分钟','秒钟','秒','个小时','小时','天','星期','个星期','周','个月','年' ]; + export const DurationAmbiguousUnits = [ "分钟","秒钟","秒","个小时","小时","天","星期","个星期","周","个月","年" ]; export const LunarHolidayRegex = `((${DatePeriodYearRegex}|${DatePeriodYearInChineseRegex}|(?明年|今年|去年))(的)?)?(?除夕|春节|中秋节|中秋|元宵节|端午节|端午|重阳节)`; export const HolidayRegexList1 = `((${DatePeriodYearRegex}|${DatePeriodYearInChineseRegex}|(?明年|今年|去年))(的)?)?(?新年|五一|劳动节|元旦节|元旦|愚人节|圣诞节|植树节|国庆节|情人节|教师节|儿童节|妇女节|青年节|建军节|女生节|光棍节|双十一|清明节|清明)`; export const HolidayRegexList2 = `((${DatePeriodYearRegex}|${DatePeriodYearInChineseRegex}|(?明年|今年|去年))(的)?)?(?母亲节|父亲节|感恩节|万圣节)`; @@ -168,9 +168,9 @@ export namespace ChineseDateTime { export const TimeNumberDictionary: ReadonlyMap = new Map([["零", 0],["一", 1],["二", 2],["三", 3],["四", 4],["五", 5],["六", 6],["七", 7],["八", 8],["九", 9],["〇", 0],["两", 2],["十", 10]]); export const TimeLowBoundDesc: ReadonlyMap = new Map([["中午", 11],["下午", 12],["午后", 12],["晚上", 18],["夜里", 18],["夜晚", 18],["夜间", 18],["深夜", 18],["傍晚", 18],["晚", 18],["pm", 12]]); export const DefaultLanguageFallback = 'DMY'; - export const MorningTermList = [ '上午' ]; - export const AfternoonTermList = [ '下午' ]; - export const EveningTermList = [ '晚上' ]; - export const DaytimeTermList = [ '白天' ]; - export const NightTermList = [ '深夜' ]; + export const MorningTermList = [ "上午" ]; + export const AfternoonTermList = [ "下午" ]; + export const EveningTermList = [ "晚上" ]; + export const DaytimeTermList = [ "白天" ]; + export const NightTermList = [ "深夜" ]; } diff --git a/JavaScript/packages/recognizers-date-time/src/resources/englishDateTime.ts b/JavaScript/packages/recognizers-date-time/src/resources/englishDateTime.ts index 1f85b3f32e..824c5f0728 100644 --- a/JavaScript/packages/recognizers-date-time/src/resources/englishDateTime.ts +++ b/JavaScript/packages/recognizers-date-time/src/resources/englishDateTime.ts @@ -33,7 +33,7 @@ export namespace EnglishDateTime { export const SingleWeekDayRegex = `\\b(?sunday|monday|tuesday|wednesday|thursday|friday|saturday|mon|tue|tues|wedn|weds|wed|thurs|thur|thu|fri|((?<=on\\s+)(sat|sun)))\\b`; export const RelativeMonthRegex = `(?(of\\s+)?${RelativeRegex}\\s+month)\\b`; export const WrittenMonthRegex = `(((the\\s+)?month of\\s+)?(?april|apr|august|aug|december|dec|february|feb|january|jan|july|jul|june|jun|march|mar|may|november|nov|october|oct|september|sept|sep))`; - export const MonthSuffixRegex = `(?(in\\s+|of\\s+|on\\s+)?(${RelativeMonthRegex}|${WrittenMonthRegex}))`; + export const MonthSuffixRegex = `(?((in|of|on)\\s+)?(${RelativeMonthRegex}|${WrittenMonthRegex}))`; export const DateUnitRegex = `(?decades?|years?|months?|weeks?|(?business\\s+)?days?)\\b`; export const DateTokenPrefix = 'on '; export const TimeTokenPrefix = 'at '; @@ -77,7 +77,7 @@ export namespace EnglishDateTime { export const ThisRegex = `\\b((this(\\s*week)?(\\s*on)?\\s+)${WeekDayRegex})|(${WeekDayRegex}((\\s+of)?\\s+this\\s*week))\\b`; export const LastDateRegex = `\\b(${PastPrefixRegex}(\\s*week)?\\s+${WeekDayRegex})|(${WeekDayRegex}(\\s+last\\s*week))\\b`; export const NextDateRegex = `\\b(${NextPrefixRegex}(\\s*week(\\s*,?\\s*on)?)?\\s+${WeekDayRegex})|((on\\s+)?${WeekDayRegex}((\\s+of)?\\s+(the\\s+following|(the\\s+)?next)\\s*week))\\b`; - export const SpecialDayRegex = `\\b((the\\s+)?day before yesterday|(the\\s+)?day after (tomorrow|tmr)|((the\\s+)?(${RelativeRegex}|my)\\s+day)|yesterday|tomorrow|tmr|today)\\b`; + export const SpecialDayRegex = `\\b((the\\s+)?day before yesterday|(the\\s+)?day after (tomorrow|tmr)|the\\s+day\\s+(before|after)(?!=\\s+day)|((the\\s+)?(${RelativeRegex}|my)\\s+day)|yesterday|tomorrow|tmr|today)\\b`; export const SpecialDayWithNumRegex = `\\b((?${WrittenNumRegex})\\s+days?\\s+from\\s+(?yesterday|tomorrow|tmr|today))\\b`; export const RelativeDayRegex = `\\b(((the\\s+)?${RelativeRegex}\\s+day))\\b`; export const SetWeekDayRegex = `\\b(?on\\s+)?(?morning|afternoon|evening|night|sunday|monday|tuesday|wednesday|thursday|friday|saturday)s\\b`; @@ -151,7 +151,7 @@ export namespace EnglishDateTime { export const SpecificTimeOfDayRegex = `\\b((${StrictRelativeRegex}\\s+${TimeOfDayRegex})\\b|\\btonight)s?\\b`; export const TimeFollowedUnit = `^\\s*${TimeUnitRegex}`; export const TimeNumberCombinedWithUnit = `\\b(?\\d+(\\.\\d*)?)${TimeUnitRegex}`; - export const BusinessHourSplitStrings = [ 'business','hour' ]; + export const BusinessHourSplitStrings = [ "business","hour" ]; export const NowRegex = `\\b(?(right\\s+)?now|as soon as possible|asap|recently|previously)\\b`; export const SuffixRegex = `^\\s*(in the\\s+)?(morning|afternoon|evening|night)\\b`; export const DateTimeTimeOfDayRegex = `\\b(?morning|afternoon|night|evening)\\b`; @@ -250,12 +250,17 @@ export namespace EnglishDateTime { export const WrittenDecades: ReadonlyMap = new Map([["hundreds", 0],["tens", 10],["twenties", 20],["thirties", 30],["forties", 40],["fifties", 50],["sixties", 60],["seventies", 70],["eighties", 80],["nineties", 90]]); export const SpecialDecadeCases: ReadonlyMap = new Map([["noughties", 2000],["two thousands", 2000]]); export const DefaultLanguageFallback = 'MDY'; - export const SuperfluousWordList = [ 'preferably','how about','maybe','say','like' ]; - export const DurationDateRestrictions = [ 'today','now' ]; + export const SuperfluousWordList = [ "preferably","how about","maybe","say","like" ]; + export const DurationDateRestrictions = [ "today","now" ]; export const AmbiguityFiltersDict: ReadonlyMap = new Map([["\\bmorning|afternoon|evening|night|day\\b", "\\b(good\\s+(morning|afternoon|evening|night|day))|(nighty\\s+night)\\b"],["\\bmay\\b", "\\b((^may i)|(i|you|he|she|we|they)\\s+may|(may\\s+((((also|not|(also not)|well)\\s+)?(be|contain|constitute|email|e-mail|take|have|result|involve|get|work|reply))|(or may not))))\\b"]]); - export const MorningTermList = [ 'morning' ]; - export const AfternoonTermList = [ 'afternoon' ]; - export const EveningTermList = [ 'evening' ]; - export const DaytimeTermList = [ 'daytime' ]; - export const NightTermList = [ 'night' ]; + export const MorningTermList = [ "morning" ]; + export const AfternoonTermList = [ "afternoon" ]; + export const EveningTermList = [ "evening" ]; + export const DaytimeTermList = [ "daytime" ]; + export const NightTermList = [ "night" ]; + export const SameDayTerms = [ "today" ]; + export const PlusOneDayTerms = [ "tomorrow","tmr","day after" ]; + export const MinusOneDayTerms = [ "yesterday","day before" ]; + export const PlusTwoDayTerms = [ "day after tomorrow","day after tmr" ]; + export const MinusTwoDayTerms = [ "day before yesterday" ]; } diff --git a/JavaScript/packages/recognizers-date-time/src/resources/frenchDateTime.ts b/JavaScript/packages/recognizers-date-time/src/resources/frenchDateTime.ts index 7525579c65..1d4154902c 100644 --- a/JavaScript/packages/recognizers-date-time/src/resources/frenchDateTime.ts +++ b/JavaScript/packages/recognizers-date-time/src/resources/frenchDateTime.ts @@ -185,6 +185,9 @@ export namespace FrenchDateTime { export const RelativeTimeUnitRegex = `((((${ThisPrefixRegex})?)\\s+(${TimeUnitRegex}(\\s*${NextSuffixRegex}|${PastSuffixRegex})?))|((le))\\s+(${RestrictedTimeUnitRegex}))`; export const RelativeDurationUnitRegex = `(((?<=(${ThisPrefixRegex})\\s+)?\\b(${DurationUnitRegex})(\\s+${NextSuffixRegex}|${PastSuffixRegex})?)|((le|my))\\s+(${RestrictedTimeUnitRegex}))`; export const ReferenceDatePeriodRegex = `^[.]`; + export const NextPrefixRegex = `^[\\.]`; + export const PastPrefixRegex = `^[\\.]`; + export const RelativeDayRegex = `^[\\.]`; export const ConnectorRegex = `^(,|pour|t|vers)$`; export const ConnectorAndRegex = `\\b(et\\s*(le|la(s)?)?)\\b.+`; export const FromRegex = `((de|du)?)$`; @@ -234,9 +237,14 @@ export namespace FrenchDateTime { export const SpecialDecadeCases: ReadonlyMap = new Map([["", 0]]); export const DefaultLanguageFallback = 'DMY'; export const DurationDateRestrictions = [ ]; - export const MorningTermList = [ 'matinee','matin','matinée' ]; - export const AfternoonTermList = [ 'apres-midi','apres midi','après midi','après-midi' ]; - export const EveningTermList = [ 'soir','soiree','soirée' ]; - export const DaytimeTermList = [ 'jour','journee','journée' ]; - export const NightTermList = [ 'nuit' ]; + export const MorningTermList = [ "matinee","matin","matinée" ]; + export const AfternoonTermList = [ "apres-midi","apres midi","après midi","après-midi" ]; + export const EveningTermList = [ "soir","soiree","soirée" ]; + export const DaytimeTermList = [ "jour","journee","journée" ]; + export const NightTermList = [ "nuit" ]; + export const SameDayTerms = [ "aujourd'hui","auj" ]; + export const PlusOneDayTerms = [ "demain","a2m1","lendemain","jour suivant" ]; + export const MinusOneDayTerms = [ "hier","dernier" ]; + export const PlusTwoDayTerms = [ "après demain","après-demain","apres-demain" ]; + export const MinusTwoDayTerms = [ "avant-hier","avant hier" ]; } diff --git a/JavaScript/packages/recognizers-date-time/src/resources/portugueseDateTime.ts b/JavaScript/packages/recognizers-date-time/src/resources/portugueseDateTime.ts index bec48adf69..042d4c8bd6 100644 --- a/JavaScript/packages/recognizers-date-time/src/resources/portugueseDateTime.ts +++ b/JavaScript/packages/recognizers-date-time/src/resources/portugueseDateTime.ts @@ -217,9 +217,14 @@ export namespace PortugueseDateTime { export const DefaultLanguageFallback = 'DMY'; export const DurationDateRestrictions = [ ]; export const AmbiguityFiltersDict: ReadonlyMap = new Map([["null", "null"]]); - export const EarlyMorningTermList = [ 'madrugada' ]; - export const MorningTermList = [ 'manha','manhã' ]; - export const AfternoonTermList = [ 'passado o meio dia','depois do meio dia' ]; - export const EveningTermList = [ 'tarde' ]; - export const NightTermList = [ 'noite' ]; + export const EarlyMorningTermList = [ "madrugada" ]; + export const MorningTermList = [ "manha","manhã" ]; + export const AfternoonTermList = [ "passado o meio dia","depois do meio dia" ]; + export const EveningTermList = [ "tarde" ]; + export const NightTermList = [ "noite" ]; + export const SameDayTerms = [ "hoje","este dia","esse dia","o dia" ]; + export const PlusOneDayTerms = [ "amanha","de amanha","dia seguinte","o dia de amanha","proximo dia" ]; + export const MinusOneDayTerms = [ "ontem","ultimo dia" ]; + export const PlusTwoDayTerms = [ "depois de amanha","dia depois de amanha" ]; + export const MinusTwoDayTerms = [ "anteontem","dia antes de ontem" ]; } diff --git a/JavaScript/packages/recognizers-date-time/src/resources/spanishDateTime.ts b/JavaScript/packages/recognizers-date-time/src/resources/spanishDateTime.ts index 11bd7389c6..8b96aad179 100644 --- a/JavaScript/packages/recognizers-date-time/src/resources/spanishDateTime.ts +++ b/JavaScript/packages/recognizers-date-time/src/resources/spanishDateTime.ts @@ -215,9 +215,14 @@ export namespace SpanishDateTime { export const SpecialDecadeCases: ReadonlyMap = new Map([["", 0]]); export const DefaultLanguageFallback = 'DMY'; export const DurationDateRestrictions = [ ]; - export const EarlyMorningTermList = [ 'madrugada' ]; - export const MorningTermList = [ 'mañana' ]; - export const AfternoonTermList = [ 'pasado mediodia','pasado el mediodia' ]; - export const EveningTermList = [ 'tarde' ]; - export const NightTermList = [ 'noche' ]; + export const EarlyMorningTermList = [ "madrugada" ]; + export const MorningTermList = [ "mañana" ]; + export const AfternoonTermList = [ "pasado mediodia","pasado el mediodia" ]; + export const EveningTermList = [ "tarde" ]; + export const NightTermList = [ "noche" ]; + export const SameDayTerms = [ "hoy","el dia" ]; + export const PlusOneDayTerms = [ "mañana","dia siguiente","el dia de mañana","proximo dia" ]; + export const MinusOneDayTerms = [ "ayer","ultimo dia" ]; + export const PlusTwoDayTerms = [ "pasado mañana","dia despues de mañana" ]; + export const MinusTwoDayTerms = [ "anteayer","dia antes de ayer" ]; } diff --git a/JavaScript/packages/recognizers-number-with-unit/src/resources/chineseNumericWithUnit.ts b/JavaScript/packages/recognizers-number-with-unit/src/resources/chineseNumericWithUnit.ts index f27d2d3d22..9aca496ba0 100644 --- a/JavaScript/packages/recognizers-number-with-unit/src/resources/chineseNumericWithUnit.ts +++ b/JavaScript/packages/recognizers-number-with-unit/src/resources/chineseNumericWithUnit.ts @@ -8,7 +8,7 @@ import { BaseNumbers } from "./baseNumbers"; export namespace ChineseNumericWithUnit { - export const AgeAmbiguousValues = [ '岁' ]; + export const AgeAmbiguousValues = [ "岁" ]; export const AgeSuffixList: ReadonlyMap = new Map([["Year", "岁|周岁"],["Month", "个月大|月大"],["Week", "周大"],["Day", "天大"]]); export const BuildPrefix = ''; export const BuildSuffix = ''; @@ -18,10 +18,10 @@ export namespace ChineseNumericWithUnit { export const FractionalUnitNameToCodeMap: ReadonlyMap = new Map([["Jiao", "JIAO"],["Kopek", "KOPEK"],["Pul", "PUL"],["Cent", "CENT"],["Qindarkë", "QINDARKE"],["Penny", "PENNY"],["Santeem", "SANTEEM"],["Cêntimo", "CENTIMO"],["Centavo", "CENTAVO"],["Luma", "LUMA"],["Qəpik", "QƏPIK"],["Fils", "FILS"],["Poisha", "POISHA"],["Kapyeyka", "KAPYEYKA"],["Centime", "CENTIME"],["Chetrum", "CHETRUM"],["Paisa", "PAISA"],["Fening", "FENING"],["Thebe", "THEBE"],["Sen", "SEN"],["Stotinka", "STOTINKA"],["Fen", "FEN"],["Céntimo", "CENTIMO"],["Lipa", "LIPA"],["Haléř", "HALER"],["Øre", "ØRE"],["Piastre", "PIASTRE"],["Santim", "SANTIM"],["Oyra", "OYRA"],["Butut", "BUTUT"],["Tetri", "TETRI"],["Pesewa", "PESEWA"],["Fillér", "FILLER"],["Eyrir", "EYRIR"],["Dinar", "DINAR"],["Agora", "AGORA"],["Tïın", "TIIN"],["Chon", "CHON"],["Jeon", "JEON"],["Tyiyn", "TYIYN"],["Att", "ATT"],["Sente", "SENTE"],["Dirham", "DIRHAM"],["Rappen", "RAPPEN"],["Avo", "AVO"],["Deni", "DENI"],["Iraimbilanja", "IRAIMBILANJA"],["Tambala", "TAMBALA"],["Laari", "LAARI"],["Khoums", "KHOUMS"],["Ban", "BAN"],["Möngö", "MONGO"],["Pya", "PYA"],["Kobo", "KOBO"],["Kuruş", "KURUS"],["Baisa", "BAISA"],["Centésimo", "CENTESIMO"],["Toea", "TOEA"],["Sentimo", "SENTIMO"],["Grosz", "GROSZ"],["Sene", "SENE"],["Halala", "HALALA"],["Para", "PARA"],["Öre", "ORE"],["Diram", "DIRAM"],["Satang", "SATANG"],["Seniti", "SENITI"],["Millime", "MILLIME"],["Tennesi", "TENNESI"],["Kopiyka", "KOPIYKA"],["Tiyin", "TIYIN"],["Hào", "HAO"],["Ngwee", "NGWEE"]]); export const CompoundUnitConnectorRegex = `(?又|再)`; export const CurrencyPrefixList: ReadonlyMap = new Map([["Dollar", "$"],["United States dollar", "us$"],["British Virgin Islands dollar", "bvi$"],["Brunei dollar", "b$"],["Sen", "sen"],["Singapore dollar", "s$"],["Canadian dollar", "can$|c$|c $"],["Cayman Islands dollar", "ci$"],["New Zealand dollar", "nz$|nz $"],["Guyanese dollar", "gy$|gy $|g$|g $"],["Hong Kong dollar", "hk$|hkd|hk $"],["Jamaican dollar", "j$"],["Namibian dollar", "nad|n$|n $"],["Solomon Islands dollar", "si$|si $"],["New Taiwan dollar", "nt$|nt $"],["Samoan tālā", "ws$"],["Chinese yuan", "¥"],["Japanese yen", "¥"],["Turkish lira", "₺"],["Euro", "€"],["Pound", "£"],["Costa Rican colón", "₡"]]); - export const CurrencyAmbiguousValues = [ '元','仙','分','圆','块','毛','盾','箍','蚊','角' ]; + export const CurrencyAmbiguousValues = [ "元","仙","分","圆","块","毛","盾","箍","蚊","角" ]; export const DimensionSuffixList: ReadonlyMap = new Map([["Meter", "米|公尺|m"],["Kilometer", "千米|公里|km"],["Decimeter", "分米|公寸|dm"],["Centimeter", "釐米|厘米|公分|cm"],["Micrometer", "毫米|公釐|mm"],["Microns", "微米"],["Picometer", "皮米"],["Nanometer", "纳米"],["Li", "里|市里"],["Zhang", "丈"],["Chi", "市尺|尺"],["Cun", "市寸|寸"],["Fen", "市分|分"],["Hao", "毫"],["Mile", "英里"],["Inch", "英寸"],["Foot", "呎|英尺"],["Yard", "码"],["Knot", "海里"],["Light year", "光年"],["Meter per second", "米每秒|米/秒|m/s"],["Kilometer per hour", "公里每小时|千米每小时|公里/小时|千米/小时|km/h"],["Kilometer per minute", "公里每分钟|千米每分钟|公里/分钟|千米/分钟|km/min"],["Kilometer per second", "公里每秒|千米每秒|公里/秒|千米/秒|km/s"],["Mile per hour", "英里每小时|英里/小时"],["Foot per second", "英尺每小时|英尺/小时"],["Foot per minute", "英尺每分钟|英尺/分钟"],["Yard per minute", "码每分|码/分"],["Yard per second", "码每秒|码/秒"],["Square centimetre", "平方厘米"],["Square decimeter", "平方分米"],["Square meter", "平方米"],["Square kilometer", "平方公里"],["Acre", "英亩|公亩"],["Hectare", "公顷"],["Mu", "亩|市亩"],["Liter", "公升|升|l"],["Milliliter", "毫升|ml"],["Cubic meter", "立方米"],["Cubic decimeter", "立方分米"],["Cubic millimeter", "立方毫米"],["Cubic feet", "立方英尺"],["Gallon", "加仑"],["Pint", "品脱"],["Dou", "市斗|斗"],["Dan", "市石|石"],["Kilogram", "千克|公斤|kg"],["Jin", "市斤|斤"],["Milligram", "毫克|mg"],["Barrel", "桶"],["Pot", "罐"],["Gram", "克|g"],["Ton", "公吨|吨|t"],["Pound", "磅"],["Ounce", "盎司"],["Bit", "比特|位|b"],["Byte", "字节|byte"],["Kilobyte", "千字节|kb"],["Megabyte", "兆字节|mb"],["Gigabyte", "十亿字节|千兆字节|gb"],["Terabyte", "万亿字节|兆兆字节|tb"],["Petabyte", "千兆兆|千万亿字节|pb"]]); - export const DimensionAmbiguousValues = [ '丈','位','克','分','升','寸','尺','斗','斤','桶','毫','石','码','磅','米','罐','里','m','km','dm','cm','mm','l','ml','kg','mg','g','t','b','byte','kb','mb','gb','tb','pb' ]; + export const DimensionAmbiguousValues = [ "丈","位","克","分","升","寸","尺","斗","斤","桶","毫","石","码","磅","米","罐","里","m","km","dm","cm","mm","l","ml","kg","mg","g","t","b","byte","kb","mb","gb","tb","pb" ]; export const TemperatureSuffixList: ReadonlyMap = new Map([["F", "华氏温度|华氏度|°f"],["K", "开尔文温度|开氏度|凯氏度|K|k"],["R", "兰氏温度|°r"],["C", "摄氏温度|摄氏度|°c"],["Degree", "度"]]); export const TemperaturePrefixList: ReadonlyMap = new Map([["F", "华氏温度|华氏"],["K", "开氏温度|开氏"],["R", "兰氏温度|兰氏"],["C", "摄氏温度|摄氏"]]); - export const TemperatureAmbiguousValues = [ '度','k' ]; + export const TemperatureAmbiguousValues = [ "度","k" ]; } diff --git a/JavaScript/packages/recognizers-number-with-unit/src/resources/englishNumericWithUnit.ts b/JavaScript/packages/recognizers-number-with-unit/src/resources/englishNumericWithUnit.ts index 9715873c34..5cab9badd6 100644 --- a/JavaScript/packages/recognizers-number-with-unit/src/resources/englishNumericWithUnit.ts +++ b/JavaScript/packages/recognizers-number-with-unit/src/resources/englishNumericWithUnit.ts @@ -15,18 +15,18 @@ export namespace EnglishNumericWithUnit { export const FractionalUnitNameToCodeMap: ReadonlyMap = new Map([["Jiao", "JIAO"],["Kopek", "KOPEK"],["Pul", "PUL"],["Cent", "CENT"],["Qindarkë", "QINDARKE"],["Penny", "PENNY"],["Santeem", "SANTEEM"],["Cêntimo", "CENTIMO"],["Centavo", "CENTAVO"],["Luma", "LUMA"],["Qəpik", "QƏPIK"],["Fils", "FILS"],["Poisha", "POISHA"],["Kapyeyka", "KAPYEYKA"],["Centime", "CENTIME"],["Chetrum", "CHETRUM"],["Paisa", "PAISA"],["Fening", "FENING"],["Thebe", "THEBE"],["Sen", "SEN"],["Stotinka", "STOTINKA"],["Fen", "FEN"],["Céntimo", "CENTIMO"],["Lipa", "LIPA"],["Haléř", "HALER"],["Øre", "ØRE"],["Piastre", "PIASTRE"],["Santim", "SANTIM"],["Oyra", "OYRA"],["Butut", "BUTUT"],["Tetri", "TETRI"],["Pesewa", "PESEWA"],["Fillér", "FILLER"],["Eyrir", "EYRIR"],["Dinar", "DINAR"],["Agora", "AGORA"],["Tïın", "TIIN"],["Chon", "CHON"],["Jeon", "JEON"],["Tyiyn", "TYIYN"],["Att", "ATT"],["Sente", "SENTE"],["Dirham", "DIRHAM"],["Rappen", "RAPPEN"],["Avo", "AVO"],["Deni", "DENI"],["Iraimbilanja", "IRAIMBILANJA"],["Tambala", "TAMBALA"],["Laari", "LAARI"],["Khoums", "KHOUMS"],["Ban", "BAN"],["Möngö", "MONGO"],["Pya", "PYA"],["Kobo", "KOBO"],["Kuruş", "KURUS"],["Baisa", "BAISA"],["Centésimo", "CENTESIMO"],["Toea", "TOEA"],["Sentimo", "SENTIMO"],["Grosz", "GROSZ"],["Sene", "SENE"],["Halala", "HALALA"],["Para", "PARA"],["Öre", "ORE"],["Diram", "DIRAM"],["Satang", "SATANG"],["Seniti", "SENITI"],["Millime", "MILLIME"],["Tennesi", "TENNESI"],["Kopiyka", "KOPIYKA"],["Tiyin", "TIYIN"],["Hào", "HAO"],["Ngwee", "NGWEE"]]); export const CompoundUnitConnectorRegex = `(?and)`; export const CurrencyPrefixList: ReadonlyMap = new Map([["Dollar", "$"],["United States dollar", "united states $|us$|us $|u.s. $|u.s $"],["East Caribbean dollar", "east caribbean $"],["Australian dollar", "australian $|australia $"],["Bahamian dollar", "bahamian $|bahamia $"],["Barbadian dollar", "barbadian $|barbadin $"],["Belize dollar", "belize $"],["Bermudian dollar", "bermudian $"],["British Virgin Islands dollar", "british virgin islands $|bvi$|virgin islands $|virgin island $|british virgin island $"],["Brunei dollar", "brunei $|b$"],["Sen", "sen"],["Singapore dollar", "singapore $|s$"],["Canadian dollar", "canadian $|can$|c$|c $|canada $"],["Cayman Islands dollar", "cayman islands $|ci$|cayman island $"],["New Zealand dollar", "new zealand $|nz$|nz $"],["Cook Islands dollar", "cook islands $|cook island $"],["Fijian dollar", "fijian $|fiji $"],["Guyanese dollar", "gy$|gy $|g$|g $"],["Hong Kong dollar", "hong kong $|hk$|hkd|hk $"],["Jamaican dollar", "jamaican $|j$|jamaica $"],["Kiribati dollar", "kiribati $"],["Liberian dollar", "liberian $|liberia $"],["Micronesian dollar", "micronesian $"],["Namibian dollar", "namibian $|nad|n$|namibia $"],["Nauruan dollar", "nauruan $"],["Niue dollar", "niue $"],["Palauan dollar", "palauan $"],["Pitcairn Islands dollar", "pitcairn islands $|pitcairn island $"],["Solomon Islands dollar", "solomon islands $|si$|si $|solomon island $"],["Surinamese dollar", "surinamese $|surinam $"],["New Taiwan dollar", "nt$|nt $"],["Trinidad and Tobago dollar", "trinidad and tobago $|trinidad $|trinidadian $"],["Tuvaluan dollar", "tuvaluan $"],["Samoan tālā", "ws$"],["Chinese yuan", "¥"],["Japanese yen", "¥"],["Euro", "€"],["Pound", "£"],["Costa Rican colón", "₡"],["Turkish lira", "₺"]]); - export const AmbiguousCurrencyUnitList = [ 'din.','kiwi','kina','kobo','lari','lipa','napa','para','sfr.','taka','tala','toea','vatu','yuan','ang','ban','bob','btn','byr','cad','cop','cup','dop','gip','jod','kgs','lak','lei','mga','mop','nad','omr','pul','sar','sbd','scr','sdg','sek','sen','sol','sos','std','try','yer','yen' ]; + export const AmbiguousCurrencyUnitList = [ "din.","kiwi","kina","kobo","lari","lipa","napa","para","sfr.","taka","tala","toea","vatu","yuan","ang","ban","bob","btn","byr","cad","cop","cup","dop","gip","jod","kgs","lak","lei","mga","mop","nad","omr","pul","sar","sbd","scr","sdg","sek","sen","sol","sos","std","try","yer","yen" ]; export const InformationSuffixList: ReadonlyMap = new Map([["Bit", "-bit|bit|bits"],["Kilobit", "kilobit|kilobits|kb|Kb|kbit"],["Megabit", "megabit|megabits|mb|Mb|mbit"],["Gigabit", "gigabit|gigabits|gb|Gb|gbit"],["Terabit", "terabit|terabits|tb|Tb|tbit"],["Petabit", "petabit|petabits|pb|Pb|pbit"],["Byte", "-byte|byte|bytes"],["Kilobyte", "-kilobyte|-kilobytes|kilobyte|kB|KB|kilobytes|kilo byte|kilo bytes|kbyte"],["Megabyte", "-megabyte|-megabytes|megabyte|mB|MB|megabytes|mega byte|mega bytes|mbyte"],["Gigabyte", "-gigabyte|-gigabytes|gigabyte|gB|GB|gigabytes|giga byte|giga bytes|gbyte"],["Terabyte", "-terabyte|-terabytes|terabyte|tB|TB|terabytes|tera byte|tera bytes|tbyte"],["Petabyte", "-petabyte|-petabytes|petabyte|pB|PB|petabytes|peta byte|peta bytes|pbyte"]]); - export const AmbiguousDimensionUnitList = [ 'barrel','barrels','grain','pound','stone','yards','yard','cord','dram','feet','foot','gill','knot','peck','cup','fps','pts','in','dm','\"' ]; + export const AmbiguousDimensionUnitList = [ "barrel","barrels","grain","pound","stone","yards","yard","cord","dram","feet","foot","gill","knot","peck","cup","fps","pts","in","dm","\"" ]; export const BuildPrefix = `(?<=(\\s|^))`; export const BuildSuffix = `(?=(\\s|\\W|$))`; export const LengthSuffixList: ReadonlyMap = new Map([["Kilometer", "km|kilometer|kilometre|kilometers|kilometres|kilo meter|kilo meters|kilo metres|kilo metre"],["Hectometer", "hm|hectometer|hectometre|hectometers|hectometres|hecto meter|hecto meters|hecto metres|hecto metre"],["Decameter", "dam|decameter|decametre|decameters|decametres|deca meter|deca meters|deca metres|deca metre"],["Meter", "m|meter|metre|meters|metres"],["Decimeter", "dm|decimeter|decimeters|decimetre|decimetres|deci meter|deci meters|deci metres|deci metre"],["Centimeter", "cm|centimeter|centimeters|centimetre|centimetres|centi meter|centi meters|centi metres|centi metre"],["Millimeter", "mm|millimeter|millimeters|millimetre|millimetres|milli meter|milli meters|milli metres|milli metre"],["Micrometer", "μm|micrometer|micrometre|micrometers|micrometres|micro meter|micro meters|micro metres|micro metre"],["Nanometer", "nm|nanometer|nanometre|nanometers|nanometres|nano meter|nano meters|nano metres|nano metre"],["Picometer", "pm|picometer|picometre|picometers|picometres|pico meter|pico meters|pico metres|pico metre"],["Mile", "-mile|mile|miles"],["Yard", "yard|yards"],["Inch", "-inch|inch|inches|in|\""],["Foot", "-foot|foot|feet|ft"],["Light year", "light year|light-year|light years|light-years"],["Pt", "pt|pts"]]); - export const AmbiguousLengthUnitList = [ 'm','yard','yards','pm','pt','pts' ]; + export const AmbiguousLengthUnitList = [ "m","yard","yards","pm","pt","pts" ]; export const SpeedSuffixList: ReadonlyMap = new Map([["Meter per second", "meters / second|m/s|meters per second|metres per second|meter per second|metre per second"],["Kilometer per hour", "km/h|kilometres per hour|kilometers per hour|kilometer per hour|kilometre per hour"],["Kilometer per minute", "km/min|kilometers per minute|kilometres per minute|kilometer per minute|kilometre per minute"],["Kilometer per second", "km/s|kilometers per second|kilometres per second|kilometer per second|kilometre per second"],["Mile per hour", "mph|mile per hour|miles per hour|mi/h|mile / hour|miles / hour|miles an hour"],["Knot", "kt|knot|kn"],["Foot per second", "ft/s|foot/s|foot per second|feet per second|fps"],["Foot per minute", "ft/min|foot/min|foot per minute|feet per minute"],["Yard per minute", "yards per minute|yard per minute|yards / minute|yards/min|yard/min"],["Yard per second", "yards per second|yard per second|yards / second|yards/s|yard/s"]]); export const TemperatureSuffixList: ReadonlyMap = new Map([["F", "degrees fahrenheit|degree fahrenheit|deg fahrenheit|degs fahrenheit|fahrenheit|°f|degrees farenheit|degree farenheit|deg farenheit|degs farenheit|degrees f|degree f|deg f|degs f|farenheit|f"],["K", "k|K|kelvin"],["R", "rankine|°r"],["D", "delisle|°de"],["C", "degrees celsius|degree celsius|deg celsius|degs celsius|celsius|degrees celcius|degree celcius|celcius|deg celcius|degs celcius|degrees centigrade|degree centigrade|centigrade|degrees centigrate|degree centigrate|degs centigrate|deg centigrate|centigrate|degrees c|degree c|deg c|degs c|°c|c"],["Degree", "degree|degrees|deg.|deg|°"]]); - export const AmbiguousTemperatureUnitList = [ 'c','f','k' ]; + export const AmbiguousTemperatureUnitList = [ "c","f","k" ]; export const VolumeSuffixList: ReadonlyMap = new Map([["Cubic meter", "m3|cubic meter|cubic meters|cubic metre|cubic metres"],["Cubic centimeter", "cubic centimeter|cubic centimetre|cubic centimeters|cubic centimetres"],["Cubic millimiter", "cubic millimiter|cubic millimitre|cubic millimiters|cubic millimitres"],["Hectoliter", "hectoliter|hectolitre|hectoliters|hectolitres"],["Decaliter", "decaliter|decalitre|dekaliter|dekalitre|decaliters|decalitres|dekaliters|dekalitres"],["Liter", "l|litre|liter|liters|litres"],["Deciliter", "dl|deciliter|decilitre|deciliters|decilitres"],["Centiliter", "cl|centiliter|centilitre|centiliters|centilitres"],["Milliliter", "ml|mls|millilitre|milliliter|millilitres|milliliters"],["Cubic yard", "cubic yard|cubic yards"],["Cubic inch", "cubic inch|cubic inches"],["Cubic foot", "cubic foot|cubic feet"],["Cubic mile", "cubic mile|cubic miles"],["Fluid ounce", "fl oz|fluid ounce|fluid ounces"],["Teaspoon", "teaspoon|teaspoons"],["Tablespoon", "tablespoon|tablespoons"],["Pint", "pint|pints"],["Volume unit", "fluid dram|gill|quart|minim|barrel|cord|peck|bushel|hogshead"]]); - export const AmbiguousVolumeUnitList = [ 'l','ounce','oz','cup','peck','cord','gill' ]; + export const AmbiguousVolumeUnitList = [ "l","ounce","oz","cup","peck","cord","gill" ]; export const WeightSuffixList: ReadonlyMap = new Map([["Kilogram", "kg|kilogram|kilograms|kilo|kilos"],["Gram", "g|gram|grams"],["Milligram", "mg|milligram|milligrams"],["Barrel", "barrels|barrel"],["Gallon", "-gallon|gallons|gallon"],["Metric ton", "metric tons|metric ton"],["Ton", "-ton|ton|tons|tonne|tonnes"],["Pound", "pound|pounds|lb"],["Ounce", "-ounce|ounce|oz|ounces"],["Weight unit", "pennyweight|grain|british long ton|us short hundredweight|stone|dram"]]); - export const AmbiguousWeightUnitList = [ 'g','oz','stone','dram' ]; + export const AmbiguousWeightUnitList = [ "g","oz","stone","dram" ]; } diff --git a/JavaScript/packages/recognizers-number-with-unit/src/resources/frenchNumericWithUnit.ts b/JavaScript/packages/recognizers-number-with-unit/src/resources/frenchNumericWithUnit.ts index a39933729d..94d528ff9b 100644 --- a/JavaScript/packages/recognizers-number-with-unit/src/resources/frenchNumericWithUnit.ts +++ b/JavaScript/packages/recognizers-number-with-unit/src/resources/frenchNumericWithUnit.ts @@ -13,20 +13,20 @@ export namespace FrenchNumericWithUnit { export const CurrencySuffixList: ReadonlyMap = new Map([["Abkhazie apsar", "abkhazie apsar|apsars"],["Afghan afghani", "afghan afghani|؋|afn|afghanis|afghani"],["Pul", "pul"],["Euro", "euros|euro|€|eur|d'euros"],["Cent", "cents|cent|-cents|-cent|sen"],["lek Albanais", "lek albanais|leks|lek"],["Qindarkë", "qindarkë|qindarkës|qindarke|qindarkes"],["Kwanza angolais", "kwanza angolais|kz|aoa|kwanza|kwanzas"],["Dram arménien", "dram arménien|drams arméniens"],["Florins d'Aruba", "florins aruba|ƒ|awg"],["Bangladeshi taka", "bangladeshi taka|৳|bdt|taka|takas|bangladeshi takas"],["Paisa", "poisha|paisa"],["Ngultrum bhoutanais", "ngultrum bhoutanais|nu.|btn"],["Chetrum", "chetrums|chetrum"],["Boliviano bolivien", "boliviano bolivien|bolivianos bolivien|bolivianos bolivie|boliviano bolivie|bob|bs."],["Bosnie-Herzégovine mark convertible", "bosnie-herzégovine mark convertible|bosnie-et-herzégovine mark convertible|bam"],["Fening", "fening|fenings"],["Pula", "pula|bwp"],["Thebe", "thebe"],["Réal brésilien", "réal brésilien|réals brésilien|r$|brl|real bresil|reals bresilien"],["Lev bulgare", "lev bulgare|levs bulgare|lv|bgn"],["Stotinki búlgaro", "stotinki bulgare"],["Riel cambodgien", "riel cambodgien|khr|៛"],["Escudo du cap-vert", "escudo cap-verdien|cve"],["Colon du costa rica", "colon du costa rica|colons du costa rica|crc|₡"],["Colon du salvador", "colon du salvador|colons du salvador|svc"],["Kuna croate", "kuna croate|kunas croate|kn|hrk"],["Lipa", "lipa"],["Couronne tchèque", "couronne tchèque|couronnes tchèque|czk|Kč"],["Haléř", "haléř"],["Nakfas érythréens", "nakfas érythréens|nfk|ern|nakfa érythréens"],["Birr éthiopien", "birr éthiopien|birrs éthiopien|etb"],["Dalasi gambienne", "gmd"],["Butut", "bututs|butut"],["Lari géorgien", "lari géorgie|lari géorgiens|gel|₾"],["Tetri géorgien", "tetri géorgie|tetris géorgiens"],["Cedi", "cedi|ghs|cedi ghanéen|gh₵"],["Pesewa", "pesewa|pesewas"],["Quetzal guatémaltèque", "quetzal guatémaltèque|gtq|quetzal|quetzales"],["Gourdes haïtiennes", "gourdes haïtiennes|gourdes|htg|gourde haïtienne"],["Lempira hondurien", "lempira hondurien|hnl"],["Forint hongrois", "forint hongrois|huf|fg|forints hongrois"],["Fillér", "fillér"],["Rial iranien", "rial iranien|irr|rials iranien|rials iraniens"],["Litas lituanien", "litas lituanien|ltl|lit lithuanien|litas lithuanie"],["Yen Japonais", "yen japonais|yen japon|yens|jpy|yen|¥|-yen"],["Tenge kazakh", "tenge kazakh|kzt"],["Shilling kényan", "shilling kényan|sh|kes|shillings kényans"],["Won coréen", "won coréen|won coréens|₩"],["Won sud-coréen", "won sud-coréen|won sud coréen|won sud-coréens|krw"],["Corée du nord won", "corée du nord won|corée nord won|kpw"],["Som Kirghizie", "som kirghizie|kgs"],["Sum Ouzbékistan", "sum ouzbékistan|sum ouzbeks|sum ouzbéks|uzs"],["Kip laotien", "kip laotien|lak|₭n|₭"],["Att", "att"],["Loti", "loti|maloti|lsl"],["Sente", "sente|lisente"],["Rand sud-africain", "rand sud-africain|zar"],["Pataca macanais", "pataca macanais|mop$|mop"],["Avo", "avos|avo"],["Dinar macédonien", "dinar macédonien|mkd|ден"],["Deni", "deni"],["Ariary malagache", "ariary malagache|mga"],["Iraimbilanja", "Iraimbilanja"],["Kwacha malawien", "kwacha malawien|mk|mwk"],["Tambala", "Tambala"],["Ringitt malaisien", "ringitt malaisien|rm|myr|ringitts malaisien"],["Ouguiya mauritanienne", "ouguiya|um|mro|ouguiya mauritanien|ouguiya mauritanienne"],["Khoums", "khoums"],["Togrogs mongoles", "togrogs mongoles|togrogs|tugriks|tögrög|mnt|₮|tögrög mongoles|tögrög mongolie|togrogs mongolie"],["Metical mozambique", "metical du mozambique|metical mozambique|mt|mzn|meticals mozambique"],["Kyat birmanie", "kyat birmanie|ks|mmk"],["Pya", "pya"],["Cordoba nicaraguayen", "cordoba nicaraguayen|córdoba nicaraguayen|nio|córdoba oro|cordoba oro nicaraguayen"],["Naira nigérians", "naira nigérians|naira|ngm|₦|nairas nigérians"],["Livre turque", "livre turque|try|tl|livre turques"],["Kuruş", "kuruş"],["Rials omanais", "rials omanais|omr|ر.ع.|rial omanais"],["Balboa panaméennes", "balboa panaméennes|balboa|pab"],["Kina", "kina|pkg|pgk"],["Toea", "toea"],["Guaraní paraguayen", "guaraní paraguayen|₲|pyg"],["Sol péruvien", "nuevo sol péruvien|soles|sol|sol péruvien"],["Złoty polonais", "złoty polonais|złoty|zł|pln|zloty|zloty polonais"],["Groxz", "groszy|grosz|grosze"],["Riyal qatari", "riyal qatari|qar|riyals qatari"],["Riyal saudi", "riyal saudi|sar|riyals saudi"],["Riyal", "riyal|riyals|rial|﷼"],["Dirham", "dirham|dirhem|dirhm"],["Halala", "halalas|halala"],["Tala", "tala|tālā|ws$|sat|wst"],["Sene", "sene"],["Dobra", "dobra|db|std"],["Leone", "leone|sll"],["Florins Néerlandais", "florins hollandais|florins néerlandais|florins|ang|ƒ|florin|fl |"],["Lilangeni", "lilangeni|szl"],["Somoni tadjikistan", "somoni tadjikistan|tjs|somoni"],["Diram", "dirams|diram"],["Baht thaïlandais", "baht thaïlandais|baht thailandais|baht thaï|baht thai|baht|฿|thb"],["Satang", "satang|satangs"],["Paʻanga", "paʻanga|pa'anga|top"],["Hryvnia ukrainien", "hryvnia ukrainien|hyrvnia|uah|₴|hryvnias ukrainien|hryvnia ukrainienne"],["Vanuatu vatu", "vanuatu vatu|vatu|vuv"],["Bolívar vénézuélien", "bolívar vénézuélien|bolivar venezuelien|bs.f.|vef|bolívars vénézuélien|bolivars venezuelien"],["Dong vietnamien", "dong vietnamien|dongs vietnamiens|dong|đồng|vnd|dông|dông vietnamiens"],["Kwacha de Zambie", "kwacha de zambie|zk|zmw|kwachas"],["Dirham marocain", "dirham marocain|mad|د.م."],["Dirham des Émirats arabes unis", "dirham des Émirats arabes unis|د.إ|aed"],["Manat azerbaïdjanais", "manat azerbaïdjanais|manat azerbaidjanais|azn"],["Manat turkmène", "manat turkmène|tmt|manat turkmene"],["Manat", "manats|manat"],["Qəpik", "qəpik"],["Shilling somalien", "shilling somalien|shillings somalien|sos"],["Shilling tanzanien", "shilling tanzanien|shillings tanzanien|tzs|tsh|shilling tanzanienne|shillings tanzanienne"],["Shilling ougandais", "shilling ougandais|shillings ougandais|sh|ugx"],["Leu roumain", "leu roumain|lei|leu roumaine|ron"],["Leu moldave", "leu meoldave|mdl"],["Leu", "leu"],["Ban", "bani|-ban|ban"],["Roupie népalaise", "roupie népalaise|roupie nepalaise|npr"],["Roupie pakistanaise", "roupie pakistanaise|pkr"],["Roupie indienne", "roupie indienne|inr|roupie indien|inr|₹"],["Roupie seychelloise", "roupie seychelloise|scr|sr|sre"],["Roupie mauricienne", "roupie mauricienne|mur"],["Rufiyaa maldives", "rufiyaa maldives|mvr|.ރ|rf"],["Roupie srilankaise", "roupie srilankaise|lrk|රු|ரூ"],["Rupiah Indonésie", "rupia indonésie|rupia indonesie|rupiah|rp|idr"],["Roupie", "roupie"],["Couronne danoise", "couronne danoise|dkk|couronnes danoise|couronne danemark|couronnes danemark"],["Couronne norvégienne", "couronne norvégienne|couronne norvegienne|couronnes norvégienne|couronnes norvegienne|nok"],["Couronne féroïenne", "couronne féroïenne|couronne feroienne"],["Couronne suédoise", "couronne suédoise|couronne suéde|sek|couronnes suédoise|couronne suedoise"],["Couronne", "couronne|couronnes"],["Øre", "Øre|oyra|eyrir"],["Franc CFA de l'Afrique de l'Ouest", "franc cfa de l''afrique de l''ouest|franc cfa ouest africain|franc cfa|francs cfa|fcfa|frs cfa|cfa francs|xof"],["Franc CFA d'Afrique centrale", "franc cfa d''afrique centrale|franc cfa centrale|frs cfa centrale|xaf"],["Franc comorien", "franc comorien|kmf"],["Franc congolais", "franc congolais|cdf"],["Franc burundais", "franc burundais|bif"],["Franc djiboutienne", "franc djiboutienne|djf"],["Franc CFP", "franc cfp|xpf"],["Franc guinéen", "franc guinéen|gnf"],["Franc Suisse", "franc suisse|chf|sfr.|francs suisses"],["Franc rwandais", "franc rwandais|rwf|rw|r₣|frw"],["Franc belge", "franc belge|bi.|b.fr.|bef"],["Rappen", "rappen|-rappen"],["Franc", "francs|franc|fr.|fs"],["Centimes", "centimes|centime|santim"],["Rouble russe", "rouble russe|rub|₽|₽ russe|roubles russe|roubles russes|₽ russes"],["Nouveau rouble biélorusse", "nouveau rouble biélorusse|byn|nouveau roubles biélorusse|nouveau rouble bielorusse|nouveau roubles biélorusse"],["Rouble transnistriens", "rouble transnistriens|prb"],["Rouble biélorusses", "rouble biélorusses|roubles biélorusses|rouble bielorusses|roubles bielorusses"],["Kopek", "kopek|kopeks"],["Kapyeyka", "kapyeyka"],["Rouble", "roubles|rouble|br"],["Dinar algérien", "dinar algérien|د.ج|dzd|dinars algérien|dinar algerien|dinars algerien"],["Dinar de bahreïn", "dinar de bahreïn|bhd|.د.ب|dinar de bahrein"],["Santeem", "santeem|santeems"],["Dinar iraquien", "dinar iraquien|dinars iraquien|iqd|ع.د|dinar iraquienne|dinars iraquienne"],["Dinar jordanien", "dinar jordanien|dinars jordanien|د.ا|jod"],["Dinar koweïtien", "dinar koweïtien|dinar koweitien|dinars koweïtien|kwd|د.ك"],["Dinar libyen", "dinar libyen|dinars libyen|lyd"],["Dinar serbe", "dinar serbe|dinars serbe|rsd|дин."],["Dinar tunisien", "dinar tunisien|dinars tunisien|tnd"],["Dinar yougoslave", "dinar yougoslave|dinars yougoslave|yun"],["Dinar", "dinars|dinar|denar|-dinars|-dinar"],["Fils", "fils|fulūs|-fils|-fil"],["Para", "para|napa"],["Millime", "millimes|millime"],["Peso argentin", "peso argentin|ars|pesos argentin|peso argentine|pesos argentine"],["Peso chilien", "peso chilien|pesos chilien|clp"],["Peso colombien", "peso colombien|pesos colombien|cop|peso colombie|pesos colombien"],["Peso cubains convertibles", "peso cubains convertibles|pesos cubains convertibles|cuc"],["Peso cubains", "peso cubaines|pesos cubaines|peso cubaine|pesos cubaines|cup"],["Peso dominicain", "peso dominicain|pesos dominicain|dop|peso dominicaine|pesos dominicaine"],["Peso philippin", "peso philippin|pesos philippin|piso|₱|php"],["Peso uruguayen", "peso uruguayen|pesos uruguayen|uyu"],["Peso", "pesos|Peso"],["Centavo", "centavos|Centavo"],["Livre britannique", "livre britannique|livres britannique|gbp|£ britannique"],["Livre guernesey", "livre guernesey|£ guernesey|ggp"],["Livre ascension", "livre ascension|livres ascension|£ ascension"],["Livre sainte-hélène", "livre de sainte-hélène|livre sainte-hélène|livre sainte-helene|livre de sainte hélène|shp"],["Livre égyptienne", "livre égyptienne|livre egyptienne|egp|ج.م"],["Livre des îles falkland", "livre des îles falkland|livre des iles falkland|fkp|£ iles falkland"],["Livre gibraltar", "livre gibraltar|livre de gibraltar|£ gibraltar|gip"],["Livre manx", "imp|livre manx|£ manx"],["Livre jersey", "livre de jersey|livre jersey|jep|£ jersey"],["Livre libanaise", "livre libanaise|£ libanaise|livres libanaise|lbp|ل.ل"],["Livre des îles malouines", "livre des îles malouines|livre des iles malouines|£ iles malouines"],["Livre sud-soudanaise", "livre sud-soudanaise|livre sud soudanaise|livre du soudan du sud|livres sud-soudanaises|livre sud soudan|livre soudan sud"],["Livre soudanaise", "livre soudanaise|livres soudanaise|sdg|£ soudan|ج.س.|livre soudan|livres soudan"],["Livre syrienne", "livre syrienne|ل.س|syp|livre syrie|livres syrie|£ syrie"],["Livre", "livre|livres|-livre|-livres|£"],["Pence", "pence"],["Shilling", "shilling|shillings"],["Penny", "penny|sou|centime"],["Dollar Américain", "dollar américain|$ américain|$ americain|usd|$usd|$ usd|dollar americain|dollar États-Unis|dollar des États-Unis|dollar États Unis|dollar etats unis|dollar etats-unis|$ etats-unis|$ États-Unis"],["Dollar des Caraïbes orientales", "dollar des caraïbes orientales|dollar des caraibes orientales|xcd|$ caraibes orientales|$ caraïbes orientales"],["Dollar Australien", "dollar australien|dollars australiens|$ australien|aud|$australien|australien $|$ australie|dollar australie"],["Dollar des bahamas", "dollar des bahamas|dollar bahamas|$ bahamas|bsd|bahama $|dollar bahama|$ bahamas"],["Dollar bermudes", "dollar des bermudes|dollar bermude|dollar bermudes|$ bermudes|bmd"],["Dollar belize", "dollar de Belize|dollar belizien|bzd|$ belize"],["Dollar îles Vierges britanniques", "dollar îles vierges britanniques|dollar iles vierges britanniques|$ iles vierges britanniques"],["Dollar brunei", "dollar de brunei|$ brunei|bnd|dollar brunei"],["Sen", "sen"],["Dollar singapour", "dollar de singapour|dollar singapour|$ sinapour|sgd|$s"],["Dollar Canadien", "dollar canadien|dollars canadien|$ canadien|cad|$can|$c|$ c|dollar canada|dollar canadienne|$ canada|$cad|cad$"],["Dollar iles caimanes", "dollars des îles caïmanes|dollar des îles caïmanes|dollars des iles caimanes|dollar iles caimanes|kyd|$ci"],["Dollar néo-zélandais", "dollar néo-zélandais|dollar néo zélandais|dollar neo-zelandais|dollar neo zelandais|$nz|$ néo-zélandais|$ neo zelandais"],["Dollar îles cook", "dollar îles cook|dollar iles cook|$ iles cook"],["Dollar des fidji", "dollar des fidji|$ fidji|dollar fidji|dollar de fidji|dollars des fidji|dollars de fidji"],["Dollar guyanien", "dollar guyanien|dollar du guyana|dollar dre guyana|$ guayana|gyd|$gy"],["Dollar de Hong Kong", "dollar hong kong|dollar hongkong|dollar de hong kong|dollar de hongkong|$hk|$ hk|hkd|hk $|hk$|dollar hk|$hongkong|dollars hongkong|dollars hong kong"],["Dollar jamaïcain", "dollar jamaïcain|dollars jamaïcain|dollar jamaicain|dollars jamaicain|$j|$ jamaïque|dollar jamaïque|jmd"],["Dollar libérien", "dollar libérien|dollars libérien|dollar liberien|dollars liberien|lrd|$ libérien|$ liberia|$ liberien"],["Dollar namibien", "dollar namibien|dollars namibien|$ namibien|nad|$n|dollar namibie|dollars namibie|$ namibie"],["Dollar des îles salomon", "dollar des îles Salomon|dollar des iles salomon|$si|sbd|$ iles salomon|$ îles salomon"],["Dollar du suriname", "dollar du suriname|srd|$ du suriname|$ suriname|dollar suriname|dollars suriname|dollars du suriname"],["Nouveau dollar de Taïwan", "nouveau dollar de taïwan|nouveau dollar de taiwan|twd|ntd|$nt"],["Dollar trinidadien", "dollar trinidadien|dollars trinidadien|ttd|$ trinidadien"],["Dollar", "dollar|$|dollars"],["Yuan Chinois", "yuan|yuans|yuan chinois|renminbi|cny|rmb|¥"],["Fen", "fen"],["Jiao", "jiao"],["Mark Finlandais", "marks finlandais|mark finlandais|fim|mark"]]); export const CompoundUnitConnectorRegex = `(?[^.])`; export const CurrencyPrefixList: ReadonlyMap = new Map([["Dollar", "$"],["Dollar États-Unis", "$us|usd|us$"],["Dollar Caraïbes orientales", "xcd|$ec"],["Dollar australien", "a$|$a|aud"],["Dollar bahamas", "bsd|b$"],["Dollar barbadien", "bbd|bds$"],["Dollar de belize", "bz$|bzd"],["Dollar des bermudes", "bd$|bmd"],["Dollar de brunei", "brunei $|bnd"],["Dollar de Singapour", "s$|sgd"],["Dollar Canadien", "cad|$ ca|$ca|$ c"],["Dollar des îles Caïmans", "ci$|kyd"],["Dollar néo-zélandais", "nz$|nzd"],["Dollar de Fidji", "$fj|fjd"],["Dolar guyanien", "g$|gyd"],["Dollar de Hong Kong", "hkd|hk$"],["Dollar jamaïcain", "j$|jmd"],["Dollar libérien", "lrd|l$"],["Dollar namibien", "nad|n$"],["Dollar des îles Salomon", "$ si|$si|sbd"],["Nouveau dollar de Taïwan", "nt$|twd"],["Réal brésilien", "r$|brl|reais"],["Guaraní paraguayen", "₲|gs.|pyg"],["Dollar trinidadien", "ttd|titis"],["Yuan renminbi", "cny|rmb|¥|元"],["Yen", "¥|jpy"],["Euro", "€|eur"],["Pound", "£"],["Florín", "ƒ"],["Livre", "£|gbp"]]); - export const AmbiguousCurrencyUnitList = [ 'din.','kina','lari','taka','tala','vatu','yuan','bob','btn','cop','cup','dop','gip','jod','kgs','lak','mga','mop','nad','omr','sar','sbd','scr','sdg','sek','sos','std','try','yer' ]; + export const AmbiguousCurrencyUnitList = [ "din.","kina","lari","taka","tala","vatu","yuan","bob","btn","cop","cup","dop","gip","jod","kgs","lak","mga","mop","nad","omr","sar","sbd","scr","sdg","sek","sos","std","try","yer" ]; export const InformationSuffixList: ReadonlyMap = new Map([["Bit", "-bit|bit|bits"],["Kilobit", "kilobit|kilobits|kb|kbit|kbits"],["Megabit", "megabit|megabits|Mb|Mbit|mégabit|mégabits"],["Gigabit", "gigabit|gigabits|Gb|Gbit"],["Terabit", "terabit|terabits|Tb|Tbit|térabit|térabits"],["Petabit", "petabit|petabits|Pb|Pbit|pétabit|pétabits"],["octet", "octet|octets|-octet"],["Kilooctet", "kilo-octet|kilo-octets|kilooctet|kilooctets|ko|kio|kB|KiB|kilobyte|kilobytes"],["Mégaoctet", "mégaoctet|mégaoctets|méga-octet|méga-octets|Mo|Mio|MB|mégabyte|mégabytes"],["Gigaoctet", "gigaoctet|gigaoctets|Go|Gio|GB|GiB|gigabyte|gigabytes"],["Téraoctet", "téraoctet|téraoctets|To|Tio|TB|TiB|térabyte|térabytes"],["Pétaoctet", "pétaoctet|pétaoctets|Po|Pio|PB|PiB|pétabyte|pétabytes"]]); - export const AmbiguousDimensionUnitList = [ 'mi','barils','grain','l','pierre','fps','pts' ]; + export const AmbiguousDimensionUnitList = [ "mi","barils","grain","l","pierre","fps","pts" ]; export const BuildPrefix = `(?<=(\\s|^|\\P{L}))`; export const BuildSuffix = `(?=(\\s|\\P{L}|$))`; export const ConnectorToken = 'de'; export const LengthSuffixList: ReadonlyMap = new Map([["Kilomètres", "km|kilomètres|kilomètre|kilometres|kilometre|-km"],["Hectomètre", "hm|hectomètre|hectomètres|hectometre|hectometres|-hm"],["Décamètre", "dam|décamètre|décamètres|decametre|decametres|-dm"],["Mètres", "m|mètres|mètre|metres|metre|m.|-m"],["Décimètres", "dm|décimètres|décimètre|decimetres|decimetre"],["Centimètres", "cm|centimètres|centimètre|centimetres|centimetre"],["Millimètres", "mm|millimètres|millimètre|millimetre|millimetres"],["Micromètres", "µm|um|micromètres|micromètre|micrometres|micrometre"],["Nanomètres", "nm|nanometre|nanometres|nanomètres|nanomètre"],["Picomètres", "pm|picomètre|picomètres|picometres|picometre"],["Mile", "mi|mile|miles"],["Pied", "pied|pieds"],["Yard", "yards|yard|yd"],["Pouce", "pouce|pouces"]]); - export const AmbiguousLengthUnitList = [ 'm','yard','yards','pm','pt','pts' ]; - export const AmbuguousLengthUnitList = [ 'm','pouce','pm' ]; + export const AmbiguousLengthUnitList = [ "m","yard","yards","pm","pt","pts" ]; + export const AmbuguousLengthUnitList = [ "m","pouce","pm" ]; export const SpeedSuffixList: ReadonlyMap = new Map([["Mètre par seconde", "m/s|metres/seconde|metres par seconde|metre par seconde|metres par secondes|mètre par seconde|mètres par seconde|mètres par secondes"],["Kilomètre par heure", "km/h|kilomètre par heure|kilomètres par heure|kilomètres par heures|kilometres par heure|kilometre par heure"],["Kilomètre par minute", "km/m|kilomètre par minute|kilomètres par minute|kilomètres par minutes|kilometre par minute|kilometre par minutes"],["Kilomètre par seconde", "km/s|km à la seconde|km a la seconde|kilomètre par seconde|kilomètres par seconde|kilometre par seconde|kilometres par seconde"],["Miles par heure", "mph|miles par heure|miles à l'heure|miles a l'heure|miles un heure"],["Noeuds", "noeud|noeuds|nuds"],["Pied par seconde", "ft/s|pied par seconde|pieds par seconde|pied/s|pieds/s"],["Pied par minute", "pieds/minute|pied/minute|ft/minute|ft/min|pied/min"]]); export const TemperatureSuffixList: ReadonlyMap = new Map([["Kelvin", "k|K|kelvin"],["F", "°f|degres f|degrés f|deg f|° f|degrés fahrenheit|degres fahrenheit|fahrenheit"],["R", "rankine|°r|° r"],["C", "°c|deg c|degrés celsius|degrés c|degres celsius|celsius|deg celsius|degs celsius|centigrade|deg centigrade|degs centigrade|degrés centigrade|degres centigrade|degré centigrade|degre centigrade"],["Degré", "degrés|degres|deg.|°| °|degré|degre|deg"]]); export const VolumeSuffixList: ReadonlyMap = new Map([["Mètre cube", "m3|m^3|m³|mètre cube|mètres cube|metre cube|metres cube"],["Centimètre cube", "cm3|cm^3|cm³|centimètre cube|centimètres cube|centimetre cube|centimetres cube"],["Millimètre cube", "mm3|mm^3|mm³|millimètre cube|millimètres cube|millimetre cube|millimetres cube"],["Kilomètre cube", "km3|km^3|km³|kilomètre cube|kilomètres cube|kilometre cube|kilometres cube"],["Pieds cube", "pieds cubes|pieds cube|pied cube|pied cubes"],["Litre", "litre|litres|lts|l"],["Millilitre", "ml|millilitre|millilitres"],["Gallon", "gallon|gallons"],["Pintes", "pintes"],["Onces", "onces|once|oz"],["Décilitre", "dl|décilitre|decilitre|décilitres|decilitres"],["Centilitre", "cl|centilitres|centilitre"],["Onces liquides", "onces liquides|once liquide|once liquides"],["Baril", "baril|barils|bbl"]]); - export const AmbiguousVolumeUnitList = [ 'ounce','oz','l','cup','peck','cord','gill' ]; + export const AmbiguousVolumeUnitList = [ "ounce","oz","l","cup","peck","cord","gill" ]; export const WeightSuffixList: ReadonlyMap = new Map([["Kilogramme", "kg|kilogramme|kilogrammes|kilo|kilos"],["Gram", "g|gramme|grammes"],["Milligramme", "mg|milligramme|milligrammes"],["Tonne métrique", "tonne métrique|tonnes métrique|tonnes métriques|tonne metrique|tonnes metrique"],["Tonne", "tonne|tonnes|-tonnes|-tonne"],["Livre", "livre|livres"]]); - export const AmbiguousWeightUnitList = [ 'g','oz','stone','dram' ]; + export const AmbiguousWeightUnitList = [ "g","oz","stone","dram" ]; export const AmbiguityFiltersDict: ReadonlyMap = new Map([["\\bcent\\b", "\\bpour\\s+cent\\b"]]); } diff --git a/JavaScript/packages/recognizers-number-with-unit/src/resources/japaneseNumericWithUnit.ts b/JavaScript/packages/recognizers-number-with-unit/src/resources/japaneseNumericWithUnit.ts index af9305e14b..d8ad2fe276 100644 --- a/JavaScript/packages/recognizers-number-with-unit/src/resources/japaneseNumericWithUnit.ts +++ b/JavaScript/packages/recognizers-number-with-unit/src/resources/japaneseNumericWithUnit.ts @@ -8,7 +8,7 @@ import { BaseNumbers } from "./baseNumbers"; export namespace JapaneseNumericWithUnit { - export const AgeAmbiguousValues = [ '歳' ]; + export const AgeAmbiguousValues = [ "歳" ]; export const AgeSuffixList: ReadonlyMap = new Map([["Year", "歳"],["Month", "ヶ月"],["Week", "週間|週"],["Day", "日間|日齢|日大"]]); export const BuildPrefix = ''; export const BuildSuffix = ''; @@ -18,5 +18,5 @@ export namespace JapaneseNumericWithUnit { export const FractionalUnitNameToCodeMap: ReadonlyMap = new Map([["Jiao", "JIAO"],["Kopek", "KOPEK"],["Pul", "PUL"],["Cent", "CENT"],["Qindarkë", "QINDARKE"],["Penny", "PENNY"],["Santeem", "SANTEEM"],["Cêntimo", "CENTIMO"],["Centavo", "CENTAVO"],["Luma", "LUMA"],["Qəpik", "QƏPIK"],["Fils", "FILS"],["Poisha", "POISHA"],["Kapyeyka", "KAPYEYKA"],["Centime", "CENTIME"],["Chetrum", "CHETRUM"],["Paisa", "PAISA"],["Fening", "FENING"],["Thebe", "THEBE"],["Sen", "SEN"],["Stotinka", "STOTINKA"],["Fen", "FEN"],["Céntimo", "CENTIMO"],["Lipa", "LIPA"],["Haléř", "HALER"],["Øre", "ØRE"],["Piastre", "PIASTRE"],["Santim", "SANTIM"],["Oyra", "OYRA"],["Butut", "BUTUT"],["Tetri", "TETRI"],["Pesewa", "PESEWA"],["Fillér", "FILLER"],["Eyrir", "EYRIR"],["Dinar", "DINAR"],["Agora", "AGORA"],["Tïın", "TIIN"],["Chon", "CHON"],["Jeon", "JEON"],["Tyiyn", "TYIYN"],["Att", "ATT"],["Sente", "SENTE"],["Dirham", "DIRHAM"],["Rappen", "RAPPEN"],["Avo", "AVO"],["Deni", "DENI"],["Iraimbilanja", "IRAIMBILANJA"],["Tambala", "TAMBALA"],["Laari", "LAARI"],["Khoums", "KHOUMS"],["Ban", "BAN"],["Möngö", "MONGO"],["Pya", "PYA"],["Kobo", "KOBO"],["Kuruş", "KURUS"],["Baisa", "BAISA"],["Centésimo", "CENTESIMO"],["Toea", "TOEA"],["Sentimo", "SENTIMO"],["Grosz", "GROSZ"],["Sene", "SENE"],["Halala", "HALALA"],["Para", "PARA"],["Öre", "ORE"],["Diram", "DIRAM"],["Satang", "SATANG"],["Seniti", "SENITI"],["Millime", "MILLIME"],["Tennesi", "TENNESI"],["Kopiyka", "KOPIYKA"],["Tiyin", "TIYIN"],["Hào", "HAO"],["Ngwee", "NGWEE"]]); export const CompoundUnitConnectorRegex = `(?と)`; export const CurrencyPrefixList: ReadonlyMap = new Map([["Dollar", "$"],["United States dollar", "us$"],["British Virgin Islands dollar", "bvi$"],["Brunei dollar", "b$"],["Sen", "sen"],["Singapore dollar", "s$"],["Canadian dollar", "can$|c$|c $"],["Cayman Islands dollar", "ci$"],["New Zealand dollar", "nz$|nz $"],["Guyanese dollar", "gy$|gy $|g$|g $"],["Hong Kong dollar", "hk$|hkd|hk $"],["Jamaican dollar", "j$"],["Namibian dollar", "nad|n$|n $"],["Solomon Islands dollar", "si$|si $"],["New Taiwan dollar", "nt$|nt $"],["Samoan tālā", "ws$"],["Chinese yuan", "¥"],["Japanese yen", "¥|\\"],["Turkish lira", "₺"],["Euro", "€"],["Pound", "£"],["Costa Rican colón", "₡"]]); - export const CurrencyAmbiguousValues = [ '円','銭','\\' ]; + export const CurrencyAmbiguousValues = [ "円","銭","\\" ]; } diff --git a/JavaScript/packages/recognizers-number-with-unit/src/resources/portugueseNumericWithUnit.ts b/JavaScript/packages/recognizers-number-with-unit/src/resources/portugueseNumericWithUnit.ts index 6e525b038d..c3d33749d4 100644 --- a/JavaScript/packages/recognizers-number-with-unit/src/resources/portugueseNumericWithUnit.ts +++ b/JavaScript/packages/recognizers-number-with-unit/src/resources/portugueseNumericWithUnit.ts @@ -13,16 +13,16 @@ export namespace PortugueseNumericWithUnit { export const CurrencySuffixList: ReadonlyMap = new Map([["Dólar", "dólar|dolar|dólares|dolares"],["Peso", "peso|pesos"],["Coroa", "coroa|coroas"],["Rublo", "rublo|rublos"],["Libra", "libra|libras"],["Florim", "florim|florins|ƒ"],["Dinar", "dinar|dinares"],["Franco", "franco|francos"],["Rupia", "rúpia|rupia|rúpias|rupias"],["Escudo", "escudo|escudos"],["Xelim", "xelim|xelins|xelims"],["Lira", "lira|liras"],["Centavo", "centavo|cêntimo|centimo|centavos|cêntimos|centimo"],["Centésimo", "centésimo|centésimos"],["Pêni", "pêni|péni|peni|penies|pennies"],["Manat", "manat|manate|mánate|man|manats|manates|mánates"],["Euro", "euro|euros|€|eur"],["Centavo de Euro", "centavo de euro|cêntimo de euro|centimo de euro|centavos de euro|cêntimos de euro|centimos de euro"],["Dólar do Caribe Oriental", "dólar do Caribe Oriental|dolar do Caribe Oriental|dólares do Caribe Oriental|dolares do Caribe Oriental|dólar das Caraíbas Orientais|dolar das Caraibas Orientais|dólares das Caraíbas Orientais|dolares das Caraibas Orientais|ec$|xcd"],["Centavo do Caribe Oriental", "centavo do Caribe Oriental|centavo das Caraíbas Orientais|cêntimo do Caribe Oriental|cêntimo das Caraíbas Orientais|centavos do Caribe Oriental|centavos das Caraíbas Orientais|cêntimos do Caribe Oriental|cêntimos das Caraíbas Orientais"],["Franco CFA da África Ocidental", "franco CFA da África Ocidental|franco CFA da Africa Ocidental|francos CFA da África Occidental|francos CFA da Africa Occidental|franco CFA Ocidental|xof"],["Centavo de CFA da África Ocidental", "centavo de CFA da Africa Occidental|centavos de CFA da África Ocidental|cêntimo de CFA da Africa Occidental|cêntimos de CFA da África Ocidental"],["Franco CFA da África Central", "franco CFA da África Central|franco CFA da Africa Central|francos CFA da África Central|francos CFA da Africa Central|franco CFA central|xaf"],["Centavo de CFA da África Central", "centavo de CFA de África Central|centavos de CFA da África Central|cêntimo de CFA de África Central|cêntimos de CFA da África Central"],["Apsar abcásio", "apsar abcásio|apsar abecásio|apsar abcasio|apsar|apsares"],["Afegani afegão", "afegani afegão|afegane afegão|؋|afn|afegane|afgane|afegâni|afeganis|afeganes|afganes|afegânis"],["Pul", "pul|pules|puls"],["Lek albanês", "lek|lekë|lekes|lek albanês|leque|leques|all"],["Qindarke", "qindarka|qindarkë|qindarke|qindarkas"],["Kwanza angolano", "kwanza angolano|kwanzas angolanos|kwanza|kwanzas|aoa|kz"],["Cêntimo angolano", "cêntimo angolano|cêntimo|cêntimos"],["Florim das Antilhas Holandesas", "florim das antilhas holandesas|florim das antilhas neerlandesas|ang"],["Rial saudita", "rial saudita|riais sauditas|riyal saudita|riyals sauditas|riyal|riyals|sar"],["Halala saudita", "halala saudita|halala|hallalah"],["Dinar argelino", "dinar argelino|dinares argelinos|dzd"],["Cêntimo argelino", "centimo argelino|centimos argelinos|cêntimo argelino|cêntimos argelinos|centavo argelino|centavos argelinos"],["Peso argentino", "peso argentino|pesos argentinos|peso|pesos|ar$|ars"],["Centavo argentino", "centavo argentino|centavos argentinos|centavo|ctvo.|ctvos."],["Dram armênio", "dram armênio|dram armênios|dram arménio|dram arménios|dram armenio|dram armenios|dram|drame|drames|դր."],["Luma armênio", "luma armênio|lumas armênios|luma arménio|lumas arménios|luma armenio|lumas armenios|luma|lumas"],["Florim arubano", "florín arubeño|florines arubeños|ƒ arubeños|aƒ|awg"],["Dólar australiano", "dólar australiano|dólares australianos|dolar australiano|dolares australianos|a$|aud"],["Centavo australiano", "centavo australiano|centavos australianos"],["Manat azeri", "manat azeri|manats azeris|azn|manat azerbaijanês|manat azerbaijano|manats azerbaijaneses|manats azerbaijanos"],["Qəpik azeri", "qəpik azeri|qəpik|qəpiks"],["Dólar bahamense", "dólar bahamense|dólares bahamense|dolar bahamense|dolares bahamense|dólar baamiano|dólares baamiano|dolar baamiano|dolares baamiano|b$|bsd"],["Centavo bahamense", "centavo bahamense|centavos bahamense"],["Dinar bareinita", "dinar bareinita|dinar baremita|dinares bareinitas|dinares baremitas|bhd"],["Fil bareinita", "fil bareinita|fil baremita|fils bareinitas|fils baremitas"],["Taka bengali", "taka bengali|takas bengalis|taca|tacas|taka|takas|bdt"],["Poisha bengali", "poisha bengali|poishas bengalis"],["Dólar de Barbados", "dólar de barbados|dólares de barbados|dolar de barbados|dolares de barbados|dólar dos barbados|dólares dos barbados|bbd"],["Centavo de Barbados", "centavo de barbados|centavos de barbados|centavo dos barbados|centavos dos barbados"],["Dólar de Belize", "dólar de belize|dólares de belize|dolar de belize|dolares de belize|dólar do belize|dólares do belize|dolar do belize|dolares do belize|bz$|bzd"],["Centavo de Belize", "centavo de belize|centavos de belize|cêntimo do belize|cêntimos do belize"],["Dólar bermudense", "dólar bermudense|dólares bermudenses|bd$|bmd"],["Centavo bermudense", "centavo bermudense|centavos bermudenses|cêntimo bermudense| cêntimos bermudenses"],["Rublo bielorrusso", "rublo bielorrusso|rublos bielorrussos|br|byr"],["Copeque bielorusso", "copeque bielorrusso|copeques bielorrussos|kopek bielorrusso|kopeks bielorrussos|kap"],["Quiate mianmarense", "quiate mianmarense|quiates mianmarenses|kyat mianmarense|kyates mianmarenses|quiate myanmarense|quiates myanmarenses|kyat myanmarense|kyates myanmarenses|quiate birmanês|quite birmanes|quiates birmaneses|kyat birmanês|kyat birmanes|kyates birmaneses|mmk"],["Pya mianmarense", "pya mianmarense|pyas mianmarenses|pya myanmarense|pyas myanmarenses|pya birmanês|pya birmanes|pyas birmaneses"],["Boliviano", "boliviano|bolivianos|bob|bs"],["Centavo Boliviano", "centavo boliviano|centavos bolivianos"],["Marco da Bósnia e Herzegovina", "marco conversível|marco conversivel|marco convertível|marco convertivel|marcos conversíveis|marcos conversiveis|marcos convertíveis|marcos convertivies|bam"],["Fening da Bósnia e Herzegovina", "fening conversível|fening conversivel|fening convertível|fening convertivel|fenings conversíveis|fenings conversiveis|fenings convertíveis|fenings convertiveis"],["Pula", "pula|pulas|bwp"],["Thebe", "thebe|thebes"],["Real brasileiro", "real brasileiro|real do brasil|real|reais brasileiros|reais do brasil|reais|r$|brl"],["Centavo brasileiro", "centavo de real|centavo brasileiro|centavos de real|centavos brasileiros"],["Dólar de Brunei", "dólar de brunei|dolar de brunei|dólar do brunei|dolar do brunei|dólares de brunéi|dolares de brunei|dólares do brunei|dolares do brunei|bnd"],["Sen de Brunei", "sen de brunei|sen do brunei|sens de brunei|sens do brunei"],["Lev búlgaro", "lev búlgaro|leve búlgaro|leves búlgaros|lev bulgaro|leve bulgaro|leves bulgaros|lv|bgn"],["Stotinka búlgaro", "stotinka búlgaro|stotinki búlgaros|stotinka bulgaro|stotinki bulgaros"],["Franco do Burundi", "franco do burundi|francos do burundi|fbu|fib"],["Centavo Burundi", "centavo burundi|cêntimo burundi|centimo burundi|centavos burundi|cêntimo burundi|centimo burundi"],["Ngultrum butanês", "ngultrum butanês|ngultrum butanes|ngúltrume butanês|ngultrume butanes|ngultrum butaneses|ngúltrumes butaneses|ngultrumes butaneses|btn"],["Chetrum butanês", "chetrum butanês|chetrum butanes|chetrum butaneses"],["Escudo cabo-verdiano", "escudo cabo-verdiano|escudos cabo-verdianos|cve"],["Riel cambojano", "riel cambojano|riéis cambojanos|rieis cambojanos|khr"],["Dólar canadense", "dólar canadense|dolar canadense|dólares canadenses|dolares canadenses|c$|cad"],["Centavo canadense", "centavo canadense|centavos canadenses"],["Peso chileno", "peso chileno|pesos chilenos|cpl"],["Yuan chinês", "yuan chinês|yuan chines|yuans chineses|yuan|yuans|renminbi|rmb|cny|¥"],["Peso colombiano", "peso colombiano|pesos colombianos|cop|col$"],["Centavo colombiano", "centavo colombiano|centavos colombianos"],["Franco comorense", "franco comorense|francos comorenses|kmf|₣"],["Franco congolês", "franco congolês|franco congoles|francos congoleses|cdf"],["Centavo congolês", "centavo congolês|centavo congoles|centavos congoleses|cêntimo congolês|centimo congoles|cêntimos congoleses|cêntimos congoleses"],["Won norte-coreano", "won norte-coreano|wŏn norte-coreano|won norte-coreanos|wŏn norte-coreanos|kpw"],["Chon norte-coreano", "chon norte-coreano|chŏn norte-coreano|chŏn norte-coreanos|chon norte-coreanos"],["Won sul-coreano", "wŏn sul-coreano|won sul-coreano|wŏnes sul-coreanos|wones sul-coreanos|krw"],["Jeon sul-coreano", "jeons sul-coreano|jeons sul-coreanos"],["Colón costarriquenho", "colón costarriquenho|colon costarriquenho|colons costarriquenho|colones costarriquenhos|crc"],["Kuna croata", "kuna croata|kunas croatas|hrk"],["Lipa croata", "lipa croata|lipas croatas"],["Peso cubano", "peso cubano|pesos cubanos|cup"],["Peso cubano convertível", "peso cubano conversível|pesos cubanos conversíveis|peso cubano conversivel|pesos cubanos conversiveis|peso cubano convertível|pesos cubanos convertíveis|peso cubano convertivel|pesos cubanos convertiveis|cuc"],["Coroa dinamarquesa", "coroa dinamarquesa|coroas dinamarquesas|dkk"],["Libra egípcia", "libra egípcia|libra egipcia|libras egípcias|libras egipcias|egp|le"],["Piastra egípcia", "piastra egípcia|piastra egipcia|pisastras egípcias|piastras egipcias"],["Dirham dos Emirados Árabes Unidos", "dirham|dirhams|dirham dos emirados arabes unidos|aed|dhs"],["Nakfa", "nakfa|nfk|ern"],["Centavo de Nakfa", "cêntimo de nakfa|cêntimos de nakfa|centavo de nafka|centavos de nafka"],["Peseta", "peseta|pesetas|pts.|ptas.|esp"],["Dólar estadunidense", "dólar dos estados unidos|dolar dos estados unidos|dólar estadunidense|dólar americano|dólares dos estados unidos|dolares dos estados unidos|dólares estadunidenses|dólares americanos|dolar estadunidense|dolar americano|dolares estadunidenses|dolares americanos|usd|u$d|us$|usd$"],["Coroa estoniana", "coroa estoniana|coroas estonianas|eek"],["Senti estoniano", "senti estoniano|senti estonianos"],["Birr etíope", "birr etíope|birr etiope|birr etíopes|birr etiopes|br|etb"],["Santim etíope", "santim etíope|santim etiope|santim etíopes|santim etiopes"],["Peso filipino", "peso filipino|pesos filipinos|php"],["Marco finlandês", "marco finlandês|marco finlandes|marcos finlandeses"],["Dólar fijiano", "dólar fijiano|dolar fijiano|dólares fijianos|dolares fijianos|fj$|fjd"],["Centavo fijiano", "centavo fijiano|centavos fijianos"],["Dalasi gambiano", "dalasi|gmd"],["Bututs", "butut|bututs"],["Lari georgiano", "lari georgiano|lari georgianos|gel"],["Tetri georgiano", "tetri georgiano|tetri georgianos"],["Cedi", "cedi|ghs|gh₵"],["Pesewa", "pesewa"],["Libra de Gibraltar", "libra de gibraltar|libras de gibraltar|gip"],["Peni de Gibraltar", "peni de gibraltar|penies de gibraltar"],["Quetzal guatemalteco", "quetzal guatemalteco|quetzales guatemaltecos|quetzal|quetzales|gtq"],["Centavo guatemalteco", "centavo guatemalteco|centavos guatemaltecos"],["Libra de Guernsey", "libra de Guernsey|libras de Guernsey|ggp"],["Peni de Guernsey", "peni de Guernsey|penies de Guernsey"],["Franco da Guiné", "franco da guiné|franco da guine| franco guineense|francos da guiné|francos da guine|francos guineense|gnf|fg"],["Centavo da Guiné", "cêntimo guineense|centimo guineense|centavo guineense|cêntimos guineenses|centimos guineenses|centavos guineenses"],["Dólar guianense", "dólar guianense|dólares guianense|dolar guianense|dolares guianense|gyd|gy"],["Gurde haitiano", "gurde haitiano|gourde|gurdes haitianos|htg"],["Centavo haitiano", "cêntimo haitiano|cêntimos haitianos|centavo haitiano|centavos haitianos"],["Lempira hondurenha", "lempira hondurenha|lempiras hondurenhas|lempira|lempiras|hnl"],["Centavo hondurenho", "centavo hondurenho|centavos hondurehos|cêntimo hondurenho|cêntimos hondurenhos"],["Dólar de Hong Kong", "dólar de hong kong|dolar de hong kong|dólares de hong kong|dolares de hong kong|hk$|hkd"],["Florim húngaro", "florim húngaro|florim hungaro|florins húngaros|florins hungaros|forinte|forintes|huf"],["Filér húngaro", "fillér|filér|filler|filer"],["Rupia indiana", "rúpia indiana|rupia indiana|rupias indianas|inr"],["Paisa indiana", "paisa indiana|paisas indianas"],["Rupia indonésia", "rupia indonesia|rupia indonésia|rupias indonesias|rupias indonésias|idr"],["Sen indonésio", "send indonésio|sen indonesio|sen indonésios|sen indonesios"],["Rial iraniano", "rial iraniano|riais iranianos|irr"],["Dinar iraquiano", "dinar iraquiano|dinares iraquianos|iqd"],["Fil iraquiano", "fil iraquiano|fils iraquianos|files iraquianos"],["Libra manesa", "libra manesa|libras manesas|imp"],["Peni manês", "peni manes|peni manês|penies maneses"],["Coroa islandesa", "coroa islandesa|coroas islandesas|isk|íkr"],["Aurar islandês", "aurar islandês|aurar islandes|aurar islandeses|eyrir"],["Dólar das Ilhas Cayman", "dólar das ilhas cayman|dolar das ilhas cayman|dólar das ilhas caimão|dólares das ilhas cayman|dolares das ilhas cayman|dólares das ilhas caimão|ci$|kyd"],["Dólar das Ilhas Cook", "dólar das ilhas cook|dolar das ilhas cook|dólares das ilhas cook|dolares das ilhas cook"],["Coroa feroesa", "coroa feroesa|coroas feroesas|fkr"],["Libra das Malvinas", "libra das malvinas|libras das malvinas|fk£|fkp"],["Dólar das Ilhas Salomão", "dólar das ilhas salomão|dolar das ilhas salomao|dólares das ilhas salomão|dolares das ilhas salomao|sbd"],["Novo shekel israelense", "novo shekel|novos shekeles|novo shequel|novo siclo|novo xéquel|shekeles novos|novos sheqalim|sheqalim novos|ils"],["Agora", "agora|agorot"],["Dólar jamaicano", "dólar jamaicano|dolar jamaicano|dólares jamaicanos|dolares jamaicanos|j$|ja$|jmd"],["Yen", "yen|iene|yenes|ienes|jpy"],["Libra de Jersey", "libra de Jersey|libras de Jersey|jep"],["Dinar jordaniano", "dinar jordaniano|dinar jordano|dinares jordanianos|dinares jordanos|jd|jod"],["Piastra jordaniana", "piastra jordaniana|piastra jordano|piastras jordanianas|piastra jordaniano|piastras jordanianos|piastras jordanos"],["Tengue cazaque", "tenge|tengue|tengué|tengue cazaque|kzt"],["Tiyin", "tiyin|tiyins"],["Xelim queniano", "xelim queniano|xelins quenianos|ksh|kes"],["Som quirguiz", "som quirguiz|som quirguizes|soms quirguizes|kgs"],["Tyiyn", "tyiyn|tyiyns"],["Dólar de Kiribati", "dólar de kiribati|dolar de kiribati|dólares de kiribati|dolares de kiribati"],["Dinar kuwaitiano", "dinar kuwaitiano|dinar cuaitiano|dinares kuwaitiano|dinares cuaitianos|kwd"],["Quipe laosiano", "quipe|quipes|kipe|kipes|kip|kip laosiano|kip laociano|kips laosianos|kips laocianos|lak"],["Att laosiano", "at|att|att laosiano|att laosianos"],["Loti do Lesoto", "loti|lóti|maloti|lotis|lótis|lsl"],["Sente", "sente|lisente"],["Libra libanesa", "libra libanesa|libras libanesas|lbp"],["Dólar liberiano", "dólar liberiano|dolar liberiano|dólares liberianos|dolares liberianos|l$|lrd"],["Dinar libio", "dinar libio|dinar líbio|dinares libios|dinares líbios|ld|lyd"],["Dirham libio", "dirham libio|dirhams libios|dirham líbio|dirhams líbios"],["Litas lituana", "litas lituana|litai lituanas|ltl"],["Pataca macaense", "pataca macaense|patacas macaenses|mop$|mop"],["Avo macaense", "avo macaense|avos macaenses"],["Ho macaense", "ho macaense|ho macaenses"],["Dinar macedônio", "denar macedonio|denare macedonios|denar macedônio|denar macedónio|denare macedônio|denare macedónio|dinar macedonio|dinar macedônio|dinar macedónio|dinares macedonios|dinares macedônios|dinares macedónios|den|mkd"],["Deni macedônio", "deni macedonio|deni macedônio|deni macedónio|denis macedonios|denis macedônios|denis macedónios"],["Ariary malgaxe", "ariai malgaxe|ariary malgaxe|ariary malgaxes|ariaris|mga"],["Iraimbilanja", "iraimbilanja|iraimbilanjas"],["Ringuite malaio", "ringgit malaio|ringgit malaios|ringgits malaios|ringuite malaio|ringuites malaios|rm|myr"],["Sen malaio", "sen malaio|sen malaios|centavo malaio|centavos malaios|cêntimo malaio|cêntimos malaios"],["Kwacha do Malawi", "kwacha|cuacha|quacha|mk|mwk"],["Tambala", "tambala|tambalas|tambala malawi"],["Rupia maldiva", "rupia maldiva|rupias maldivas|rupia das maldivas| rupias das maldivas|mvr"],["Dirame marroquino", "dirame marroquino|dirham marroquinho|dirhams marroquinos|dirames marroquinos|mad"],["Rupia maurícia", "rupia maurícia|rupia de Maurício|rupia mauricia|rupia de mauricio|rupias de mauricio|rupias de maurício|rupias mauricias|rupias maurícias|mur"],["Uguia", "uguia|uguias|oguia|ouguiya|oguias|mro"],["Kume", "kumes|kume|khoums"],["Peso mexicano", "peso mexicano|pesos mexicanos|mxn"],["Centavo mexicano", "centavo mexicano|centavos mexicanos"],["Leu moldávio", "leu moldavo|lei moldavos|leu moldávio|leu moldavio|lei moldávios|lei moldavios|leus moldavos|leus moldavios|leus moldávios|mdl"],["Ban moldávio", "ban moldavo|bani moldavos"],["Tugrik mongol", "tugrik mongol|tugrik|tugriks mongóis|tugriks mongois|tug|mnt"],["Metical moçambicao", "metical|metical moçambicano|metical mocambicano|meticais|meticais moçambicanos|meticais mocambicanos|mtn|mzn"],["Dólar namibiano", "dólar namibiano|dólares namibianos|dolar namibio|dolares namibios|n$|nad"],["Centavo namibiano", "centavo namibiano|centavos namibianos|centavo namibio|centavos namibianos"],["Rupia nepalesa", "rupia nepalesa|rupias nepalesas|npr"],["Paisa nepalesa", "paisa nepalesa|paisas nepalesas"],["Córdova nicaraguense", "córdova nicaraguense|cordova nicaraguense|cordova nicaraguana|córdoba nicaragüense|córdobas nicaragüenses|cordobas nicaraguenses|córdovas nicaraguenses|cordovas nicaraguenses|córdovas nicaraguanasc$|nio"],["Centavo nicaraguense", "centavo nicaragüense|centavos nicaraguenses|centavo nicaraguano|centavos nicaraguenses|centavo nicaraguano|centavos nicaraguanos"],["Naira", "naira|ngn"],["Kobo", "kobo"],["Coroa norueguesa", "coroa norueguesa|coroas norueguesas|nok"],["Franco CFP", "franco cfp|francos cfp|xpf"],["Dólar neozelandês", "dólar neozelandês|dolar neozelandes|dólares neozelandeses|dolares neozelandeses|dólar da nova zelândia|dolar da nova zelandia|dólares da nova zelândia|dolares da nova zelandia|nz$|nzd"],["Centavo neozelandês", "centavo neozelandês|centavo neozelandes|centavo da nova zelandia|centavo da nova zelândia|centavos da nova zelandia|centavos neozelandeses|centavos da nova zelândia"],["Rial omanense", "rial omani|riais omanis|rial omanense|riais omanenses|omr"],["Baisa omanense", "baisa omani|baisas omanis|baisa omanense|baisas omanenses"],["Florim holandês", "florim holandês|florim holandes|florins holandeses|nlg"],["Rupia paquistanesa", "rupia paquistanesa|rupias paquistanesas|pkr"],["Paisa paquistanesa", "paisa paquistanesa|paisas paquistanesasas"],["Balboa panamenho", "balboa panamenho|balboas panamenhos|balboa|pab|balboa panamense|balboas panamenses"],["Centavo panamenho", "centavo panamenho|cêntimo panamenho|centavos panamenhos|cêntimos panamenhos|cêntimo panamense|cêntimos panamenses"],["Kina", "kina|kina papuásia|kinas|kinas papuásias|pkg|pgk"],["Toea", "toea"],["Guarani", "guarani|guaranis|gs|pyg"],["Novo Sol", "novo sol peruano|novos sóis peruanos|sol|soles|sóis|nuevo sol|pen|s#."],["Centavo de sol", "cêntimo de sol|cêntimos de sol|centavo de sol|centavos de sol"],["Złoty", "złoty|złotys|zloty|zlotys|zloti|zlotis|zlóti|zlótis|zlote|zł|pln"],["Groszy", "groszy|grosz"],["Rial catariano", "rial qatari|riais qataris|rial catarense|riais catarenses|rial catariano|riais catarianos|qr|qar"],["Dirame catariano", "dirame catariano|dirames catarianos|dirame qatari|dirames qataris|dirame catarense|dirames catarenses|dirham qatari|dirhams qataris|dirham catarense|dirhams catarenses|dirham catariano|dirhams catariano"],["Libra esterlina", "libra esterlina|libras esterlinas|gbp"],["Coroa checa", "coroa checa|coroas checas|kc|czk"],["Peso dominicano", "peso dominicano|pesos dominicanos|rd$|dop"],["Centavo dominicano", "centavo dominicano|centavos dominicanos"],["Franco ruandês", "franco ruandês|franco ruandes|francos ruandeses|rf|rwf"],["Céntimo ruandês", "cêntimo ruandês|centimo ruandes|centavo ruandês|centavo ruandes|cêntimos ruandeses|centimos ruandeses|centavos ruandeses"],["Leu romeno", "leu romeno|lei romenos|leus romenos|ron"],["Ban romeno", "ban romeno|bani romeno|bans romenos"],["Rublo russo", "rublo russo|rublos russos|rub|р."],["Copeque ruso", "copeque russo|copeques russos|kopek ruso|kopeks rusos|copeque|copeques|kopek|kopeks"],["Tala samoano", "tala|tālā|talas|tala samonano|talas samoanos|ws$|sat|wst"],["Sene samoano", "sene"],["Libra de Santa Helena", "libra de santa helena|libras de santa helena|shp"],["Pêni de Santa Helena", "peni de santa helena|penies de santa helena"],["Dobra", "dobra|dobras|db|std"],["Dinar sérvio", "dinar sérvio|dinar servio|dinar serbio|dinares sérvios|dinares servios|dinares serbios|rsd"],["Para sérvio", "para sérvio|para servio|para serbio|paras sérvios|paras servios|paras serbios"],["Rupia seichelense", "rupia de seicheles|rupias de seicheles|rupia seichelense|rupias seichelenses|scr"],["Centavo seichelense", "centavo de seicheles|centavos de seicheles|centavo seichelense|centavos seichelenses"],["Leone serra-leonino", "leone|leones|leone serra-leonino|leones serra-leoninos|le|sll"],["Dólar de Cingapura", "dólar de singapura|dolar de singapura|dórar de cingapura|dolar de cingapura|dólares de singapura|dolares de singapura|dólares de cingapura|dolares de cingapura|sgb"],["Centavo de Cingapura", "centavo de singapura|centavos de singapura|centavo de cingapura|centavos de cingapura"],["Libra síria", "libra síria|libra siria|libras sírias|libras sirias|s£|syp"],["Piastra síria", "piastra siria|piastras sirias|piastra síria|piastras sírias"],["Xelim somali", "xelim somali|xelins somalis|xelim somaliano|xelins somalianos|sos"],["Centavo somali", "centavo somapli|centavos somalis|centavo somaliano|centavos somalianos"],["Xelim da Somalilândia", "xelim da somalilândia|xelins da somalilândia|xelim da somalilandia|xelins da somalilandia"],["Centavo da Somalilândia", "centavo da somalilândia|centavos da somalilândia|centavo da somalilandia|centavos da somalilandia"],["Rupia do Sri Lanka", "rupia do sri lanka|rupia do sri lanca|rupias do sri lanka|rupias do sri lanca|rupia cingalesa|rupias cingalesas|lkr"],["Lilangeni", "lilangeni|lilangenis|emalangeni|szl"],["Rand sul-africano", "rand|rand sul-africano|rands|rands sul-africanos|zar"],["Libra sudanesa", "libra sudanesa|libras sudanesas|sdg"],["Piastra sudanesa", "piastra sudanesa|piastras sudanesas"],["Libra sul-sudanesa", "libra sul-sudanesa|libras sul-sudanesas|ssp"],["Piastra sul-sudanesa", "piastra sul-sudanesa|piastras sul-sudanesas"],["Coroa sueca", "coroa sueca|coroas suecas|sek"],["Franco suíço", "franco suíço|franco suico|francos suíços|francos suicos|sfr|chf"],["Rappen suíço", "rappen suíço|rappen suico|rappens suíços|rappens suicos"],["Dólar surinamês", "dólar surinamês|dolar surinames|dólar do Suriname|dolar do Suriname|dólares surinameses|dolares surinameses|dólares do Suriname|dolares do Suriname|srd"],["Centavo surinamês", "centavo surinamês|centavo surinames|centavos surinameses"],["Baht tailandês", "baht tailandês|bath tailandes|baht tailandeses|thb"],["Satang tailandês", "satang tailandês|satang tailandes|satang tailandeses"],["Novo dólar taiwanês", "novo dólar taiwanês|novo dolar taiwanes|dólar taiwanês|dolar taiwanes|dólares taiwaneses|dolares taiwaneses|twd"],["Centavo taiwanês", "centavo taiwanês|centavo taiwanes|centavos taiwaneses"],["Xelim tanzaniano", "xelim tanzaniano|xelins tanzanianos|tzs"],["Centavo tanzaniano", "centavo tanzaniano|centavos tanzanianos"],["Somoni tajique", "somoni tajique|somoni|somonis tajiques|somonis|tjs"],["Diram tajique", "diram tajique|dirams tajiques|dirames tajiques"],["Paʻanga", "paanga|paangas|paʻanga|pa'anga|top"],["Seniti", "seniti"],["Rublo transdniestriano", "rublo transdniestriano|rublos transdniestriano"],["Copeque transdniestriano", "copeque transdniestriano|copeques transdniestriano"],["Dólar de Trinidade e Tobago", "dólar de trinidade e tobago|dólares trinidade e tobago|dolar de trinidade e tobago|dolares trinidade e tobago|dólar de trinidad e tobago|dólares trinidad e tobago|ttd"],["Centavo de Trinidade e Tobago", "centavo de trinidade e tobago|centavos de trinidade e tobago|centavo de trinidad e tobago|centavos de trinidad e tobago"],["Dinar tunisiano", "dinar tunisiano|dinares tunisianos|dinar tunisino|dinares tunisinos|tnd"],["Milim tunisiano", "milim tunisiano|milim tunesianos|millime tunisianos|millimes tunisianos|milim tunisino|milim tunisinos|millime tunisinos|millimes tunisinos"],["Lira turca", "lira turca|liras turcas|try"],["Kuruş turco", "kuruş turco|kuruş turcos"],["Manat turcomeno", "manat turcomeno|manats turcomenos|tmt"],["Tennesi turcomeno", "tennesi turcomeno|tennesis turcomenos|tenge turcomenos|tenges turcomenos"],["Dólar tuvaluano", "dólar tuvaluano|dolar tuvaluano|dólares tuvaluanos|dolares tuvaluanos"],["Centavo tuvaluano", "centavo tuvaluano|centavos tuvaluanos"],["Grívnia", "grívnia|grivnia|grívnias|grivnias|grivna|grivnas|uah"],["Copeque ucraniano", "kopiyka|copeque ucraniano|copeques ucranianos"],["Xelim ugandês", "xelim ugandês|xelim ugandes|xelins ugandeses|ugx"],["Centavo ugandês", "centavo ugandês|centavo ugandes|centavos ugandeses"],["Peso uruguaio", "peso uruguaio|pesos uruguayis|uyu"],["Centésimo uruguayo", "centésimo uruguaio|centesimo uruguaio|centésimos uruguaios|centesimos uruguaios"],["Som uzbeque", "som uzbeque|som uzbeques|soms uzbeques|somes uzbeques|som usbeque|som usbeques|soms usbeques|somes usbeques|uzs"],["Tiyin uzbeque", "tiyin uzbeque|tiyin uzbeques|tiyins uzbeques|tiyin usbeque|tiyin usbeques|tiyins usbeques"],["Vatu", "vatu|vatus|vuv"],["Bolívar forte venezuelano", "bolívar forte|bolivar forte|bolívar|bolivar|bolívares|bolivares|vef"],["Centavo de bolívar", "cêntimo de bolívar|cêntimos de bolívar|centavo de bolívar|centavo de bolivar|centavos de bolívar|centavos de bolivar"],["Dongue vietnamita", "dongue vietnamita|Đồng vietnamita|dong vietnamita|dongues vietnamitas|dongs vietnamitas|vnd"],["Hào vietnamita", "hào vietnamita|hao vietnamita|hào vietnamitas|hàos vietnamitas|haos vietnamitas"],["Rial iemenita", "rial iemenita|riais iemenitas|yer"],["Fils iemenita", "fils iemenita|fils iemenitas"],["Franco djibutiano", "franco djibutiano|francos djibutianos|franco jibutiano|francos jibutianos|djf"],["Dinar iugoslavo", "dinar iugoslavo|dinares iugoslavos|dinar jugoslavo|dinares jugoslavos|yud"],["Kwacha zambiano", "kwacha zambiano|kwacha zambianos|kwachas zambianos|zmw"],["Ngwee zambiano", "ngwee zambiano|ngwee zambianos|ngwees zambianos"]]); export const CompoundUnitConnectorRegex = `(?[^.])`; export const CurrencyPrefixList: ReadonlyMap = new Map([["Dólar", "$"],["Dólar estadunidense", "us$|u$d|usd$|usd"],["Dólar do Caribe Oriental", "ec$|xcd"],["Dólar australiano", "a$|aud"],["Dólar bahamense", "b$|bsd"],["Dólar de Barbados", "bds$|bbd"],["Dólar de Belizebe", "bz$|bzd"],["Dólar bermudense", "bd$|bmd"],["Dólar de Brunebi", "brunéi $|bnd"],["Dólar de Cingapura", "s$|sgd"],["Dólar canadense", "c$|can$|cad"],["Dólar das Ilhas Cayman", "ci$|kyd"],["Dólar neozelandês", "nz$|nzd"],["Dólar fijgiano", "fj$|fjd"],["Dólar guianense", "gy$|gyd"],["Dólar de Hong Kong", "hk$|hkd"],["Dólar jamaicano", "j$|ja$|jmd"],["Dólar liberiano", "l$|lrd"],["Dólar namibiano", "n$|nad"],["Dólar das Ilhas Salomão", "si$|sbd"],["Novo dólar taiwanês", "nt$|twd"],["Real brasileiro", "r$|brl"],["Guarani", "₲|gs.|pyg"],["Dólar de Trinidade e Tobago", "tt$|ttd"],["Yuan chinês", "¥|cny|rmb"],["Yen", "¥|jpy"],["Euro", "€|eur"],["Florim", "ƒ"],["Libra", "£|gbp"],["Colón costarriquenho", "₡"],["Lira turca", "₺"]]); - export const AmbiguousCurrencyUnitList = [ 'le' ]; + export const AmbiguousCurrencyUnitList = [ "le" ]; export const InformationSuffixList: ReadonlyMap = new Map([["bit", "bit|bits"],["kilobit", "kilobit|kilobits|kb|kbit"],["megabit", "megabit|megabits|Mb|Mbit"],["gigabit", "gigabit|gigabits|Gb|Gbit"],["terabit", "terabit|terabits|Tb|Tbit"],["petabit", "petabit|petabits|Pb|Pbit"],["kibibit", "kibibit|kibibits|kib|kibit"],["mebibit", "mebibit|mebibits|Mib|Mibit"],["gibibit", "gibibit|gibibits|Gib|Gibit"],["tebibit", "tebibit|tebibits|Tib|Tibit"],["pebibit", "pebibit|pebibits|Pib|Pibit"],["byte", "byte|bytes"],["kilobyte", "kilobyte|kilobytes|kB|kByte"],["megabyte", "megabyte|megabytes|MB|MByte"],["gigabyte", "gigabyte|gigabytes|GB|GByte"],["terabyte", "terabyte|terabytes|TB|TByte"],["petabyte", "petabyte|petabytes|PB|PByte"],["kibibyte", "kibibyte|kibibytes|kiB|kiByte"],["mebibyte", "mebibyte|mebibytes|MiB|MiByte"],["gibibyte", "gibibyte|gibibytes|GiB|GiByte"],["tebibyte", "tebibyte|tebibytes|TiB|TiByte"],["pebibyte", "pebibyte|pebibytes|PiB|PiByte"]]); - export const AmbiguousDimensionUnitList = [ 'ton','tonelada','área','area','áreas','areas','milha','milhas' ]; + export const AmbiguousDimensionUnitList = [ "ton","tonelada","área","area","áreas","areas","milha","milhas" ]; export const BuildPrefix = `(?<=(\\s|^|\\P{L}))`; export const BuildSuffix = `(?=(\\s|\\P{L}|$))`; export const ConnectorToken = 'de'; export const LengthSuffixList: ReadonlyMap = new Map([["Quilômetro", "km|quilometro|quilômetro|quilómetro|quilometros|quilômetros|quilómetros"],["Hectômetro", "hm|hectometro|hectômetro|hectómetro|hectometros|hectômetros|hectómetros"],["Decâmetro", "decametro|decâmetro|decámetro|decametros|decâmetro|decámetros|dam"],["Metro", "m|m.|metro|metros"],["Decímetro", "dm|decimetro|decímetro|decimetros|decímetros"],["Centímetro", "cm|centimetro|centímetro|centimetros|centimetros"],["Milímetro", "mm|milimetro|milímetro|milimetros|milímetros"],["Micrômetro", "µm|um|micrometro|micrômetro|micrómetro|micrometros|micrômetros|micrómetros|micron|mícron|microns|mícrons|micra"],["Nanômetro", "nm|nanometro|nanômetro|nanómetro|nanometros|nanômetros|nanómetros|milimicron|milimícron|milimicrons|milimícrons"],["Picômetro", "pm|picometro|picômetro|picómetro|picometros|picômetros|picómetros"],["Milha", "mi|milha|milhas"],["Jarda", "yd|jarda|jardas"],["Polegada", "polegada|polegadas|\""],["Pé", "pé|pe|pés|pes|ft"],["Ano luz", "ano luz|anos luz|al"]]); - export const AmbiguousLengthUnitList = [ 'mi','milha','milhas' ]; + export const AmbiguousLengthUnitList = [ "mi","milha","milhas" ]; export const SpeedSuffixList: ReadonlyMap = new Map([["Metro por segundo", "metro/segundo|m/s|metro por segundo|metros por segundo|metros por segundos"],["Quilômetro por hora", "km/h|quilômetro por hora|quilómetro por hora|quilometro por hora|quilômetros por hora|quilómetros por hora|quilometros por hora|quilômetro/hora|quilómetro/hora|quilometro/hora|quilômetros/hora|quilómetros/hora|quilometros/hora"],["Quilômetro por minuto", "km/min|quilômetro por minuto|quilómetro por minuto|quilometro por minuto|quilômetros por minuto|quilómetros por minuto|quilometros por minuto|quilômetro/minuto|quilómetro/minuto|quilometro/minuto|quilômetros/minuto|quilómetros/minuto|quilometros/minuto"],["Quilômetro por segundo", "km/seg|quilômetro por segundo|quilómetro por segundo|quilometro por segundo|quilômetros por segundo|quilómetros por segundo|quilometros por segundo|quilômetro/segundo|quilómetro/segundo|quilometro/segundo|quilômetros/segundo|quilómetros/segundo|quilometros/segundo"],["Milha por hora", "mph|milha por hora|mi/h|milha/hora|milhas/hora|milhas por hora"],["Nó", "kt|nó|nós|kn"],["Pé por segundo", "ft/s|pé/s|pe/s|ft/seg|pé/seg|pe/seg|pé por segundo|pe por segundo|pés por segundo|pes por segundo"],["Pé por minuto", "ft/min|pé/mind|pe/min|pé por minuto|pe por minuto|pés por minuto|pes por minuto"],["Jarda por minuto", "jardas por minuto|jardas/minuto|jardas/min"],["Jarda por segundo", "jardas por segundo|jardas/segundo|jardas/seg"]]); - export const AmbiguousSpeedUnitList = [ 'nó','no','nós','nos' ]; + export const AmbiguousSpeedUnitList = [ "nó","no","nós","nos" ]; export const TemperatureSuffixList: ReadonlyMap = new Map([["Kelvin", "k|K|kelvin"],["Grau Rankine", "r|°r|°ra|grau rankine|graus rankine| rankine"],["Grau Celsius", "°c|grau c|grau celsius|graus c|graus celsius|celsius|grau centígrado|grau centrigrado|graus centígrados|graus centigrados|centígrado|centígrados|centigrado|centigrados"],["Grau Fahrenheit", "°f|grau f|graus f|grau fahrenheit|graus fahrenheit|fahrenheit"],["Grau", "°|graus|grau"]]); export const VolumeSuffixList: ReadonlyMap = new Map([["Quilômetro cúbico", "quilômetro cúbico|quilómetro cúbico|quilometro cubico|quilômetros cúbicos|quilómetros cúbicos|quilometros cubicos|km3|km^3|km³"],["Hectômetro cúbico", "hectômetro cúbico|hectómetro cúbico|hectometro cubico|hectômetros cúbicos|hectómetros cúbicos|hectometros cubicos|hm3|hm^3|hm³"],["Decâmetro cúbico", "decâmetro cúbico|decámetro cúbico|decametro cubico|decâmetros cúbicos|decámetros cúbicos|decametros cubicosdam3|dam^3|dam³"],["Metro cúbico", "metro cúbico|metro cubico|metros cúbicos|metros cubicos|m3|m^3|m³"],["Decímetro cúbico", "decímetro cúbico|decimetro cubico|decímetros cúbicos|decimetros cubicos|dm3|dm^3|dm³"],["Centímetro cúbico", "centímetro cúbico|centimetro cubico|centímetros cúbicos|centrimetros cubicos|cc|cm3|cm^3|cm³"],["Milímetro cúbico", "milímetro cúbico|milimetro cubico|milímetros cúbicos|milimetros cubicos|mm3|mm^3|mm³"],["Polegada cúbica", "polegada cúbica|polegada cubica|polegadas cúbicas|polegadas cubicas"],["Pé cúbico", "pé cúbico|pe cubico|pés cúbicos|pes cubicos|pé3|pe3|pé^3|pe^3|pé³|pe³|ft3|ft^3|ft³"],["Jarda cúbica", "jarda cúbica|jarda cubica|jardas cúbicas|jardas cubicas|yd3|yd^3|yd³"],["Hectolitro", "hectolitro|hectolitros|hl"],["Litro", "litro|litros|lts|l"],["Mililitro", "mililitro|mililitros|ml"],["Galão", "galão|galões|galao|galoes"],["Pint", "pinta|pintas|pinto|pintos|quartilho|quartilhos|pint|pints"],["Barril", "barril|barris|bbl"],["Onça líquida", "onça líquida|onca liquida|onças líquidas|oncas liquidas"]]); export const WeightSuffixList: ReadonlyMap = new Map([["Tonelada métrica", "tonelada métrica|tonelada metrica|toneladas métricas|toneladas metricas"],["Tonelada", "ton|tonelada|toneladas"],["Quilograma", "kg|quilograma|quilogramas|quilo|quilos|kilo|kilos"],["Hectograma", "hg|hectograma|hectogramas"],["Decagrama", "dag|decagrama|decagramas"],["Grama", "g|gr|grama|gramas"],["Decigrama", "dg|decigrama|decigramas"],["Centigrama", "cg|centigrama|centigramas"],["Miligrama", "mg|miligrama|miligramas"],["Micrograma", "µg|ug|micrograma|microgramas"],["Nanograma", "ng|nanograma|nanogramas"],["Picograma", "pg|picograma|picogramas"],["Libra", "lb|libra|libras"],["Onça", "oz|onça|onca|onças|oncas"],["Grão", "grão|grao|grãos|graos|gr"],["Quilate", "ct|kt|quilate|quilates"]]); diff --git a/JavaScript/packages/recognizers-number-with-unit/src/resources/spanishNumericWithUnit.ts b/JavaScript/packages/recognizers-number-with-unit/src/resources/spanishNumericWithUnit.ts index 1821158645..f4e66bd815 100644 --- a/JavaScript/packages/recognizers-number-with-unit/src/resources/spanishNumericWithUnit.ts +++ b/JavaScript/packages/recognizers-number-with-unit/src/resources/spanishNumericWithUnit.ts @@ -10,20 +10,20 @@ import { BaseNumbers } from "./baseNumbers"; export namespace SpanishNumericWithUnit { export const AgeSuffixList: ReadonlyMap = new Map([["Año", "años|año"],["Mes", "meses|mes"],["Semana", "semanas|semana"],["Día", "dias|días|día|dia"]]); export const AreaSuffixList: ReadonlyMap = new Map([["Kilómetro cuadrado", "kilómetro cuadrado|kilómetros cuadrados|km2|km^2|km²"],["Hectómetro cuadrado", "hectómetro cuadrado|hectómetros cuadrados|hm2|hm^2|hm²|hectárea|hectáreas"],["Decámetro cuadrado", "decámetro cuadrado|decámetros cuadrados|dam2|dam^2|dam²|área|áreas"],["Metro cuadrado", "metro cuadrado|metros cuadrados|m2|m^2|m²"],["Decímetro cuadrado", "decímetro cuadrado|decímetros cuadrados|dm2|dm^2|dm²"],["Centímetro cuadrado", "centímetro cuadrado|centímetros cuadrados|cm2|cm^2|cm²"],["Milímetro cuadrado", "milímetro cuadrado|milímetros cuadrados|mm2|mm^2|mm²"],["Pulgada cuadrado", "pulgada cuadrada|pulgadas cuadradas"],["Pie cuadrado", "pie cuadrado|pies cuadrados|pie2|pie^2|pie²|ft2|ft^2|ft²"],["Yarda cuadrado", "yarda cuadrada|yardas cuadradas|yd2|yd^2|yd²"],["Acre", "acre|acres"]]); - export const AreaAmbiguousValues = [ 'área','áreas' ]; + export const AreaAmbiguousValues = [ "área","áreas" ]; export const CurrencySuffixList: ReadonlyMap = new Map([["Dólar", "dólar|dólares"],["Peso", "peso|pesos"],["Rublo", "rublo|rublos"],["Libra", "libra|libras"],["Florín", "florín|florines"],["Dinar", "dinar|dinares"],["Franco", "franco|francos"],["Rupia", "rupia|rupias"],["Escudo", "escudo|escudos"],["Chelín", "chelín|chelines"],["Lira", "lira|liras"],["Centavo", "centavo|centavos"],["Céntimo", "céntimo|céntimos"],["Centésimo", "centésimo|centésimos"],["Penique", "penique|peniques"],["Euro", "euro|euros|€|eur"],["Céntimo de Euro", "céntimo de euro|céntimos de euros"],["Dólar del Caribe Oriental", "dólar del Caribe Oriental|dólares del Caribe Oriental|ec$|xcd"],["Centavo del Caribe Oriental", "centavo del Caribe Oriental|centavos del Caribe Oriental"],["Franco CFA de África Occidental", "franco CFA de África Occidental|francos CFA de África Occidental|fcfa|xof"],["Céntimo de CFA de África Occidental", "céntimo de CFA de África Occidental|céntimos de CFA de África Occidental"],["Franco CFA de África Central", "franco CFA de África Central|francos CFA de África Central|xaf"],["Céntimo de CFA de África Central", "céntimo de CFA de África Central|céntimos de CFA de África Central"],["Apsar", "apsar|apsares"],["Afgani afgano", "afgani afgano|؋|afn|afganis|afgani"],["Pul", "pul|puls"],["Lek albanés", "lek|lekë|lekes|lek albanés"],["Qindarka", "qindarka|qindarkë|qindarkas"],["Kwanza angoleño", "kwanza angoleño|kwanzas angoleños|kwanza angoleños|kwanzas angoleño|kwanzas|aoa|kz"],["Cêntimo angoleño", "cêntimo angoleño|cêntimo|cêntimos"],["Florín antillano neerlandés", "florín antillano neerlandés|florínes antillano neerlandés|ƒ antillano neerlandés|ang|naƒ"],["Cent antillano neerlandés", "cent|centen"],["Riyal saudí", "riyal saudí|riyales saudí|sar"],["Halalá saudí", "halalá saudí|hallalah"],["Dinar argelino", "dinar argelino|dinares argelinos|dzd"],["Céntimo argelino", "centimo argelino|centimos argelinos|"],["Peso argentino", "peso argentino|pesos argentinos|peso|pesos|ar$|ars"],["Centavo argentino", "centavo argentino|centavos argentinos|centavo|ctvo.|ctvos."],["Dram armenio", "dram armenio|dram armenios|dram|դր."],["Luma armenio", "luma armenio|luma armenios"],["Florín arubeño", "florín arubeño|florines arubeños|ƒ arubeños|aƒ|awg"],["Yotin arubeño", "yotin arubeño|yotines arubeños"],["Dólar australiano", "dólar australiano|dólares australianos|a$|aud"],["Centavo australiano", "centavo australiano|centavos australianos"],["Manat azerí", "manat azerí|man|azn"],["Qəpik azerí", "qəpik azerí|qəpik"],["Dólar bahameño", "dólar bahameño|dólares bahameños|b$|bsd"],["Centavo bahameño", "centavo bahameño|centavos bahameños"],["Dinar bahreiní", "dinar bahreiní|dinares bahreinies|bhd"],["Fil bahreiní", "fil bahreiní|fils bahreinies"],["Taka bangladeshí", "taka bangladeshí|takas bangladeshí|bdt"],["Poisha bangladeshí", "poisha bangladeshí|poishas bangladeshí"],["Dólar de Barbados", "dólar de barbados|dólares de barbados|bbd"],["Centavo de Barbados", "centavo de barbados|centavos de barbados"],["Dólar beliceño", "dólar beliceño|dólares beliceños|bz$|bzd"],["Centavo beliceño", "centavo beliceño|centavos beliceños"],["Dólar bermudeño", "dólar bermudeño|dólares bermudeños|bd$|bmd"],["Centavo bermudeño", "centavo bermudeño|centavos bermudeños"],["Rublo bielorruso", "rublo bielorruso|rublos bielorrusos|br|byr"],["Kópek bielorruso", "kópek bielorruso|kópeks bielorrusos|kap"],["Kyat birmano", "kyat birmano|kyats birmanos|mmk"],["Pya birmano", "pya birmano|pyas birmanos"],["Boliviano", "boliviano|bolivianos|bob|bs"],["Centésimo Boliviano", "centésimo boliviano|centésimos bolivianos"],["Marco bosnioherzegovino", "marco convertible|marco bosnioherzegovino|marcos convertibles|marcos bosnioherzegovinos|bam"],["Feningas bosnioherzegovino", "feninga convertible|feninga bosnioherzegovina|feningas convertibles"],["Pula", "pula|bwp"],["Thebe", "thebe"],["Real brasileño", "real brasileño|reales brasileños|r$|brl"],["Centavo brasileño", "centavo brasileño|centavos brasileños"],["Dólar de Brunéi", "dólar de brunei|dólares de brunéi|bnd"],["Sen de Brunéi", "sen|sen de brunéi"],["Lev búlgaro", "lev búlgaro|leva búlgaros|lv|bgn"],["Stotinki búlgaro", "stotinka búlgaro|stotinki búlgaros"],["Franco de Burundi", "franco de burundi|francos de burundi|fbu|fib"],["Céntimo Burundi", "céntimo burundi|céntimos burundies"],["Ngultrum butanés", "ngultrum butanés|ngultrum butaneses|btn"],["Chetrum butanés", "chetrum butanés|chetrum butaneses"],["Escudo caboverdiano", "escudo caboverdiano|escudos caboverdianos|cve"],["Riel camboyano", "riel camboyano|rieles camboyanos|khr"],["Dólar canadiense", "dólar canadiense|dólares canadienses|c$|cad"],["Centavo canadiense", "centavo canadiense|centavos canadienses"],["Peso chileno", "peso chileno|pesos chilenos|cpl"],["Yuan chino", "yuan chino|yuanes chinos|yuan|yuanes|renminbi|rmb|cny|¥"],["Peso colombiano", "peso colombiano|pesos colombianos|cop|col$"],["Centavo colombiano", "centavo colombiano|centavos colombianos"],["Franco comorano", "franco comorano|francos comoranos|kmf|₣"],["Franco congoleño", "franco congoleño|francos congoleños|cdf"],["Céntimo congoleño", "céntimo congoleño|céntimos congoleños"],["Won norcoreano", "won norcoreano|wŏn norcoreano|wŏn norcoreanos|kpw"],["Chon norcoreano", "chon norcoreano|chŏn norcoreano|chŏn norcoreanos|chon norcoreanos"],["Won surcoreano", "wŏn surcoreano|won surcoreano|wŏnes surcoreanos|wones surcoreanos|krw"],["Chon surcoreano", "chon surcoreano|chŏn surcoreano|chŏn surcoreanos|chon surcoreanos"],["Colón costarricense", "colón costarricense|colones costarricenses|crc"],["Kuna croata", "kuna croata|kuna croatas|hrk"],["Lipa croata", "lipa croata|lipa croatas"],["Peso cubano", "peso cubano|pesos cubanos|cup"],["Peso cubano convertible", "peso cubano convertible|pesos cubanos convertible|cuc"],["Corona danesa", "corona danesa|coronas danesas|dkk"],["Libra egipcia", "libra egipcia|libras egipcias|egp|le"],["Piastra egipcia", "piastra egipcia|piastras egipcias"],["Colón salvadoreño", "colón salvadoreño|colones salvadoreños|svc"],["Dirham de los Emiratos Árabes Unidos", "dirham|dirhams|dirham de los Emiratos Árabes Unidos|aed|dhs"],["Nakfa", "nakfa|nfk|ern"],["Céntimo de Nakfa", "céntimo de nakfa|céntimos de nakfa"],["Peseta", "peseta|pesetas|pts.|ptas.|esp"],["Dólar estadounidense", "dólar estadounidense|dólares estadounidenses|usd|u$d|us$"],["Corona estonia", "corona estonia|coronas estonias|eek"],["Senti estonia", "senti estonia|senti estonias"],["Birr etíope", "birr etíope|birr etíopes|br|etb"],["Santim etíope", "santim etíope|santim etíopes"],["Peso filipino", "peso filipino|pesos filipinos|php"],["Marco finlandés", "marco finlandés|marcos finlandeses"],["Dólar fiyiano", "dólar fiyiano|dólares fiyianos|fj$|fjd"],["Centavo fiyiano", "centavo fiyiano|centavos fiyianos"],["Dalasi", "dalasi|gmd"],["Bututs", "butut|bututs"],["Lari georgiano", "lari georgiano|lari georgianos|gel"],["Tetri georgiano", "tetri georgiano|tetri georgianos"],["Cedi", "cedi|ghs|gh₵"],["Pesewa", "pesewa"],["Libra gibraltareña", "libra gibraltareña|libras gibraltareñas|gip"],["Penique gibraltareña", "penique gibraltareña|peniques gibraltareñas"],["Quetzal guatemalteco", "quetzal guatemalteco|quetzales guatemaltecos|quetzal|quetzales|gtq"],["Centavo guatemalteco", "centavo guatemalteco|centavos guatemaltecos"],["Libra de Guernsey", "libra de Guernsey|libras de Guernsey|ggp"],["Penique de Guernsey", "penique de Guernsey|peniques de Guernsey"],["Franco guineano", "franco guineano|francos guineanos|gnf|fg"],["Céntimo guineano", "céntimo guineano|céntimos guineanos"],["Dólar guyanés", "dólar guyanés|dólares guyaneses|gyd|gy"],["Gourde haitiano", "gourde haitiano|gourde haitianos|htg"],["Céntimo haitiano", "céntimo haitiano|céntimos haitianos"],["Lempira hondureño", "lempira hondureño|lempira hondureños|hnl"],["Centavo hondureño", "centavo hondureño|centavos hondureño"],["Dólar de Hong Kong", "dólar de hong kong|dólares de hong kong|hk$|hkd"],["Forinto húngaro", "forinto húngaro|forinto húngaros|huf"],["Rupia india", "rupia india|rupias indias|inr"],["Paisa india", "paisa india|paise indias"],["Rupia indonesia", "rupia indonesia|rupias indonesias|idr"],["Sen indonesia", "sen indonesia|sen indonesias"],["Rial iraní", "rial iraní|rial iranies|irr"],["Dinar iraquí", "dinar iraquí|dinares iraquies|iqd"],["Fil iraquí", "fil iraquí|fils iraquies"],["Libra manesa", "libra manesa|libras manesas|imp"],["Penique manes", "penique manes|peniques maneses"],["Corona islandesa", "corona islandesa|coronas islandesas|isk|íkr"],["Aurar islandes", "aurar islandes|aurar islandeses"],["Dólar de las Islas Caimán", "dólar de las Islas Caimán|dólares de las Islas Caimán|ci$|kyd"],["Dólar de las Islas Cook", "dólar de las Islas Cook|dólares de las Islas Cook"],["Corona feroesa", "corona feroesa|coronas feroesas|fkr"],["Libra malvinense", "libra malvinense|libras malvinenses|fk£|fkp"],["Dólar de las Islas Salomón", "dólar de las Islas Salomón|dólares de las Islas Salomón|sbd"],["Nuevo shéquel", "nuevo shéquel|nuevos shéquel|ils"],["Agorot", "agorot"],["Dólar jamaiquino", "dólar jamaiquino|dólares jamaiquinos|j$|ja$|jmd"],["Yen", "yen|yenes|jpy"],["Libra de Jersey", "libra de Jersey|libras de Jersey|jep"],["Dinar jordano", "dinar jordano|dinares jordanos|jd|jod"],["Piastra jordano", "piastra jordano|piastras jordanos"],["Tenge kazajo", "tenge|tenge kazajo|kzt"],["Chelín keniano", "chelín keniano|chelines kenianos|ksh|kes"],["Som kirguís", "som kirguís|kgs"],["Tyiyn", "tyiyn"],["Dólar de Kiribati", "dólar de Kiribati|dólares de Kiribati"],["Dinar kuwaití", "dinar kuwaití|dinares kuwaití"],["Kip laosiano", "kip|kip laosiano|kip laosianos|lak"],["Att laosiano", "att|att laosiano|att laosianos"],["Loti", "loti|maloti|lsl"],["Sente", "sente|lisente"],["Libra libanesa", "libra libanesa|libras libanesas|lbp"],["Dólar liberiano", "dólar liberiano|dólares liberianos|l$|lrd"],["Dinar libio", "dinar libio|dinares libios|ld|lyd"],["Dirham libio", "dirham libio|dirhams libios"],["Litas lituana", "litas lituana|litai lituanas|ltl"],["Pataca macaense", "pataca macaense|patacas macaenses|mop$|mop"],["Avo macaense", "avo macaense|avos macaenses"],["Ho macaense", "ho macaense|ho macaenses"],["Denar macedonio", "denar macedonio|denare macedonios|den|mkd"],["Deni macedonio", "deni macedonio|deni macedonios"],["Ariary malgache", "ariary malgache|ariary malgaches|mga"],["Iraimbilanja malgache", "iraimbilanja malgache|iraimbilanja malgaches"],["Ringgit malayo", "ringgit malayo|ringgit malayos|rm|myr"],["Sen malayo", "sen malayo|sen malayos"],["Kwacha malauí", "kwacha malauí|mk|mwk"],["Támbala malauí", "támbala malauí"],["Rupia de Maldivas", "rupia de Maldivas|rupias de Maldivas|mvr"],["Dirham marroquí", "dirham marroquí|dirhams marroquies|mad"],["Rupia de Mauricio", "rupia de Mauricio|rupias de Mauricio|mur"],["Uguiya", "uguiya|uguiyas|mro"],["Jum", "jum|jums"],["Peso mexicano", "peso mexicano|pesos mexicanos|mxn"],["Centavo mexicano", "centavo mexicano|centavos mexicanos"],["Leu moldavo", "leu moldavo|lei moldavos|mdl"],["Ban moldavo", "ban moldavo|bani moldavos"],["Tugrik mongol", "tugrik mongol|tugrik|tugrik mongoles|tug|mnt"],["Metical mozambiqueño", "metical|metical mozambiqueño|meticales|meticales mozambiqueños|mtn|mzn"],["Dram de Nagorno Karabaj", "dram de Nagorno Karabaj|drams de Nagorno Karabaj|"],["Luma de Nagorno Karabaj", "luma de Nagorno Karabaj"],["Dólar namibio", "dólar namibio|dólares namibios|n$|nad"],["Centavo namibio", "centavo namibio|centavos namibios"],["Rupia nepalí", "rupia nepalí|rupias nepalies|npr"],["Paisa nepalí", "paisa nepalí|paisas nepalies"],["Córdoba nicaragüense", "córdoba nicaragüense|córdobas nicaragüenses|c$|nio"],["Centavo nicaragüense", "centavo nicaragüense|centavos nicaragüenses"],["Naira", "naira|ngn"],["Kobo", "kobo"],["Corona noruega", "corona noruega|coronas noruegas|nok"],["Franco CFP", "franco cfp|francos cfp|xpf"],["Dólar neozelandés", "dólar neozelandés|dólares neozelandeses|dólar de Nueva Zelanda|dólares de Nueva Zelanda|nz$|nzd"],["Centavo neozelandés", "centavo neozelandés|centavo de Nueva Zelanda|centavos de Nueva Zelanda|centavos neozelandeses"],["Rial omaní", "rial omaní|riales omanies|omr"],["Baisa omaní", "baisa omaní|baisa omanies"],["Florín neerlandés", "florín neerlandés|florines neerlandeses|nlg"],["Rupia pakistaní", "rupia pakistaní|rupias pakistanies|pkr"],["Paisa pakistaní", "paisa pakistaní|paisas pakistanies"],["Balboa panameño", "balboa panameño|balboa panameños|pab"],["Centésimo panameño", "centésimo panameño|centésimos panameños"],["Kina", "kina|pkg|pgk"],["Toea", "toea"],["Guaraní", "guaraní|guaranies|gs|pyg"],["Sol", "sol|soles|nuevo sol|pen|s#."],["Céntimo de sol", "céntimo de sol|céntimos de sol"],["Złoty", "złoty|esloti|eslotis|zł|pln"],["Groszy", "groszy"],["Riyal qatarí", "riyal qatarí|riyal qataries|qr|qar"],["Dirham qatarí", "dirham qatarí|dirhams qataries"],["Libra esterlina", "libra esterlina|libras esterlinas|gbp"],["Corona checa", "corona checa|coronas checas|kc|czk"],["Peso dominicano", "peso dominicano|pesos dominicanos|rd$|dop"],["Centavo dominicano", "centavo dominicano|centavos dominicanos"],["Franco ruandés", "franco ruandés|francos ruandeses|rf|rwf"],["Céntimo ruandés", "céntimo ruandés|céntimos ruandeses"],["Leu rumano", "leu rumano|lei rumanos|ron"],["Ban rumano", "ban rumano|bani rumanos"],["Rublo ruso", "rublo ruso|rublos rusos|rub"],["Kopek ruso", "kopek ruso|kopeks rusos"],["Tala", "tala|tālā|ws$|sat|wst"],["Sene", "sene"],["Libra de Santa Helena", "libra de Santa Helena|libras de Santa Helena|shp"],["Penique de Santa Helena", "penique de Santa Helena|peniques de Santa Helena"],["Dobra", "dobra|db|std"],["Dinar serbio", "dinar serbio|dinares serbios|rsd"],["Para serbio", "para serbio|para serbios"],["Rupia de Seychelles", "rupia de Seychelles|rupias de Seychelles|scr"],["Centavo de Seychelles", "centavo de Seychelles|centavos de Seychelles"],["Leone", "leone|le|sll"],["Dólar de Singapur", "dólar de singapur|dólares de singapur|sgb"],["Centavo de Singapur", "centavo de Singapur|centavos de Singapur"],["Libra siria", "libra siria|libras sirias|s£|syp"],["Piastra siria", "piastra siria|piastras sirias"],["Chelín somalí", "chelín somalí|chelines somalies|sos"],["Centavo somalí", "centavo somalí|centavos somalies"],["Chelín somalilandés", "chelín somalilandés|chelines somalilandeses"],["Centavo somalilandés", "centavo somalilandés|centavos somalilandeses"],["Rupia de Sri Lanka", "rupia de Sri Lanka|rupias de Sri Lanka|lkr"],["Céntimo de Sri Lanka", "céntimo de Sri Lanka|céntimos de Sri Lanka"],["Lilangeni", "lilangeni|emalangeni|szl"],["Rand sudafricano", "rand|rand sudafricano|zar"],["Libra sudanesa", "libra sudanesa|libras sudanesas|sdg"],["Piastra sudanesa", "piastra sudanesa|piastras sudanesas"],["Libra sursudanesa", "libra sursudanesa|libras sursudanesa|ssp"],["Piastra sursudanesa", "piastra sursudanesa|piastras sursudanesas"],["Corona sueca", "corona sueca|coronas suecas|sek"],["Franco suizo", "franco suizo|francos suizos|sfr|chf"],["Rappen suizo", "rappen suizo|rappens suizos"],["Dólar surinamés", "óolar surinamés|dólares surinameses|srd"],["Centavo surinamés", "centavo surinamés|centavos surinamés"],["Baht tailandés", "baht tailandés|baht tailandeses|thb"],["Satang tailandés", "satang tailandés|satang tailandeses"],["Nuevo dólar taiwanés", "nuevo dólar taiwanés|dólar taiwanés|dólares taiwaneses|twd"],["Centavo taiwanés", "centavo taiwanés|centavos taiwaneses"],["Chelín tanzano", "chelín tanzano|chelines tanzanos|tzs"],["Centavo tanzano", "centavo tanzano|centavos tanzanos"],["Somoni tayiko", "somoni tayiko|somoni|tjs"],["Diram", "diram|dirams"],["Paʻanga", "dólar tongano|dólares tonganos|paʻanga|pa'anga|top"],["Seniti", "seniti"],["Rublo de Transnistria", "rublo de Transnistria|rublos de Transnistria"],["Kopek de Transnistria", "kopek de Transnistria|kopeks de Transnistria"],["Dólar trinitense", "dólar trinitense|dólares trinitenses|ttd"],["Centavo trinitense", "centavo trinitense|centavos trinitenses"],["Dinar tunecino", "dinar tunecino|dinares tunecinos|tnd"],["Millime tunecino", "millime tunecino|millimes tunecinos"],["Lira turca", "lira turca|liras turcas|try"],["Kuruş turca", "kuruş turca|kuruş turcas"],["Manat turkmeno", "manat turkmeno|manat turkmenos|tmt"],["Tennesi turkmeno", "tennesi turkmeno|tenge turkmeno"],["Dólar tuvaluano", "dólar tuvaluano|dólares tuvaluanos"],["Centavo tuvaluano", "centavo tuvaluano|centavos tuvaluanos"],["Grivna", "grivna|grivnas|uah"],["Kopiyka", "kopiyka|kópeks"],["Chelín ugandés", "chelín ugandés|chelines ugandeses|ugx"],["Centavo ugandés", "centavo ugandés|centavos ugandeses"],["Peso uruguayo", "peso uruguayo|pesos uruguayos|uyu"],["Centésimo uruguayo", "centésimo uruguayo|centésimos uruguayos"],["Som uzbeko", "som uzbeko|som uzbekos|uzs"],["Tiyin uzbeko", "tiyin uzbeko|tiyin uzbekos"],["Vatu", "vatu|vuv"],["Bolívar fuerte", "bolívar fuerte|bolívar|bolívares|vef"],["Céntimo de bolívar", "céntimo de bolívar|céntimos de bolívar"],["Đồng vietnamita", "Đồng vietnamita|dong vietnamita|dong vietnamitas|vnd"],["Hào vietnamita", "Hào vietnamita|hao vietnamita|hao vietnamitas"],["Rial yemení", "rial yemení|riales yemenies|yer"],["Fils yemení", "fils yemení|fils yemenies"],["Franco yibutiano", "franco yibutiano|francos yibutianos|djf"],["Dinar yugoslavo", "dinar yugoslavo|dinares yugoslavos|yud"],["Kwacha zambiano", "kwacha zambiano|kwacha zambianos|zmw"],["Ngwee zambiano", "ngwee zambiano|ngwee zambianos"]]); export const CompoundUnitConnectorRegex = `(?[^.])`; export const CurrencyPrefixList: ReadonlyMap = new Map([["Dólar", "$"],["Dólar estadounidense", "us$|u$d|usd"],["Dólar del Caribe Oriental", "ec$|xcd"],["Dólar australiano", "a$|aud"],["Dólar bahameño", "b$|bsd"],["Dólar de Barbados", "bds$|bbd"],["Dólar beliceño", "bz$|bzd"],["Dólar bermudeño", "bd$|bmd"],["Dólar de Brunéi", "brunéi $|bnd"],["Dólar de Singapur", "s$|sgd"],["Dólar canadiense", "c$|can$|cad"],["Dólar de las Islas Caimán", "ci$|kyd"],["Dólar neozelandés", "nz$|nzd"],["Dólar fiyiano", "fj$|fjd"],["Dólar guyanés", "gy$|gyd"],["Dólar de Hong Kong", "hk$|hkd"],["Dólar jamaiquino", "j$|ja$|jmd"],["Dólar liberiano", "l$|lrd"],["Dólar namibio", "n$|nad"],["Dólar de las Islas Salomón", "si$|sbd"],["Nuevo dólar taiwanés", "nt$|twd"],["Real brasileño", "r$|brl"],["Guaraní", "₲|gs.|pyg"],["Dólar trinitense", "tt$|ttd"],["Yuan chino", "¥|cny|rmb"],["Yen", "¥|jpy"],["Euro", "€|eur"],["Florín", "ƒ"],["Libra", "£|gbp"],["Colón costarricense", "₡"],["Lira turca", "₺"]]); - export const AmbiguousCurrencyUnitList = [ 'le' ]; + export const AmbiguousCurrencyUnitList = [ "le" ]; export const DimensionSuffixList: ReadonlyMap = new Map([["Kilómetro", "km|kilometro|kilómetro|kilometros|kilómetros"],["Hectómetro", "hm|hectometro|hectómetro|hectometros|hectómetros"],["Decámetro", "decametro|decámetro|decametros|decámetros|dam"],["Metro", "m|m.|metro|metros"],["Decímetro", "dm|decimetro|decímetro|decimetros|decímetros"],["Centímetro", "cm|centimetro|centímetro|centimetros|centimetros"],["Milímetro", "mm|milimetro|milímetro|milimetros|milímetros"],["Micrómetro", "µm|um|micrometro|micrómetro|micrometros|micrómetros|micrón|micrónes"],["Nanómetro", "nm|nanometro|nanómetro|nanometros|nanómetros"],["Picómetro", "pm|picometro|picómetro|picometros|picometros"],["Milla", "mi|milla|millas"],["Yarda", "yd|yarda|yardas"],["Pulgada", "pulgada|pulgadas|\""],["Pie", "pie|pies|ft"],["Año luz", "año luz|años luz|al"],["Metro por segundo", "metro/segundo|m/s|metro por segundo|metros por segundo|metros por segundos"],["Kilómetro por hora", "km/h|kilómetro por hora|kilometro por hora|kilómetros por hora|kilometros por hora|kilómetro/hora|kilometro/hora|kilómetros/hora|kilometros/hora"],["Kilómetro por minuto", "km/min|kilómetro por minuto|kilometro por minuto|kilómetros por minuto|kilometros por minuto|kilómetro/minuto|kilometro/minuto|kilómetros/minuto|kilometros/minuto"],["Kilómetro por segundo", "km/seg|kilómetro por segundo|kilometro por segundo|kilómetros por segundo|kilometros por segundo|kilómetro/segundo|kilometro/segundo|kilómetros/segundo|kilometros/segundo"],["Milla por hora", "mph|milla por hora|mi/h|milla/hora|millas/hora|millas por hora"],["Nudo", "kt|nudo|nudos|kn"],["Pie por segundo", "ft/s|pie/s|ft/seg|pie/seg|pie por segundo|pies por segundo"],["Pie por minuto", "ft/min|pie/min|pie por minuto|pies por minuto"],["Yarda por minuto", "yardas por minuto|yardas/minuto|yardas/min"],["Yarda por segundo", "yardas por segundo|yardas/segundo|yardas/seg"],["Kilómetro cuadrado", "kilómetro cuadrado|kilómetros cuadrados|km2|km^2|km²"],["Hectómetro cuadrado", "hectómetro cuadrado|hectómetros cuadrados|hm2|hm^2|hm²|hectárea|hectáreas"],["Decámetro cuadrado", "decámetro cuadrado|decámetros cuadrados|dam2|dam^2|dam²|área|áreas"],["Metro cuadrado", "metro cuadrado|metros cuadrados|m2|m^2|m²"],["Decímetro cuadrado", "decímetro cuadrado|decímetros cuadrados|dm2|dm^2|dm²"],["Centímetro cuadrado", "centímetro cuadrado|centímetros cuadrados|cm2|cm^2|cm²"],["Milímetro cuadrado", "milímetro cuadrado|milímetros cuadrados|mm2|mm^2|mm²"],["Pulgada cuadrado", "pulgada cuadrada|pulgadas cuadradas"],["Pie cuadrado", "pie cuadrado|pies cuadrados|pie2|pie^2|pie²|ft2|ft^2|ft²"],["Yarda cuadrado", "yarda cuadrada|yardas cuadradas|yd2|yd^2|yd²"],["Acre", "acre|acres"],["Kilómetro cúbico", "kilómetro cúbico|kilómetros cúbico|km3|km^3|km³"],["Hectómetro cúbico", "hectómetro cúbico|hectómetros cúbico|hm3|hm^3|hm³"],["Decámetro cúbico", "decámetro cúbico|decámetros cúbico|dam3|dam^3|dam³"],["Metro cúbico", "metro cúbico|metros cúbico|m3|m^3|m³"],["Decímetro cúbico", "decímetro cúbico|decímetros cúbico|dm3|dm^3|dm³"],["Centímetro cúbico", "centímetro cúbico|centímetros cúbico|cc|cm3|cm^3|cm³"],["Milímetro cúbico", "milímetro cúbico|milímetros cúbico|mm3|mm^3|mm³"],["Pulgada cúbica", "pulgada cúbics|pulgadas cúbicas"],["Pie cúbico", "pie cúbico|pies cúbicos|pie3|pie^3|pie³|ft3|ft^3|ft³"],["Yarda cúbica", "yarda cúbica|yardas cúbicas|yd3|yd^3|yd³"],["Hectolitro", "hectolitro|hectolitros|hl"],["Litro", "litro|litros|lts|l"],["Mililitro", "mililitro|mililitros|ml"],["Galón", "galón|galones"],["Pinta", "pinta|pintas"],["Barril", "barril|barriles"],["Onza líquida", "onza líquida|onzas líquidas"],["Tonelada métrica", "tonelada métrica|toneladas métricas"],["Tonelada", "ton|tonelada|toneladas"],["Kilogramo", "kg|kilogramo|kilogramos"],["Hectogramo", "hg|hectogramo|hectogramos"],["Decagramo", "dag|decagramo|decagramos"],["Gramo", "g|gr|gramo|gramos"],["Decigramo", "dg|decigramo|decigramos"],["Centigramo", "cg|centigramo|centigramos"],["Miligramo", "mg|miligramo|miligramos"],["Microgramo", "µg|ug|microgramo|microgramos"],["Nanogramo", "ng|nanogramo|nanogramos"],["Picogramo", "pg|picogramo|picogramos"],["Libra", "lb|libra|libras"],["Onza", "oz|onza|onzas"],["Grano", "grano|granos"],["Quilate", "ct|kt|quilate|quilates"],["bit", "bit|bits"],["kilobit", "kilobit|kilobits|kb|kbit"],["megabit", "megabit|megabits|Mb|Mbit"],["gigabit", "gigabit|gigabits|Gb|Gbit"],["terabit", "terabit|terabits|Tb|Tbit"],["petabit", "petabit|petabits|Pb|Pbit"],["kibibit", "kibibit|kibibits|kib|kibit"],["mebibit", "mebibit|mebibits|Mib|Mibit"],["gibibit", "gibibit|gibibits|Gib|Gibit"],["tebibit", "tebibit|tebibits|Tib|Tibit"],["pebibit", "pebibit|pebibits|Pib|Pibit"],["byte", "byte|bytes"],["kilobyte", "kilobyte|kilobytes|kB|kByte"],["megabyte", "megabyte|megabytes|MB|MByte"],["gigabyte", "gigabyte|gigabytes|GB|GByte"],["terabyte", "terabyte|terabytes|TB|TByte"],["petabyte", "petabyte|petabytes|PB|PByte"],["kibibyte", "kibibyte|kibibytes|kiB|kiByte"],["mebibyte", "mebibyte|mebibytes|MiB|MiByte"],["gibibyte", "gibibyte|gibibytes|GiB|GiByte"],["tebibyte", "tebibyte|tebibytes|TiB|TiByte"],["pebibyte", "pebibyte|pebibytes|PiB|PiByte"]]); - export const AmbiguousDimensionUnitList = [ 'al','mi','área','áreas','pie','pies' ]; + export const AmbiguousDimensionUnitList = [ "al","mi","área","áreas","pie","pies" ]; export const LengthSuffixList: ReadonlyMap = new Map([["Kilómetro", "km|kilometro|kilómetro|kilometros|kilómetros"],["Hectómetro", "hm|hectometro|hectómetro|hectometros|hectómetros"],["Decámetro", "decametro|decámetro|decametros|decámetros|dam"],["Metro", "m|m.|metro|metros"],["Decímetro", "dm|decimetro|decímetro|decimetros|decímetros"],["Centímetro", "cm|centimetro|centímetro|centimetros|centimetros"],["Milímetro", "mm|milimetro|milímetro|milimetros|milímetros"],["Micrómetro", "µm|um|micrometro|micrómetro|micrometros|micrómetros|micrón|micrónes"],["Nanómetro", "nm|nanometro|nanómetro|nanometros|nanómetros"],["Picómetro", "pm|picometro|picómetro|picometros|picómetros"],["Milla", "mi|milla|millas"],["Yarda", "yd|yarda|yardas"],["Pulgada", "pulgada|pulgadas|\""],["Pie", "pie|pies|ft"],["Año luz", "año luz|años luz|al"]]); - export const AmbiguousLengthUnitList = [ 'mi','área','áreas' ]; + export const AmbiguousLengthUnitList = [ "mi","área","áreas" ]; export const BuildPrefix = `(?<=(\\s|^|\\P{L}))`; export const BuildSuffix = `(?=(\\s|\\P{L}|$))`; export const ConnectorToken = 'de'; export const SpeedSuffixList: ReadonlyMap = new Map([["Metro por segundo", "metro/segundo|m/s|metro por segundo|metros por segundo|metros por segundos"],["Kilómetro por hora", "km/h|kilómetro por hora|kilometro por hora|kilómetros por hora|kilometros por hora|kilómetro/hora|kilometro/hora|kilómetros/hora|kilometros/hora"],["Kilómetro por minuto", "km/min|kilómetro por minuto|kilometro por minuto|kilómetros por minuto|kilometros por minuto|kilómetro/minuto|kilometro/minuto|kilómetros/minuto|kilometros/minuto"],["Kilómetro por segundo", "km/seg|kilómetro por segundo|kilometro por segundo|kilómetros por segundo|kilometros por segundo|kilómetro/segundo|kilometro/segundo|kilómetros/segundo|kilometros/segundo"],["Milla por hora", "mph|milla por hora|mi/h|milla/hora|millas/hora|millas por hora"],["Nudo", "kt|nudo|nudos|kn"],["Pie por segundo", "ft/s|pie/s|ft/seg|pie/seg|pie por segundo|pies por segundo"],["Pie por minuto", "ft/min|pie/min|pie por minuto|pies por minuto"],["Yarda por minuto", "yardas por minuto|yardas/minuto|yardas/min"],["Yarda por segundo", "yardas por segundo|yardas/segundo|yardas/seg"]]); - export const AmbiguousSpeedUnitList = [ 'nudo','nudos' ]; + export const AmbiguousSpeedUnitList = [ "nudo","nudos" ]; export const TemperatureSuffixList: ReadonlyMap = new Map([["Kelvin", "k|K|kelvin"],["Rankine", "r|rankine"],["Grado Celsius", "°c|grados c|grado celsius|grados celsius|celsius|grado centígrado|grados centígrados|centígrado|centígrados"],["Grado Fahrenheit", "°f|grados f|grado fahrenheit|grados fahrenheit|fahrenheit"],["Grado Réaumur", "°r|°re|grados r|grado réaumur|grados réaumur|réaumur"],["Grado Delisle", "°d|grados d|grado delisle|grados delisle|delisle"],["Grado", "°|grados|grado"]]); export const VolumeSuffixList: ReadonlyMap = new Map([["Kilómetro cúbico", "kilómetro cúbico|kilómetros cúbico|km3|km^3|km³"],["Hectómetro cúbico", "hectómetro cúbico|hectómetros cúbico|hm3|hm^3|hm³"],["Decámetro cúbico", "decámetro cúbico|decámetros cúbico|dam3|dam^3|dam³"],["Metro cúbico", "metro cúbico|metros cúbico|m3|m^3|m³"],["Decímetro cúbico", "decímetro cúbico|decímetros cúbico|dm3|dm^3|dm³"],["Centímetro cúbico", "centímetro cúbico|centímetros cúbico|cc|cm3|cm^3|cm³"],["Milímetro cúbico", "milímetro cúbico|milímetros cúbico|mm3|mm^3|mm³"],["Pulgada cúbica", "pulgada cúbica|pulgadas cúbicas"],["Pie cúbico", "pie cúbico|pies cúbicos|pie3|pie^3|pie³|ft3|ft^3|ft³"],["Yarda cúbica", "yarda cúbica|yardas cúbicas|yd3|yd^3|yd³"],["Hectolitro", "hectolitro|hectolitros|hl"],["Litro", "litro|litros|lts|l"],["Mililitro", "mililitro|mililitros|ml"],["Galón", "galón|galones"],["Pinta", "pinta|pintas"],["Barril", "barril|barriles|bbl"],["Onza líquida", "onza líquida|onzas líquidas"]]); export const WeightSuffixList: ReadonlyMap = new Map([["Tonelada métrica", "tonelada métrica|toneladas métricas"],["Tonelada", "ton|tonelada|toneladas"],["Kilogramo", "kg|kilogramo|kilogramos"],["Hectogramo", "hg|hectogramo|hectogramos"],["Decagramo", "dag|decagramo|decagramos"],["Gramo", "g|gr|gramo|gramos"],["Decigramo", "dg|decigramo|decigramos"],["Centigramo", "cg|centigramo|centigramos"],["Miligramo", "mg|miligramo|miligramos"],["Microgramo", "µg|ug|microgramo|microgramos"],["Nanogramo", "ng|nanogramo|nanogramos"],["Picogramo", "pg|picogramo|picogramos"],["Libra", "lb|libra|libras"],["Onza", "oz|onza|onzas"],["Grano", "grano|granos|gr"],["Quilate", "ct|kt|quilate|quilates"]]); diff --git a/JavaScript/packages/recognizers-number/src/resources/chineseNumeric.ts b/JavaScript/packages/recognizers-number/src/resources/chineseNumeric.ts index 1865ffb4fb..e009f53b83 100644 --- a/JavaScript/packages/recognizers-number/src/resources/chineseNumeric.ts +++ b/JavaScript/packages/recognizers-number/src/resources/chineseNumeric.ts @@ -20,7 +20,7 @@ export namespace ChineseNumeric { export const FullToHalfMap: ReadonlyMap = new Map([["0", "0"],["1", "1"],["2", "2"],["3", "3"],["4", "4"],["5", "5"],["6", "6"],["7", "7"],["8", "8"],["9", "9"],["/", "/"],["-", "-"],[",", "\'"],["G", "G"],["M", "M"],["T", "T"],["K", "K"],["k", "k"],[".", "."]]); export const TratoSimMap: ReadonlyMap = new Map([["佰", "百"],["點", "点"],["個", "个"],["幾", "几"],["對", "对"],["雙", "双"]]); export const UnitMap: ReadonlyMap = new Map([["萬萬", "億"],["億萬", "兆"],["萬億", "兆"],["万万", "亿"],["万亿", "兆"],["亿万", "兆"],[" ", ""],["多", ""],["余", ""],["几", ""]]); - export const RoundDirectList = [ '万','萬','亿','兆','億' ]; + export const RoundDirectList = [ "万","萬","亿","兆","億" ]; export const DigitalNumberRegex = `((?<=(\\d|\\b))${BaseNumbers.MultiplierLookupRegex}(?=\\b))`; export const ZeroToNineFullHalfRegex = `[\\d1234567890]`; export const DigitNumRegex = `${ZeroToNineFullHalfRegex}+`; diff --git a/JavaScript/packages/recognizers-number/src/resources/englishNumeric.ts b/JavaScript/packages/recognizers-number/src/resources/englishNumeric.ts index fff6c732d7..34ef20eb32 100644 --- a/JavaScript/packages/recognizers-number/src/resources/englishNumeric.ts +++ b/JavaScript/packages/recognizers-number/src/resources/englishNumeric.ts @@ -86,10 +86,10 @@ export namespace EnglishNumeric { export const NonDecimalSeparatorChar = ','; export const HalfADozenText = 'six'; export const WordSeparatorToken = 'and'; - export const WrittenDecimalSeparatorTexts = [ 'point' ]; - export const WrittenGroupSeparatorTexts = [ 'punto' ]; - export const WrittenIntegerSeparatorTexts = [ 'and' ]; - export const WrittenFractionSeparatorTexts = [ 'and' ]; + export const WrittenDecimalSeparatorTexts = [ "point" ]; + export const WrittenGroupSeparatorTexts = [ "punto" ]; + export const WrittenIntegerSeparatorTexts = [ "and" ]; + export const WrittenFractionSeparatorTexts = [ "and" ]; export const HalfADozenRegex = `half\\s+a\\s+dozen`; export const DigitalNumberRegex = `((?<=\\b)(hundred|thousand|million|billion|trillion|dozen(s)?)(?=\\b))|((?<=(\\d|\\b))${BaseNumbers.MultiplierLookupRegex}(?=\\b))`; export const CardinalNumberMap: ReadonlyMap = new Map([["a", 1],["zero", 0],["an", 1],["one", 1],["two", 2],["three", 3],["four", 4],["five", 5],["six", 6],["seven", 7],["eight", 8],["nine", 9],["ten", 10],["eleven", 11],["twelve", 12],["dozen", 12],["dozens", 12],["thirteen", 13],["fourteen", 14],["fifteen", 15],["sixteen", 16],["seventeen", 17],["eighteen", 18],["nineteen", 19],["twenty", 20],["thirty", 30],["forty", 40],["fifty", 50],["sixty", 60],["seventy", 70],["eighty", 80],["ninety", 90],["hundred", 100],["thousand", 1000],["million", 1000000],["billion", 1000000000],["trillion", 1000000000000]]); diff --git a/JavaScript/packages/recognizers-number/src/resources/frenchNumeric.ts b/JavaScript/packages/recognizers-number/src/resources/frenchNumeric.ts index dac49c5597..be5bf6868c 100644 --- a/JavaScript/packages/recognizers-number/src/resources/frenchNumeric.ts +++ b/JavaScript/packages/recognizers-number/src/resources/frenchNumeric.ts @@ -65,10 +65,10 @@ export namespace FrenchNumeric { export const NonDecimalSeparatorChar = '.'; export const HalfADozenText = 'six'; export const WordSeparatorToken = 'et'; - export const WrittenDecimalSeparatorTexts = [ 'virgule' ]; - export const WrittenGroupSeparatorTexts = [ 'point','points' ]; - export const WrittenIntegerSeparatorTexts = [ 'et','-' ]; - export const WrittenFractionSeparatorTexts = [ 'et','sur' ]; + export const WrittenDecimalSeparatorTexts = [ "virgule" ]; + export const WrittenGroupSeparatorTexts = [ "point","points" ]; + export const WrittenIntegerSeparatorTexts = [ "et","-" ]; + export const WrittenFractionSeparatorTexts = [ "et","sur" ]; export const HalfADozenRegex = `(?<=\\b)+demi\\s+douzaine`; export const DigitalNumberRegex = `((?<=\\b)(cent|mille|million|millions|milliard|milliards|billions|billion|douzaine(s)?)(?=\\b))|((?<=(\\d|\\b))${BaseNumbers.MultiplierLookupRegex}(?=\\b))`; export const AmbiguousFractionConnectorsRegex = `^[.]`; diff --git a/JavaScript/packages/recognizers-number/src/resources/japaneseNumeric.ts b/JavaScript/packages/recognizers-number/src/resources/japaneseNumeric.ts index 3ccba8c8b5..4f322f9add 100644 --- a/JavaScript/packages/recognizers-number/src/resources/japaneseNumeric.ts +++ b/JavaScript/packages/recognizers-number/src/resources/japaneseNumeric.ts @@ -19,7 +19,7 @@ export namespace JapaneseNumeric { export const ZeroToNineMap: ReadonlyMap = new Map([["0", 0],["1", 1],["2", 2],["3", 3],["4", 4],["5", 5],["6", 6],["7", 7],["8", 8],["9", 9],["零", 0],["一", 1],["二", 2],["三", 3],["四", 4],["五", 5],["六", 6],["七", 7],["八", 8],["九", 9],["半", 0.5]]); export const FullToHalfMap: ReadonlyMap = new Map([["0", "0"],["1", "1"],["2", "2"],["3", "3"],["4", "4"],["5", "5"],["6", "6"],["7", "7"],["8", "8"],["9", "9"],["/", "/"],["-", "-"],[",", "\'"],["、", "\'"],["G", "G"],["M", "M"],["T", "T"],["K", "K"],["k", "k"],[".", "."]]); export const UnitMap: ReadonlyMap = new Map([["万万", "億"],["億万", "兆"],["万億", "兆"],[" ", ""]]); - export const RoundDirectList = [ '万','億','兆' ]; + export const RoundDirectList = [ "万","億","兆" ]; export const DigitalNumberRegex = `((?<=(\\d|\\b))${BaseNumbers.MultiplierLookupRegex}(?=\\b))`; export const ZeroToNineFullHalfRegex = `[\\d1234567890]`; export const DigitNumRegex = `${ZeroToNineFullHalfRegex}+`; diff --git a/JavaScript/packages/recognizers-number/src/resources/portugueseNumeric.ts b/JavaScript/packages/recognizers-number/src/resources/portugueseNumeric.ts index 8e96983588..6bf59fa0a4 100644 --- a/JavaScript/packages/recognizers-number/src/resources/portugueseNumeric.ts +++ b/JavaScript/packages/recognizers-number/src/resources/portugueseNumeric.ts @@ -67,11 +67,11 @@ export namespace PortugueseNumeric { export const NonDecimalSeparatorChar = '.'; export const HalfADozenText = 'seis'; export const WordSeparatorToken = 'e'; - export const WrittenDecimalSeparatorTexts = [ 'virgula','vírgula' ]; - export const WrittenGroupSeparatorTexts = [ 'ponto' ]; - export const WrittenIntegerSeparatorTexts = [ 'e' ]; - export const WrittenFractionSeparatorTexts = [ 'com' ]; - export const WrittenFractionSuffix = [ 'avo','ava' ]; + export const WrittenDecimalSeparatorTexts = [ "virgula","vírgula" ]; + export const WrittenGroupSeparatorTexts = [ "ponto" ]; + export const WrittenIntegerSeparatorTexts = [ "e" ]; + export const WrittenFractionSeparatorTexts = [ "com" ]; + export const WrittenFractionSuffix = [ "avo","ava" ]; export const PluralSuffix = 's'; export const HalfADozenRegex = `meia\\s+d[uú]zia`; export const DigitalNumberRegex = `((?<=\\b)(mil|cem|milh[oõ]es|milh[aã]o|bilh[oõ]es|bilh[aã]o|trilh[oõ]es|trilh[aã]o|milhares|centena|centenas|dezena|dezenas?)(?=\\b))|((?<=(\\d|\\b))${BaseNumbers.MultiplierLookupRegex}(?=\\b))`; diff --git a/JavaScript/packages/recognizers-number/src/resources/spanishNumeric.ts b/JavaScript/packages/recognizers-number/src/resources/spanishNumeric.ts index 6d86dce499..01144b2925 100644 --- a/JavaScript/packages/recognizers-number/src/resources/spanishNumeric.ts +++ b/JavaScript/packages/recognizers-number/src/resources/spanishNumeric.ts @@ -66,10 +66,10 @@ export namespace SpanishNumeric { export const NonDecimalSeparatorChar = '.'; export const HalfADozenText = 'seis'; export const WordSeparatorToken = 'y'; - export const WrittenDecimalSeparatorTexts = [ 'coma','con' ]; - export const WrittenGroupSeparatorTexts = [ 'punto' ]; - export const WrittenIntegerSeparatorTexts = [ 'y' ]; - export const WrittenFractionSeparatorTexts = [ 'con' ]; + export const WrittenDecimalSeparatorTexts = [ "coma","con" ]; + export const WrittenGroupSeparatorTexts = [ "punto" ]; + export const WrittenIntegerSeparatorTexts = [ "y" ]; + export const WrittenFractionSeparatorTexts = [ "con" ]; export const HalfADozenRegex = `media\\s+docena`; export const DigitalNumberRegex = `((?<=\\b)(mil|millones|mill[oó]n|billones|bill[oó]n|trillones|trill[oó]n|docenas?)(?=\\b))|((?<=(\\d|\\b))${BaseNumbers.MultiplierLookupRegex}(?=\\b))`; export const CardinalNumberMap: ReadonlyMap = new Map([["cero", 0],["un", 1],["una", 1],["uno", 1],["dos", 2],["tres", 3],["cuatro", 4],["cinco", 5],["seis", 6],["siete", 7],["ocho", 8],["nueve", 9],["diez", 10],["once", 11],["doce", 12],["docena", 12],["docenas", 12],["trece", 13],["catorce", 14],["quince", 15],["dieciseis", 16],["dieciséis", 16],["diecisiete", 17],["dieciocho", 18],["diecinueve", 19],["veinte", 20],["ventiuna", 21],["ventiuno", 21],["veintiun", 21],["veintiún", 21],["veintiuno", 21],["veintiuna", 21],["veintidos", 22],["veintidós", 22],["veintitres", 23],["veintitrés", 23],["veinticuatro", 24],["veinticinco", 25],["veintiseis", 26],["veintiséis", 26],["veintisiete", 27],["veintiocho", 28],["veintinueve", 29],["treinta", 30],["cuarenta", 40],["cincuenta", 50],["sesenta", 60],["setenta", 70],["ochenta", 80],["noventa", 90],["cien", 100],["ciento", 100],["doscientas", 200],["doscientos", 200],["trescientas", 300],["trescientos", 300],["cuatrocientas", 400],["cuatrocientos", 400],["quinientas", 500],["quinientos", 500],["seiscientas", 600],["seiscientos", 600],["setecientas", 700],["setecientos", 700],["ochocientas", 800],["ochocientos", 800],["novecientas", 900],["novecientos", 900],["mil", 1000],["millon", 1000000],["millón", 1000000],["millones", 1000000],["billon", 1000000000000],["billón", 1000000000000],["billones", 1000000000000],["trillon", 1000000000000000000],["trillón", 1000000000000000000],["trillones", 1000000000000000000]]); diff --git a/JavaScript/packages/recognizers-sequence/src/resources/basePhoneNumbers.ts b/JavaScript/packages/recognizers-sequence/src/resources/basePhoneNumbers.ts index ee037386a3..73d8d79762 100644 --- a/JavaScript/packages/recognizers-sequence/src/resources/basePhoneNumbers.ts +++ b/JavaScript/packages/recognizers-sequence/src/resources/basePhoneNumbers.ts @@ -18,11 +18,11 @@ export namespace BasePhoneNumbers { export const ITPhoneNumberRegex = `((\\(\\s?(\\+\\s?|00)39\\s?\\)\\s?)|(((?[a-zA-Z]{2,18})${UrlSuffixRegex}`; export const UrlRegex2 = `((ht|f)tp(s?)\\:\\/\\/|www\\.)[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(\\.(?[0-9a-zA-Z]+))+(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\'\\/\\\\\\+&%\\$#_=@]*)?`; export const IpUrlRegex = `(?(${ExtractionRestrictionRegex}${ProtocolRegex}(${BaseIp.Ipv4Regex}|localhost)${UrlSuffixRegex}))`; - export const TldList = [ 'com','org','net','int','edu','gov','mil','academy','app','aws','bot','buy','cafe','city','cloud','company','eco','education','game','games','gmbh','law','limited','live','llc','ltd','ltda','map','med','news','ngo','ong','phd','place','radio','science','search','shopping','sport','store','tvs','wiki','work','ac','ad','ae','af','ag','ai','al','am','an','ao','aq','ar','as','at','au','aw','ax','az','ba','bb','bd','be','bf','bg','bh','bi','bj','bl','bm','bn','bo','bq','br','bs','bt','bv','bw','by','bz','ca','cc','cd','cf','cg','ch','ci','ck','cl','cm','cn','co','cr','cu','cv','cw','cx','cy','cz','de','dj','dk','dm','do','dz','ec','ee','eg','eh','er','es','et','eu','fi','fj','fk','fm','fo','fr','ga','gb','gd','ge','gf','gg','gh','gi','gl','gm','gn','gp','gq','gr','gs','gt','gu','gw','gy','hk','hm','hn','hr','ht','hu','id','ie','il','im','in','io','iq','ir','is','it','je','jm','jo','jp','ke','kg','kh','ki','km','kn','kp','kr','kw','ky','kz','la','lb','lc','li','lk','lr','ls','lt','lu','lv','ly','ma','mc','md','me','mf','mg','mh','mk','ml','mm','mn','mo','mp','mq','mr','ms','mt','mu','mv','mw','mx','my','mz','na','nc','ne','nf','ng','ni','nl','no','np','nr','nu','nz','om','pa','pe','pf','pg','ph','pk','pl','pm','pn','pr','ps','pt','pw','py','qa','re','ro','rs','ru','rw','sa','sb','sc','sd','se','sg','sh','si','sj','sk','sl','sm','sn','so','sr','ss','st','su','sv','sx','sy','sz','tc','td','tf','tg','th','tj','tk','tl','tm','tn','to','tp','tr','tt','tv','tw','tz','ua','ug','uk','um','us','uy','uz','va','vc','ve','vg','vi','vn','vu','wf','ws','ye','yt','za','zm','zw' ]; + export const TldList = [ "com","org","net","int","edu","gov","mil","academy","app","aws","bot","buy","cafe","city","cloud","company","eco","education","game","games","gmbh","law","limited","live","llc","ltd","ltda","map","med","news","ngo","ong","phd","place","radio","science","search","shopping","sport","store","tvs","wiki","work","ac","ad","ae","af","ag","ai","al","am","an","ao","aq","ar","as","at","au","aw","ax","az","ba","bb","bd","be","bf","bg","bh","bi","bj","bl","bm","bn","bo","bq","br","bs","bt","bv","bw","by","bz","ca","cc","cd","cf","cg","ch","ci","ck","cl","cm","cn","co","cr","cu","cv","cw","cx","cy","cz","de","dj","dk","dm","do","dz","ec","ee","eg","eh","er","es","et","eu","fi","fj","fk","fm","fo","fr","ga","gb","gd","ge","gf","gg","gh","gi","gl","gm","gn","gp","gq","gr","gs","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu","id","ie","il","im","in","io","iq","ir","is","it","je","jm","jo","jp","ke","kg","kh","ki","km","kn","kp","kr","kw","ky","kz","la","lb","lc","li","lk","lr","ls","lt","lu","lv","ly","ma","mc","md","me","mf","mg","mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mt","mu","mv","mw","mx","my","mz","na","nc","ne","nf","ng","ni","nl","no","np","nr","nu","nz","om","pa","pe","pf","pg","ph","pk","pl","pm","pn","pr","ps","pt","pw","py","qa","re","ro","rs","ru","rw","sa","sb","sc","sd","se","sg","sh","si","sj","sk","sl","sm","sn","so","sr","ss","st","su","sv","sx","sy","sz","tc","td","tf","tg","th","tj","tk","tl","tm","tn","to","tp","tr","tt","tv","tw","tz","ua","ug","uk","um","us","uy","uz","va","vc","ve","vg","vi","vn","vu","wf","ws","ye","yt","za","zm","zw" ]; } diff --git a/JavaScript/packages/resource-generator/lib/code-writers.ts b/JavaScript/packages/resource-generator/lib/code-writers.ts index a06b7c5657..7bdbcc5aca 100644 --- a/JavaScript/packages/resource-generator/lib/code-writers.ts +++ b/JavaScript/packages/resource-generator/lib/code-writers.ts @@ -133,7 +133,7 @@ class ArrayWriter extends CodeWriter { this.entries = []; this.valueType = typeof(entries[0]); entries.forEach(element => { - this.entries.push(`'${sanitize(element)}'`) + this.entries.push(`"${sanitize(element)}"`) }); } diff --git a/Patterns/English/English-DateTime.yaml b/Patterns/English/English-DateTime.yaml index 85b356bfbe..b6316c4417 100644 --- a/Patterns/English/English-DateTime.yaml +++ b/Patterns/English/English-DateTime.yaml @@ -57,7 +57,7 @@ RelativeMonthRegex: !nestedRegex WrittenMonthRegex: !simpleRegex def: (((the\s+)?month of\s+)?(?april|apr|august|aug|december|dec|february|feb|january|jan|july|jul|june|jun|march|mar|may|november|nov|october|oct|september|sept|sep)) MonthSuffixRegex: !nestedRegex - def: (?(in\s+|of\s+|on\s+)?({RelativeMonthRegex}|{WrittenMonthRegex})) + def: (?((in|of|on)\s+)?({RelativeMonthRegex}|{WrittenMonthRegex})) references: [ RelativeMonthRegex, WrittenMonthRegex ] DateUnitRegex: !simpleRegex def: (?decades?|years?|months?|weeks?|(?business\s+)?days?)\b @@ -170,7 +170,7 @@ NextDateRegex: !nestedRegex def: \b({NextPrefixRegex}(\s*week(\s*,?\s*on)?)?\s+{WeekDayRegex})|((on\s+)?{WeekDayRegex}((\s+of)?\s+(the\s+following|(the\s+)?next)\s*week))\b references: [ NextPrefixRegex, WeekDayRegex ] SpecialDayRegex: !nestedRegex - def: \b((the\s+)?day before yesterday|(the\s+)?day after (tomorrow|tmr)|((the\s+)?({RelativeRegex}|my)\s+day)|yesterday|tomorrow|tmr|today)\b + def: \b((the\s+)?day before yesterday|(the\s+)?day after (tomorrow|tmr)|the\s+day\s+(before|after)(?!=\s+day)|((the\s+)?({RelativeRegex}|my)\s+day)|yesterday|tomorrow|tmr|today)\b references: [ RelativeRegex ] SpecialDayWithNumRegex: !nestedRegex def: \b((?{WrittenNumRegex})\s+days?\s+from\s+(?yesterday|tomorrow|tmr|today))\b @@ -981,4 +981,28 @@ NightTermList: !list types: [ string ] entries: - night +SameDayTerms: !list + types: [ string ] + entries: + - today +PlusOneDayTerms: !list + types: [ string ] + entries: + - tomorrow + - tmr + - day after +MinusOneDayTerms: !list + types: [ string ] + entries: + - yesterday + - day before +PlusTwoDayTerms: !list + types: [ string ] + entries: + - day after tomorrow + - day after tmr +MinusTwoDayTerms: !list + types: [ string ] + entries: + - day before yesterday ... diff --git a/Patterns/French/French-DateTime.yaml b/Patterns/French/French-DateTime.yaml index 3478aee08e..2a82129dda 100644 --- a/Patterns/French/French-DateTime.yaml +++ b/Patterns/French/French-DateTime.yaml @@ -449,6 +449,15 @@ RelativeDurationUnitRegex: !nestedRegex ReferenceDatePeriodRegex: !simpleRegex # TODO: modify below regex according to the counterpart in English def: ^[.] +NextPrefixRegex: !simpleRegex + # TODO: implement the relative day regex if needed. If yes, they should be abstracted + def: ^[\.] +PastPrefixRegex: !simpleRegex + # TODO: implement the relative day regex if needed. If yes, they should be abstracted + def: ^[\.] +RelativeDayRegex: !simpleRegex + # TODO: implement the relative day regex if needed. If yes, they should be abstracted + def: ^[\.] ConnectorRegex: !simpleRegex def: ^(,|pour|t|vers)$ ConnectorAndRegex: !simpleRegex @@ -1012,4 +1021,32 @@ NightTermList: !list types: [ string ] entries: - nuit +SameDayTerms: !list + types: [ string ] + entries: + - 'aujourd''hui' + - auj +PlusOneDayTerms: !list + types: [ string ] + entries: + - demain + - a2m1 + - lendemain + - jour suivant +MinusOneDayTerms: !list + types: [ string ] + entries: + - hier + - dernier +PlusTwoDayTerms: !list + types: [ string ] + entries: + - après demain + - après-demain + - apres-demain +MinusTwoDayTerms: !list + types: [ string ] + entries: + - avant-hier + - avant hier ... \ No newline at end of file diff --git a/Patterns/German/German-DateTime.yaml b/Patterns/German/German-DateTime.yaml index 456aae3646..0dbf8c7915 100644 --- a/Patterns/German/German-DateTime.yaml +++ b/Patterns/German/German-DateTime.yaml @@ -993,4 +993,25 @@ NightTermList: !list types: [ string ] entries: - nacht +SameDayTerms: !list + types: [ string ] + entries: + - heute +PlusOneDayTerms: !list + types: [ string ] + entries: + - morgen + - tmr +MinusOneDayTerms: !list + types: [ string ] + entries: + - gestern +PlusTwoDayTerms: !list + types: [ string ] + entries: + - übermorgen +MinusTwoDayTerms: !list + types: [ string ] + entries: + - vorgestern ... diff --git a/Patterns/Italian/Italian-DateTime.yaml b/Patterns/Italian/Italian-DateTime.yaml index 4bc2bf66e0..57cb6f0128 100644 --- a/Patterns/Italian/Italian-DateTime.yaml +++ b/Patterns/Italian/Italian-DateTime.yaml @@ -136,6 +136,12 @@ RelativeWeekDayRegex: !simpleRegex NumberEndingPattern: !simpleRegex # TODO: modify below regex according to the counterpart in English def: ^[.] +NextPrefixRegex: !simpleRegex + # TODO: modify below regex according to the counterpart in English + def: ^[.] +PastPrefixRegex: !simpleRegex + # TODO: modify below regex according to the counterpart in English + def: ^[.] SpecialDate: !nestedRegex def: (?=\b(di|al)\s+il\s+){DayRegex}\b references: [ DayRegex ] @@ -899,4 +905,10 @@ NightTermList: !list types: [ string ] entries: - nuit +# TODO: modify below lists according to the counterpart in English +SameDayTerms: [] +PlusOneDayTerms: [] +MinusOneDayTerms: [] +PlusTwoDayTerms: [] +MinusTwoDayTerms: [] ... diff --git a/Patterns/Portuguese/Portuguese-DateTime.yaml b/Patterns/Portuguese/Portuguese-DateTime.yaml index ae3ddd1084..4ab42c8cc2 100644 --- a/Patterns/Portuguese/Portuguese-DateTime.yaml +++ b/Patterns/Portuguese/Portuguese-DateTime.yaml @@ -849,4 +849,34 @@ NightTermList: !list types: [ string ] entries: - noite +SameDayTerms: !list + types: [ string ] + entries: + - hoje + - este dia + - esse dia + - o dia +PlusOneDayTerms: !list + types: [ string ] + entries: + - amanha + - de amanha + - dia seguinte + - o dia de amanha + - proximo dia +MinusOneDayTerms: !list + types: [ string ] + entries: + - ontem + - ultimo dia +PlusTwoDayTerms: !list + types: [ string ] + entries: + - depois de amanha + - dia depois de amanha +MinusTwoDayTerms: !list + types: [ string ] + entries: + - anteontem + - dia antes de ontem ... \ No newline at end of file diff --git a/Patterns/Spanish/Spanish-DateTime.yaml b/Patterns/Spanish/Spanish-DateTime.yaml index 658c650aa2..38d724f6cc 100644 --- a/Patterns/Spanish/Spanish-DateTime.yaml +++ b/Patterns/Spanish/Spanish-DateTime.yaml @@ -820,4 +820,31 @@ NightTermList: !list types: [ string ] entries: - noche +SameDayTerms: !list + types: [ string ] + entries: + - hoy + - el dia +PlusOneDayTerms: !list + types: [ string ] + entries: + - mañana + - dia siguiente + - el dia de mañana + - proximo dia +MinusOneDayTerms: !list + types: [ string ] + entries: + - ayer + - ultimo dia +PlusTwoDayTerms: !list + types: [ string ] + entries: + - pasado mañana + - dia despues de mañana +MinusTwoDayTerms: !list + types: [ string ] + entries: + - anteayer + - dia antes de ayer ... \ No newline at end of file diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/date_time/english/date_parser_config.py b/Python/libraries/recognizers-date-time/recognizers_date_time/date_time/english/date_parser_config.py index b1c1f6227d..5de01a7600 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/date_time/english/date_parser_config.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/date_time/english/date_parser_config.py @@ -175,6 +175,10 @@ def get_swift_day(self, source: str) -> int: swift = 2 elif trimmed_text.endswith('day before yesterday'): swift = -2 + elif trimmed_text.endswith('day after'): + swift = 1 + elif trimmed_text.endswith('day before'): + swift = -1 elif matches: swift = self.get_swift(source) diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/date_time/french/date_parser_config.py b/Python/libraries/recognizers-date-time/recognizers_date_time/date_time/french/date_parser_config.py index 2acd6f6eb4..0272b862b0 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/date_time/french/date_parser_config.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/date_time/french/date_parser_config.py @@ -161,7 +161,7 @@ def get_swift_day(self, source: str) -> int: swift = 1 elif trimmed_text == 'hier': swift = -1 - elif trimmed_text.endswith('après demain') or trimmed_text.endswith('après-demain'): + elif trimmed_text.endswith('après demain') or trimmed_text.endswith('après-demain') or trimmed_text.endswith('apres-demain'): swift = 2 elif trimmed_text.endswith('avant-hier') or trimmed_text.endswith('avant hier'): swift = -2 diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/english_date_time.py b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/english_date_time.py index bb3993db67..fd91e7d744 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/english_date_time.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/english_date_time.py @@ -34,7 +34,7 @@ class EnglishDateTime: SingleWeekDayRegex = f'\\b(?sunday|monday|tuesday|wednesday|thursday|friday|saturday|mon|tue|tues|wedn|weds|wed|thurs|thur|thu|fri|((?<=on\\s+)(sat|sun)))\\b' RelativeMonthRegex = f'(?(of\\s+)?{RelativeRegex}\\s+month)\\b' WrittenMonthRegex = f'(((the\\s+)?month of\\s+)?(?april|apr|august|aug|december|dec|february|feb|january|jan|july|jul|june|jun|march|mar|may|november|nov|october|oct|september|sept|sep))' - MonthSuffixRegex = f'(?(in\\s+|of\\s+|on\\s+)?({RelativeMonthRegex}|{WrittenMonthRegex}))' + MonthSuffixRegex = f'(?((in|of|on)\\s+)?({RelativeMonthRegex}|{WrittenMonthRegex}))' DateUnitRegex = f'(?decades?|years?|months?|weeks?|(?business\\s+)?days?)\\b' DateTokenPrefix = 'on ' TimeTokenPrefix = 'at ' @@ -78,7 +78,7 @@ class EnglishDateTime: ThisRegex = f'\\b((this(\\s*week)?(\\s*on)?\\s+){WeekDayRegex})|({WeekDayRegex}((\\s+of)?\\s+this\\s*week))\\b' LastDateRegex = f'\\b({PastPrefixRegex}(\\s*week)?\\s+{WeekDayRegex})|({WeekDayRegex}(\\s+last\\s*week))\\b' NextDateRegex = f'\\b({NextPrefixRegex}(\\s*week(\\s*,?\\s*on)?)?\\s+{WeekDayRegex})|((on\\s+)?{WeekDayRegex}((\\s+of)?\\s+(the\\s+following|(the\\s+)?next)\\s*week))\\b' - SpecialDayRegex = f'\\b((the\\s+)?day before yesterday|(the\\s+)?day after (tomorrow|tmr)|((the\\s+)?({RelativeRegex}|my)\\s+day)|yesterday|tomorrow|tmr|today)\\b' + SpecialDayRegex = f'\\b((the\\s+)?day before yesterday|(the\\s+)?day after (tomorrow|tmr)|the\\s+day\\s+(before|after)(?!=\\s+day)|((the\\s+)?({RelativeRegex}|my)\\s+day)|yesterday|tomorrow|tmr|today)\\b' SpecialDayWithNumRegex = f'\\b((?{WrittenNumRegex})\\s+days?\\s+from\\s+(?yesterday|tomorrow|tmr|today))\\b' RelativeDayRegex = f'\\b(((the\\s+)?{RelativeRegex}\\s+day))\\b' SetWeekDayRegex = f'\\b(?on\\s+)?(?morning|afternoon|evening|night|sunday|monday|tuesday|wednesday|thursday|friday|saturday)s\\b' @@ -577,4 +577,9 @@ class EnglishDateTime: EveningTermList = ['evening'] DaytimeTermList = ['daytime'] NightTermList = ['night'] + SameDayTerms = ['today'] + PlusOneDayTerms = ['tomorrow', 'tmr', 'day after'] + MinusOneDayTerms = ['yesterday', 'day before'] + PlusTwoDayTerms = ['day after tomorrow', 'day after tmr'] + MinusTwoDayTerms = ['day before yesterday'] # pylint: enable=line-too-long diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/french_date_time.py b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/french_date_time.py index f0ac97d6a6..65c4ff6cee 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/french_date_time.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/french_date_time.py @@ -186,6 +186,9 @@ class FrenchDateTime: RelativeTimeUnitRegex = f'(((({ThisPrefixRegex})?)\\s+({TimeUnitRegex}(\\s*{NextSuffixRegex}|{PastSuffixRegex})?))|((le))\\s+({RestrictedTimeUnitRegex}))' RelativeDurationUnitRegex = f'(((?<=({ThisPrefixRegex})\\s+)?\\b({DurationUnitRegex})(\\s+{NextSuffixRegex}|{PastSuffixRegex})?)|((le|my))\\s+({RestrictedTimeUnitRegex}))' ReferenceDatePeriodRegex = f'^[.]' + NextPrefixRegex = f'^[\\.]' + PastPrefixRegex = f'^[\\.]' + RelativeDayRegex = f'^[\\.]' ConnectorRegex = f'^(,|pour|t|vers)$' ConnectorAndRegex = f'\\b(et\\s*(le|la(s)?)?)\\b.+' FromRegex = f'((de|du)?)$' @@ -626,4 +629,9 @@ class FrenchDateTime: EveningTermList = ['soir', 'soiree', 'soirée'] DaytimeTermList = ['jour', 'journee', 'journée'] NightTermList = ['nuit'] + SameDayTerms = ['aujourd\'hui', 'auj'] + PlusOneDayTerms = ['demain', 'a2m1', 'lendemain', 'jour suivant'] + MinusOneDayTerms = ['hier', 'dernier'] + PlusTwoDayTerms = ['après demain', 'après-demain', 'apres-demain'] + MinusTwoDayTerms = ['avant-hier', 'avant hier'] # pylint: enable=line-too-long diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/portuguese_date_time.py b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/portuguese_date_time.py index fa3aa3d56d..36c7b69fba 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/portuguese_date_time.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/portuguese_date_time.py @@ -440,4 +440,9 @@ class PortugueseDateTime: AfternoonTermList = ['passado o meio dia', 'depois do meio dia'] EveningTermList = ['tarde'] NightTermList = ['noite'] + SameDayTerms = ['hoje', 'este dia', 'esse dia', 'o dia'] + PlusOneDayTerms = ['amanha', 'de amanha', 'dia seguinte', 'o dia de amanha', 'proximo dia'] + MinusOneDayTerms = ['ontem', 'ultimo dia'] + PlusTwoDayTerms = ['depois de amanha', 'dia depois de amanha'] + MinusTwoDayTerms = ['anteontem', 'dia antes de ontem'] # pylint: enable=line-too-long diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/spanish_date_time.py b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/spanish_date_time.py index 208f61f667..c84b78feae 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/spanish_date_time.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/spanish_date_time.py @@ -418,4 +418,9 @@ class SpanishDateTime: AfternoonTermList = ['pasado mediodia', 'pasado el mediodia'] EveningTermList = ['tarde'] NightTermList = ['noche'] + SameDayTerms = ['hoy', 'el dia'] + PlusOneDayTerms = ['mañana', 'dia siguiente', 'el dia de mañana', 'proximo dia'] + MinusOneDayTerms = ['ayer', 'ultimo dia'] + PlusTwoDayTerms = ['pasado mañana', 'dia despues de mañana'] + MinusTwoDayTerms = ['anteayer', 'dia antes de ayer'] # pylint: enable=line-too-long diff --git a/Specs/DateTime/English/DateTimeModel.json b/Specs/DateTime/English/DateTimeModel.json index bbbcc07eae..eb4f0954ba 100644 --- a/Specs/DateTime/English/DateTimeModel.json +++ b/Specs/DateTime/English/DateTimeModel.json @@ -8396,5 +8396,61 @@ } } ] + }, + { + "Input": "What happened the day before", + "Context": { + "ReferenceDateTime": "2018-11-08T12:00:00" + }, + "NotSupportedByDesign": "java", + "Results": [ + { + "Text": "the day before", + "Start": 14, + "End": 27, + "TypeName": "datetimeV2.date", + "Resolution": { + "values": [ + { + "timex": "2018-11-07", + "type": "date", + "value": "2018-11-07" + } + ] + } + } + ] + }, + { + "Input": "What's your plan for the day after?", + "Context": { + "ReferenceDateTime": "2018-11-08T12:00:00" + }, + "NotSupportedByDesign": "java", + "Results": [ + { + "Text": "the day after", + "Start": 21, + "End": 33, + "TypeName": "datetimeV2.date", + "Resolution": { + "values": [ + { + "timex": "2018-11-09", + "type": "date", + "value": "2018-11-09" + } + ] + } + } + ] + }, + { + "Input": "I waited for news, day after day, expecting to hear.", + "Context": { + "ReferenceDateTime": "2018-11-08T12:00:00" + }, + "NotSupportedByDesign": "java", + "Results": [] } ] diff --git a/Specs/DateTime/English/DateTimeModelComplexCalendar.json b/Specs/DateTime/English/DateTimeModelComplexCalendar.json index 8917df7da7..315074166d 100644 --- a/Specs/DateTime/English/DateTimeModelComplexCalendar.json +++ b/Specs/DateTime/English/DateTimeModelComplexCalendar.json @@ -7232,5 +7232,61 @@ } } ] + }, + { + "Input": "What happened the day before", + "Context": { + "ReferenceDateTime": "2018-11-08T12:00:00" + }, + "NotSupportedByDesign": "java", + "Results": [ + { + "Text": "the day before", + "Start": 14, + "End": 27, + "TypeName": "datetimeV2.date", + "Resolution": { + "values": [ + { + "timex": "2018-11-07", + "type": "date", + "value": "2018-11-07" + } + ] + } + } + ] + }, + { + "Input": "What's your plan for the day after?", + "Context": { + "ReferenceDateTime": "2018-11-08T12:00:00" + }, + "NotSupportedByDesign": "java", + "Results": [ + { + "Text": "the day after", + "Start": 21, + "End": 33, + "TypeName": "datetimeV2.date", + "Resolution": { + "values": [ + { + "timex": "2018-11-09", + "type": "date", + "value": "2018-11-09" + } + ] + } + } + ] + }, + { + "Input": "I waited for news, day after day, expecting to hear.", + "Context": { + "ReferenceDateTime": "2018-11-08T12:00:00" + }, + "NotSupportedByDesign": "java", + "Results": [] } ] diff --git a/Specs/DateTime/English/DateTimeModelExperimentalMode.json b/Specs/DateTime/English/DateTimeModelExperimentalMode.json index 2716c5c849..9befbec844 100644 --- a/Specs/DateTime/English/DateTimeModelExperimentalMode.json +++ b/Specs/DateTime/English/DateTimeModelExperimentalMode.json @@ -6297,5 +6297,61 @@ } } ] + }, + { + "Input": "What happened the day before", + "Context": { + "ReferenceDateTime": "2018-11-08T12:00:00" + }, + "NotSupportedByDesign": "java", + "Results": [ + { + "Text": "the day before", + "Start": 14, + "End": 27, + "TypeName": "datetimeV2.date", + "Resolution": { + "values": [ + { + "timex": "2018-11-07", + "type": "date", + "value": "2018-11-07" + } + ] + } + } + ] + }, + { + "Input": "What's your plan for the day after?", + "Context": { + "ReferenceDateTime": "2018-11-08T12:00:00" + }, + "NotSupportedByDesign": "java", + "Results": [ + { + "Text": "the day after", + "Start": 21, + "End": 33, + "TypeName": "datetimeV2.date", + "Resolution": { + "values": [ + { + "timex": "2018-11-09", + "type": "date", + "value": "2018-11-09" + } + ] + } + } + ] + }, + { + "Input": "I waited for news, day after day, expecting to hear.", + "Context": { + "ReferenceDateTime": "2018-11-08T12:00:00" + }, + "NotSupportedByDesign": "java", + "Results": [] } ] \ No newline at end of file diff --git a/Specs/DateTime/French/DateParser.json b/Specs/DateTime/French/DateParser.json index bb553b286c..aae1316ca9 100644 --- a/Specs/DateTime/French/DateParser.json +++ b/Specs/DateTime/French/DateParser.json @@ -676,12 +676,12 @@ "Text": "apres-demain", "Type": "date", "Value": { - "Timex": "2016-11-07", + "Timex": "2016-11-09", "FutureResolution": { - "date": "2016-11-07" + "date": "2016-11-09" }, "PastResolution": { - "date": "2016-11-07" + "date": "2016-11-09" } }, "Start": 3,