content: -- 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.Duration.EN.Corpus
    ( corpus
    , negativeCorpus
    ) where
  
  import Prelude
  import Data.String
  
  import Duckling.Duration.Types
  import Duckling.Testing.Types
  import Duckling.TimeGrain.Types (Grain(..))
  
  corpus :: Corpus
  corpus = (testContext, testOptions, allExamples)
  
  negativeCorpus :: NegativeCorpus
  negativeCorpus = (testContext, testOptions, examples)
    where
      examples =
        [ "for months"
        , "in days"
        , "secretary"
        , "minutes"
        , "I second that"
        ]
  
  allExamples :: [Example]
  allExamples = concat
    [ examples (DurationData 1 Second)
               [ "one sec"
               , "1 second"
               , "1\""
               ]
    , examples (DurationData 2 Minute)
               [ "2 mins"
               , "two minutes"
               , "2'"
               , "2 more minutes"
               , "two additional minutes"
               , "2 extra minutes"
               , "2 less minutes"
               , "2 fewer minutes"
               , "2m"
               , "2 m"
               ]
    , examples (DurationData 30 Day)
               [ "30 days"
               ]
    , examples (DurationData 7 Week)
               [ "seven weeks"
               ]
    , examples (DurationData 1 Month)
               [ "1 month"
               , "a month"
               ]
    , examples (DurationData 3 Quarter)
               [ "3 quarters"
               ]
    , examples (DurationData 2 Year)
               [ "2 years"
               ]
    , examples (DurationData 30 Minute)
               [ "half an hour"
               , "half hour"
               , "1/2 hour"
               , "1/2h"
               , "1/2 h"
               ]
    , examples (DurationData 12 Hour)
               [ "half a day"
               , "half day"
               , "1/2 day"
               ]
    , examples (DurationData 90 Minute)
               [ "an hour and a half"
               , "one hour and half"
               , "1 hour thirty"
               , "1 hour and thirty"
               , "1.5 hours"
               , "1.5 hrs"
               , "one and two quarter hour"
               , "one and two quarters hour"
               , "one and two quarter of hour"
               , "one and two quarters of hour"
               ]
    , examples (DurationData 75 Minute)
               [ "1 hour fifteen"
               , "1 hour and fifteen"
               , "one and quarter hour"
               , "one and a quarter hour"
               , "one and one quarter hour"
               , "one and quarter of hour"
               , "one and a quarter of hour"
               , "one and one quarter of hour"
               ]
    , examples (DurationData 130 Minute)
               [ "2 hours ten"
               , "2 hour and 10"
               ]
    , examples (DurationData 3615 Second)
               [ "1 hour fifteen seconds"
               , "1 hour and fifteen seconds"
               ]
    , examples (DurationData 45 Day)
               [ "a month and a half"
               , "one month and half"
               ]
    , examples (DurationData 27 Month)
               [ "2 years and 3 months"
               , "2 years, 3 months"
               , "2 years 3 months"
               ]
    , examples (DurationData 31719604 Second)
               [ "1 year, 2 days, 3 hours and 4 seconds"
               , "1 year 2 days 3 hours and 4 seconds"
                 -- Oxford comma not supported:
  --           , "1 year, 2 days, 3 hours, and 4 seconds"
               ]
    , examples (DurationData 330 Second)
               [ "5 and a half minutes"
               , "five and half min"
               , "5 and an half minute"
               ]
    , examples (DurationData 105 Minute)
                [ "one and three quarter hour"
                , "one and three quarters hour"
                , "one and three quarter of hour"
                , "one and three quarters of hour"
                , "one and three quarter of hours"
                , "one and three quarters of hours"
                ]
    , examples (DurationData 135 Minute)
               [ "two and quarter hour"
               , "two and a quarter of hour"
               , "two and quarter of hours"
               , "two and a quarter of hours"
               ]
    , examples (DurationData 105 Minute)
                [ "an hour and 45 minutes"
                , "one hour and 45 minutes"
                ]
    , examples (DurationData 90 Second)
                [ "a minute and 30 seconds"
                , "one minute and 30 seconds"
                ]
    , examples (DurationData 3630 Second)
                [ "an hour and 30 seconds"]
    , examples (DurationData 930 Second)
                [ "15.5 minutes"
                , "15.5 minute"
                , "15.5 mins"
                , "15.5 min"
                ]
    ]
  