-- Copyright (c) 2016-present, Facebook, Inc. -- All rights reserved. -- -- This source code is licensed under the BSD-style license found in the -- LICENSE file in the root directory of this source tree. {-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoRebindableSyntax #-} {-# LANGUAGE OverloadedStrings #-} module Duckling.Time.RU.Rules ( rules ) where import Prelude import qualified Data.Text as Text import Duckling.Dimensions.Types import Duckling.Duration.Helpers (isGrain) import Duckling.Numeral.Helpers (parseInt) import Duckling.Ordinal.Types (OrdinalData(..)) import Duckling.Regex.Types import Duckling.Time.Helpers import Duckling.Time.Types (TimeData(..)) import Duckling.Types import qualified Duckling.Ordinal.Types as TOrdinal import qualified Duckling.Time.Types as TTime import qualified Duckling.TimeGrain.Types as TG ruleInstants :: [Rule] ruleInstants = mkRuleInstants [ ( "сейчас" , TG.Second , 0, "сейчас" ) , ( "сегодня" , TG.Day , 0, "сегодня" ) , ( "завтра" , TG.Day , 1, "завтра" ) , ( "вчера" , TG.Day , -1, "вчера" ) , ( "послезавтра" , TG.Day , 2, "послезавтра" ) , ( "позавчера" , TG.Day , -2, "позавчера" ) , ( "Конец месяца" , TG.Month , 1, "(конец|конца) месяца" ) , ( "Конец года" , TG.Year , 1, "(конец|конца) года" ) ] ruleDaysOfWeek :: [Rule] ruleDaysOfWeek = mkRuleDaysOfWeek [ ( "Понедельник" , "понедельник(а)?|пн" ) , ( "Вторник" , "вторник(а)?|вт" ) , ( "Среда" , "сред(а|у)|ср" ) , ( "Четверг" , "четверг(а)?|чт" ) , ( "Пятница" , "пятниц(а|у)|пт" ) , ( "Суббота" , "суббот(а|у)|сб" ) , ( "Воскресенье" , "воскресенье|вс" ) ] ruleMonths :: [Rule] ruleMonths = mkRuleMonths [ ( "Январь" , "январ(ь|я)|янв\\.?" ) , ( "Февраль" , "феврал(ь|я)|фев\\.?" ) , ( "Март" , "март(а)?|мар\\.?" ) , ( "Апрель" , "апрел(ь|я)|апр\\.?" ) , ( "Май" , "ма(й|я)" ) , ( "Июнь" , "июн(ь|я)|июн\\.?" ) , ( "Июль" , "июл(ь|я)|июл\\.?" ) , ( "Август" , "август(а)?|авг\\.?" ) , ( "Сентябрь" , "сентябр(ь|я)|сен\\.?" ) , ( "Октябрь" , "октябр(ь|я)|окт\\.?" ) , ( "Ноябрь" , "ноябр(ь|я)?|ноя\\.?" ) , ( "Декабрь" , "декабр(ь|я)|дек\\.?" ) ] ruleSeasons :: [Rule] ruleSeasons = mkRuleSeasons [ ( "лето" , "лет(о|а)" , monthDay 6 1, monthDay 8 31 ) , ( "осень" , "осень" , monthDay 9 1, monthDay 11 30 ) , ( "зима" , "зима" , monthDay 12 1, monthDay 2 28 ) , ( "весна" , "весна" , monthDay 3 1, monthDay 5 31 ) ] ruleHolidays :: [Rule] ruleHolidays = mkRuleHolidays [ ( "Новый год" , "Новый год" , monthDay 1 1 ) , ( "Рождество Христово" , "рождество( христово)?" , monthDay 1 7 ) , ( "День защитника отечества" , "день защитника" , monthDay 2 23 ) , ( "Международный женский день" , "международный женский день" , monthDay 3 8 ) , ( "День смеха" , "день смеха" , monthDay 4 1 ) , ( "Праздник Весны и Труда" , "день труда" , monthDay 5 1 ) , ( "День Победы" , "День Победы" , monthDay 5 9 ) , ( "День России" , "день россии" , monthDay 6 12 ) , ( "День народного единства" , "день единства" , monthDay 11 4 ) ] ruleLastTime :: Rule ruleLastTime = Rule { name = "last