-- 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 NoRebindableSyntax #-} {-# LANGUAGE OverloadedStrings #-} module Duckling.Time.UK.Rules ( rules ) where import Prelude import Data.Text (Text) 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 [ ( "Січень" , "січ(ень|ня|ні)|січ\\.?" ) , ( "Лютий" , "лют(ий|ого|ому)|лют\\.?" ) , ( "Березень" , "берез(ень|ня|ні)|бер\\.?" ) , ( "Квітень" , "квіт(ень|ня|ні)|квi\\.?" ) , ( "Травень" , "трав(ень|ня|ні)|тра\\.?" ) , ( "Червень" , "черв(ень|ня|ні)|чер\\.?" ) , ( "Липень" , "лип(ень|ня|ні)|лип\\.?" ) , ( "Серпень" , "серп(ень|ня|ні)|сер\\.?" ) , ( "Вересень" , "верес(ень|ня|ні)|вер\\.?" ) , ( "Жовтень" , "жовт(ень|ня|ні)|жов\\.?" ) , ( "Листопад" , "листопад(а|і)?|лис\\.?" ) , ( "Грудень" , "груд(ень|ня|ні)|гру\\.?" ) ] 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 3 8 ) , ( "День праці" , "день праці" , monthDay 5 1 ) , ( "День Перемоги" , "день перемоги" , monthDay 5 9 ) , ( "День Конституції" , "день конституції" , monthDay 6 28 ) , ( "День незалежності України" , "день незалежності" , monthDay 8 24 ) , ( "День захисника України" , "день захисника" , monthDay 10 14 ) , ( "Католицьке Різдво" , "католицьк(е|ого) різдв(о|а)" , monthDay 12 25 ) ] ruleLastTime :: Rule ruleLastTime = Rule { name = "last