-- 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 OverloadedStrings #-}

module Duckling.Time.UK.Corpus
  ( corpus
  , negativeCorpus
  ) where

import Data.String
import Prelude

import Duckling.Locale
import Duckling.Resolve
import Duckling.Testing.Types hiding (examples)
import Duckling.Time.Corpus
import Duckling.Time.Types hiding (Month)
import Duckling.TimeGrain.Types hiding (add)

context :: Context
context = testContext {locale = makeLocale UK Nothing}

corpus :: Corpus
corpus = (context, testOptions, allExamples)

negativeCorpus :: NegativeCorpus
negativeCorpus = (context, testOptions, examples)
  where
    examples =
      [ "1 готель"
      , "1 пропозиція"
      , "наступний 5"
      ]

allExamples :: [Example]
allExamples = concat
  [examples (datetime (2013, 2, 12, 0, 0, 0) Day)
             [ "сьогодні"
             ]
  , examples (datetime (2013, 2, 11, 0, 0, 0) Day)
             [ "вчора"
             ]
  , examples (datetime (2013, 2, 13, 0, 0, 0) Day)
             [ "завтра"
             ]
  , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
             [ "понеділок"
             ]
  , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
             [ "Понеділок, 18 лютого"
             , "18 лютого"
             ]
  , examples (datetime (2013, 2, 19, 0, 0, 0) Day)
             [ "вівторок"
             ]
  , examples (datetime (2013, 2, 14, 0, 0, 0) Day)
             [ "четвер"
             ]
  , examples (datetime (2013, 2, 15, 0, 0, 0) Day)
             [ "п'ятниця"
             ]
  , examples (datetime (2013, 2, 16, 0, 0, 0) Day)
             [ "субота"
             ]
  , examples (datetime (2013, 2, 17, 0, 0, 0) Day)
             [ "неділя"
             ]
  , examples (datetime (2013, 3, 1, 0, 0, 0) Day)
             [ "1 березня"
             , "перше березня"
             , "1 бер."
             ]
  , examples (datetime (2015, 3, 3, 0, 0, 0) Day)
             [ "3 березня 2015"
             , "3 бер. 2015"
             ]
  , examples (datetime (2013, 2, 15, 0, 0, 0) Day)
             [ "15 лютого"
             , "15.2"
             , "15 Лют"
             ]
  , examples (datetime (2013, 8, 8, 0, 0, 0) Day)
             [ "8 серпня"
             , "8 Сер"
             ]
  , examples (datetime (2014, 10, 0, 0, 0, 0) Month)
             [ "Жовтень 2014"
             ]
  , examples (datetime (2014, 11, 0, 0, 0, 0) Month)
             [ "Листопад 2014"
             ]
  , examples (datetime (1974, 10, 31, 0, 0, 0) Day)
             [ "31.10.1974"
             , "31.10.74"
             ]
  , examples (datetime (2015, 4, 14, 0, 0, 0) Day)
             [ "14 квітня 2015"
             ]
  , examples (datetime (2013, 2, 10, 0, 0, 0) Day)
             [ "Неділя, 10 лют."
             ]
  , examples (datetime (2013, 2, 13, 0, 0, 0) Day)
             [ "Середа, 13 лютого"
             ]
  , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
             [ "Понеділок, 18 лют"
             ]
  , examples (datetime (2013, 2, 11, 0, 0, 0) Week)
             [ "цей тиждень"
             ]
  , examples (datetime (2013, 2, 4, 0, 0, 0) Week)
             [ "минулий тиждень"
             , "минулого тижня"
             ]
  , examples (datetime (2013, 2, 18, 0, 0, 0) Week)
             [ "наступний тиждень"
             , "на наступному тижні"
             ]
  , examples (datetime (2013, 1, 0, 0, 0, 0) Month)
             [ "минулого місяця"
             ]
  , examples (datetime (2013, 3, 0, 0, 0, 0) Month)
             [ "наступного місяця"
             ]
  , examples (datetime (2013, 1, 1, 0, 0, 0) Quarter)
             [ "цей квартал"
             ]
  , examples (datetime (2013, 4, 1, 0, 0, 0) Quarter)
             [ "наступний квартал"
             ]
  , examples (datetime (2013, 7, 1, 0, 0, 0) Quarter)
             [ "третій квартал"
             ]
  , examples (datetime (2018, 10, 1, 0, 0, 0) Quarter)
             [ "четвертий квартал 2018"
             ]
  , examples (datetime (2012, 0, 0, 0, 0, 0) Year)
             [ "в минулому році"
             ]
  , examples (datetime (2013, 0, 0, 0, 0, 0) Year)
             [ "цей рік"
             ]
  , examples (datetime (2014, 0, 0, 0, 0, 0) Year)
             [ "наступний рік"
             , "в наступному році"
             ]
  , examples (datetime (2013, 2, 10, 0, 0, 0) Day)
             [ "минулої неділі"
             , "в минулу неділю"
             , "неділю на минулому тижні"
             ]
  , examples (datetime (2013, 2, 5, 0, 0, 0) Day)
             [ "в минулий вівторок"
             ]
  , examples (datetime (2013, 2, 19, 0, 0, 0) Day)
             [ "наступного вівторка"
             ]
  , examples (datetime (2013, 2, 13, 0, 0, 0) Day)
             [ "наступна середа"
             ]
  , examples (datetime (2013, 2, 20, 0, 0, 0) Day)
             [ "середа наступного тижня"
             , "середу після наступної"
             ]
  , examples (datetime (2013, 2, 22, 0, 0, 0) Day)
             [ "п'ятниця після наступного"
             ]
  , examples (datetime (2013, 2, 11, 0, 0, 0) Day)
             [ "понеділок цього тижня"
             ]
  , examples (datetime (2013, 2, 12, 0, 0, 0) Day)
             [ "вівторок цього тижня"
             ]
  , examples (datetime (2013, 2, 13, 0, 0, 0) Day)
             [ "середа цього тижня"
             ]
  , examples (datetime (2013, 2, 14, 0, 0, 0) Day)
             [ "післязавтра"
             ]
  , examples (datetime (2013, 2, 10, 0, 0, 0) Day)
             [ "позавчора"
             ]
  , examples (datetime (2013, 3, 25, 0, 0, 0) Day)
             [ "останній понеділок у березні"
             ]
  , examples (datetime (2014, 3, 30, 0, 0, 0) Day)
             [ "останній неділю в березні 2014"
             ]
  , examples (datetime (2013, 10, 3, 0, 0, 0) Day)
             [ "третій день у жовтні"
             ]
  , examples (datetime (2014, 10, 6, 0, 0, 0) Week)
             [ "перший тиждень у жовтні 2014"
             ]
  , examples (datetime (2015, 10, 31, 0, 0, 0) Day)
             [ "останній день у жовтні 2015"
             ]
  , examples (datetime (2014, 9, 22, 0, 0, 0) Week)
             [ "останній тиждень вересня 2014"
             ]
  , examples (datetime (2013, 10, 1, 0, 0, 0) Day)
             [ "перший вівторок у жовтні"
             ]
  , examples (datetime (2014, 9, 16, 0, 0, 0) Day)
             [ "третій вівторок у вересні 2014"
             ]
  , examples (datetime (2014, 10, 1, 0, 0, 0) Day)
             [ "перша середа жовтня 2014"
             ]
  , examples (datetime (2014, 10, 8, 0, 0, 0) Day)
             [ "друга середа жовтня 2014"
             ]
  , examples (datetime (2015, 1, 13, 0, 0, 0) Day)
             [ "третій вівторок після католицького різдва 2014"
             ]
  , examples (datetime (2013, 2, 12, 4, 0, 0) Hour)
             [ "о 4 ранку"
             ]
  , examples (datetime (2013, 2, 12, 15, 0, 0) Hour)
             [ "о 3"
             , "3 години"
             , "о три"
             ]
  , examples (datetime (2013, 2, 12, 3, 18, 0) Minute)
             [ "3:18 ранку"
             ]
  , examples (datetime (2013, 2, 13, 3, 18, 0) Minute)
             [ "3:18"
             ]
  , examples (datetime (2013, 2, 12, 15, 0, 0) Hour)
             [ "о 3 годині дня"
             , "о 15"
             , "о 15 годині"
             , "15 години"
             , "о 15ч"
             ]
  , examples (datetime (2013, 4, 1, 18, 0, 0) Hour)
             [ "01.04. о 18 годині"
             ]
  , examples (datetime (2013, 2, 13, 17, 0, 0) Hour)
             [ "о 17 годині завтра"
             ]
  , examples (datetime (2013, 2, 12, 15, 15, 0) Minute)
             ["15:15"
             ]
  , examples (datetime (2013, 2, 12, 20, 0, 0) Hour)
             [ "8 години вечора"
             , "сьогодні о 8 вечора"
             ]
  , examples (datetime (2013, 2, 12, 20, 0, 0) Minute)
             [ "сьогодні о 20:00"
             ]
  , examples (datetime (2013, 9, 20, 19, 30, 0) Minute)
             [ "о 19:30 20 вер."
             ]
  , examples (datetime (2013, 2, 16, 9, 0, 0) Hour)
             [ "в суботу о 9 годині"
             ]
  , examples (datetime (2014, 7, 18, 19, 0, 0) Hour)
             [ "п'ятниця, 18 липня 2014 7 година вечора"
             ]
  , examples (datetime (2014, 7, 18, 0, 0, 0) Day)
             [ "Пт, 18 липня 2014"
             , "П'ятниця, 18.07.14"
             ]
  , examples (datetime (2013, 2, 12, 4, 30, 1) Second)
             [ "через 1 секунду"
             ]
  , examples (datetime (2013, 2, 12, 4, 31, 0) Second)
             [ "через 1 хвилину"
             ]
  , examples (datetime (2013, 2, 12, 4, 32, 0) Second)
             [ "через 2 хвилини"
             ]
  , examples (datetime (2013, 2, 12, 5, 30, 0) Second)
             [ "через 60 хвилин"
             ]
  , examples (datetime (2013, 2, 12, 5, 0, 0) Second)
             [ "через 30 хвилин"
             ]
  , examples (datetime (2013, 2, 12, 5, 30, 0) Minute)
             [ "через 1 годину"
             ]
  , examples (datetime (2013, 2, 12, 6, 30, 0) Minute)
             [ "через дві години"
             ]
  , examples (datetime (2013, 2, 13, 4, 30, 0) Minute)
             [ "через 24 години"
             ]
  , examples (datetime (2013, 2, 13, 0, 0, 0) Day)
             [ "завтра"
             ]
  , examples (datetime (2016, 2, 0, 0, 0, 0) Month)
             [ "через 3 роки"
             ]
  , examples (datetime (2013, 2, 19, 4, 0, 0) Hour)
             [ "через 7 днів"
             ]
  , examples (datetime (2013, 2, 19, 0, 0, 0) Day)
             [ "через 1 тиждень"
             ]
  , examples (datetime (2013, 2, 5, 4, 0, 0) Hour)
             [ "7 днів тому"
             ]
  , examples (datetime (2013, 1, 29, 4, 0, 0) Hour)
             [ "14 днів тому"
             ]
  , examples (datetime (2013, 1, 29, 0, 0, 0) Day)
             [ "два тижні тому"
             ]
  , examples (datetime (2013, 2, 5, 0, 0, 0) Day)
             [ "1 тиждень тому"
             ]
  , examples (datetime (2013, 1, 22, 0, 0, 0) Day)
             [ "три тижні тому"
             ]
  , examples (datetime (2012, 11, 12, 0, 0, 0) Day)
             [ "три місяці тому"
             ]
  , examples (datetime (2011, 2, 0, 0, 0, 0) Month)
             [ "два роки тому"
             ]
  , examples (datetime (2014, 1, 7, 0, 0, 0) Day)
             [ "1 рік після різдва"
             ]
  , examples (datetimeInterval ((2013, 6, 1, 0, 0, 0), (2013, 9, 1, 0, 0, 0)) Day)
             [ "це літо"
             ]
  , examples (datetimeInterval ((2013, 3, 1, 0, 0, 0), (2013, 6, 1, 0, 0, 0)) Day)
             [ "ця весна"
             ]
  , examples (datetimeInterval ((2012, 12, 1, 0, 0, 0), (2013, 3, 1, 0, 0, 0)) Day)
             [ "ця зима"
             ]
  , examples (datetimeHoliday (2014, 1, 7, 0, 0, 0) Day "Різдво Христове")
             [ "різдво"
             ]
  , examples (datetimeHoliday (2014, 1, 1, 0, 0, 0) Day "Новий рік")
             [ "Новий рік"
             ]
  , examples (datetimeInterval ((2013, 2, 12, 18, 0, 0), (2013, 2, 13, 0, 0, 0)) Hour)
             [ "сьогодні ввечері"
             ]
  , examples (datetimeInterval ((2013, 2, 13, 18, 0, 0), (2013, 2, 14, 0, 0, 0)) Hour)
             [ "завтра ввечері"
             ]
  , examples (datetimeInterval ((2013, 2, 13, 12, 0, 0), (2013, 2, 13, 14, 0, 0)) Hour)
             [ "завтра в обід"
             ]
  , examples (datetimeInterval ((2013, 2, 11, 18, 0, 0), (2013, 2, 12, 0, 0, 0)) Hour)
             [ "вчора ввечері"
             ]
  , examples (datetimeInterval ((2013, 2, 15, 18, 0, 0), (2013, 2, 18, 0, 0, 0)) Hour)
             [ "в ці вихідні"
             ]
  , examples (datetimeInterval ((2013, 2, 18, 3, 0, 0), (2013, 2, 18, 12, 0, 0)) Hour)
             [ "в понеділок вранці"
             ]
  , examples (datetimeInterval ((2013, 2, 15, 3, 0, 0), (2013, 2, 15, 12, 0, 0)) Hour)
             [ "вранці 15 лютого"
             ]
  , examples (datetimeInterval ((2013, 2, 12, 4, 29, 58), (2013, 2, 12, 4, 30, 0)) Second)
             [ "останні 2 секунди"
             , "останні дві секунди"
             ]
  , examples (datetimeInterval ((2013, 2, 12, 4, 30, 1), (2013, 2, 12, 4, 30, 4)) Second)
             [ "наступні 3 секунди"
             , "наступні три секунди"
             ]
  , examples (datetimeInterval ((2013, 2, 12, 4, 28, 0), (2013, 2, 12, 4, 30, 0)) Minute)
             [ "останні 2 хвилини"
             , "останні дві хвилини"
             ]
  , examples (datetimeInterval ((2013, 2, 12, 4, 31, 0), (2013, 2, 12, 4, 34, 0)) Minute)
             [ "наступні 3 хвилини"
             , "наступні три хвилини"
             ]
  , examples (datetimeInterval ((2013, 2, 12, 5, 0, 0), (2013, 2, 12, 8, 0, 0)) Hour)
             [ "наступні 3 години"
             , "наступні три години"
             ]
  , examples (datetimeInterval ((2013, 2, 10, 0, 0, 0), (2013, 2, 12, 0, 0, 0)) Day)
             [ "останні 2 дні"
             , "останні дві дні"
             ]
  , examples (datetimeInterval ((2013, 2, 13, 0, 0, 0), (2013, 2, 16, 0, 0, 0)) Day)
             [ "наступні 3 дні"
             , "наступні три дня"
             ]
  , examples (datetimeInterval ((2013, 1, 28, 0, 0, 0), (2013, 2, 11, 0, 0, 0)) Week)
             [ "останні 2 тижні"
             , "останні два тижні"
             ]
  , examples (datetimeInterval ((2013, 2, 18, 0, 0, 0), (2013, 3, 11, 0, 0, 0)) Week)
             [ "наступні 3 тижні"
             , "наступні три тижні"
             ]
  , examples (datetimeInterval ((2012, 12, 0, 0, 0, 0), (2013, 2, 0, 0, 0, 0)) Month)
             [ "останні 2 місяці"
             , "останні два місяці"
             ]
  , examples (datetimeInterval ((2013, 3, 0, 0, 0, 0), (2013, 6, 0, 0, 0, 0)) Month)
             [ "наступні 3 місяці"
             , "наступні три місяці"
             ]
  , examples (datetimeInterval ((2011, 0, 0, 0, 0, 0), (2013, 0, 0, 0, 0, 0)) Year)
             [ "останні 2 роки"
             , "останні два роки"
             ]
  , examples (datetimeInterval ((2014, 0, 0, 0, 0, 0), (2017, 0, 0, 0, 0, 0)) Year)
             [ "наступні 3 роки"
             , "наступні три роки"
             ]
  , examples (datetimeInterval ((2013, 7, 13, 0, 0, 0), (2013, 7, 16, 0, 0, 0)) Day)
             [ "13 - 15 липня"
             , "з 13 по 15 липня"
             , "13 липня - 15 липня"
             ]
  , examples (datetimeInterval ((2013, 8, 8, 0, 0, 0), (2013, 8, 13, 0, 0, 0)) Day)
             [ "8 сер - 12 сер"
             ]
  , examples (datetimeInterval ((2013, 2, 12, 9, 30, 0), (2013, 2, 12, 11, 1, 0)) Minute)
             [ "9:30 - 11:00"
             ]
  , examples (datetimeInterval ((2013, 2, 14, 9, 30, 0), (2013, 2, 14, 11, 1, 0)) Minute)
             [ "в четвер з 9:30 до 11:00"
             , "Четвер 9:30 - 11:00"
             , "четвер з 9:30 до 11:00"
             ]
  , examples (datetimeInterval ((2013, 2, 14, 9, 0, 0), (2013, 2, 14, 12, 0, 0)) Hour)
             [ "Четвер вранці з 9 до 11"
             ]
  , examples (datetimeInterval ((2013, 2, 12, 11, 30, 0), (2013, 2, 12, 13, 31, 0)) Minute)
             [ "11:30-13:30"
             ]
  , examples (datetime (2013, 9, 21, 1, 30, 0) Minute)
             [ "1:30 ночі сб, 21 вер."
             ]
  , examples (datetimeInterval ((2013, 2, 12, 4, 30, 0), (2013, 2, 26, 0, 0, 0)) Second)
             [ "протягом 2 тижнів"
             ]
  , examples (datetimeOpenInterval Before (2013, 2, 12, 14, 0, 0) Hour)
             [ "до 2 годин дня"
             ]
  , examples (datetimeOpenInterval Before (2013, 2, 13, 0, 0, 0) Hour)
             [ "до кінця дня"
             ]
  , examples (datetimeOpenInterval Before (2013, 3, 1, 0, 0, 0) Month)
             [ "до кінця місяця"
             ]
  , examples (datetime (2013, 2, 12, 13, 0, 0) Minute)
             [ "16:00 CET"
             ]
  , examples (datetime (2013, 2, 14, 6, 0, 0) Minute)
             [ "четвер 8:00 GMT"
             , "четвер 8:00 gmt"
             ]
  , examples (datetime (2013, 2, 12, 14, 0, 0) Hour)
             [ "сьогодні о 14 годині"
             , "о 2"
             ]
  , examples (datetime (2013, 2, 13, 15, 0, 0) Hour)
             [ "завтра о 15 годині"
             ]
  , examples (datetimeOpenInterval After (2013, 2, 12, 14, 0, 0) Hour)
             [ "після 14 годин"
             , "після 14ч"
             , "після 2 годин"
             ]
  , examples (datetimeOpenInterval Before (2013, 2, 12, 11, 0, 0) Hour)
             [ "до 11 години"
             , "до 11 години ранку"
             ]
  , examples (datetimeInterval ((2013, 2, 12, 12, 0, 0), (2013, 2, 12, 19, 0, 0)) Hour)
             [ "сьогодні днем"
             ]
  , examples (datetime (2013, 2, 12, 13, 30, 0) Minute)
             [ "о 13:30 дня"
             , "13:30"
             ]
  , examples (datetime (2013, 2, 12, 4, 45, 0) Second)
             [ "через 15 хвилин"
             ]
  , examples (datetime (2013, 2, 12, 10, 30, 0) Minute)
             [ "10:30"
             ]
  , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
             [ "наступного понеділка"
             ]
  , examples (datetime (2013, 12, 10, 0, 0, 0) Day)
             [ "10.12."
             ]
  , examples (datetimeInterval ((2013, 2, 12, 18, 30, 0), (2013, 2, 12, 19, 1, 0)) Minute)
             [ "18:30ч - 19:00ч"
             , "18:30ч/19:00ч"
             ]
  , examples (datetimeInterval ((2013, 10, 14, 0, 0, 0), (2013, 10, 16, 0, 0, 0)) Day)
             [ "14. - 15.10."
             , "14 - 15.10."
             , "14. - 15.10"
             , "14.10. - 15.10."
             , "14. - 15.10.2013"
             , "14./15.10."
             ]
  , examples (datetimeInterval ((2018, 10, 14, 0, 0, 0), (2018, 10, 16, 0, 0, 0)) Day)
             [ "14. - 15.10.18"
             , "14 - 15.10.18"
             , "14./15.10.2018"
             , "з 14.10. - 15.10.2018"
             , "14.10. по 15.10.2018"
             , "з 14.10. по 15.10.2018"
             ]
  , examples (datetime (2013, 10, 10, 0, 0, 0) Day)
             ["10.10.2013"
             ]
  , examples (datetime (2013, 2, 12, 10, 10, 0) Minute)
             [ "о 10.10"
             ]
  , examples (datetime (2013, 2, 12, 17, 10, 0) Minute)
             [ "17ч10"
             ]
  ]