diff --git a/Duckling/Rules/CA.hs b/Duckling/Rules/CA.hs index efa17871..e48a25ec 100644 --- a/Duckling/Rules/CA.hs +++ b/Duckling/Rules/CA.hs @@ -22,6 +22,7 @@ import qualified Duckling.Distance.CA.Rules as Distance import qualified Duckling.Numeral.CA.Rules as Numeral import qualified Duckling.Ordinal.CA.Rules as Ordinal import qualified Duckling.Temperature.CA.Rules as Temperature +import qualified Duckling.TimeGrain.CA.Rules as TimeGrain import qualified Duckling.Volume.CA.Rules as Volume import Duckling.Types @@ -45,7 +46,7 @@ langRules (Seal Quantity) = [] langRules (Seal RegexMatch) = [] langRules (Seal Temperature) = Temperature.rules langRules (Seal Time) = [] -langRules (Seal TimeGrain) = [] +langRules (Seal TimeGrain) = TimeGrain.rules langRules (Seal Url) = [] langRules (Seal Volume) = Volume.rules langRules (Seal (CustomDimension _)) = [] diff --git a/Duckling/TimeGrain/CA/Rules.hs b/Duckling/TimeGrain/CA/Rules.hs new file mode 100644 index 00000000..79cbac89 --- /dev/null +++ b/Duckling/TimeGrain/CA/Rules.hs @@ -0,0 +1,40 @@ +-- 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 OverloadedStrings #-} + +module Duckling.TimeGrain.CA.Rules + ( rules ) where + +import Data.Text (Text) +import Prelude +import Data.String + +import Duckling.Dimensions.Types +import qualified Duckling.TimeGrain.Types as TG +import Duckling.Types + +grains :: [(Text, String, TG.Grain)] +grains = [ ("segon (grain)", "seg(on)?s?", TG.Second) + , ("minuts (grain)", "min(ut)?s?", TG.Minute) + , ("hora (grain)", "h(or(a|es))?", TG.Hour) + , ("dia (grain)", "d(í|i)(a|es)", TG.Day) + , ("setmana (grain)", "setman(a|es)", TG.Week) + , ("mes (grain)", "mes(os)?", TG.Month) + , ("trimestre (grain)", "trimestres?", TG.Quarter) + , ("any (grain)", "anys?", TG.Year) + ] + +rules :: [Rule] +rules = map go grains + where + go (name, regexPattern, grain) = Rule + { name = name + , pattern = [regex regexPattern] + , prod = \_ -> Just $ Token TimeGrain grain + } diff --git a/duckling.cabal b/duckling.cabal index 3468a0ba..dac7b3d2 100644 --- a/duckling.cabal +++ b/duckling.cabal @@ -785,6 +785,7 @@ library -- TimeGrain , Duckling.TimeGrain.AR.Rules , Duckling.TimeGrain.BG.Rules + , Duckling.TimeGrain.CA.Rules , Duckling.TimeGrain.DA.Rules , Duckling.TimeGrain.DE.Rules , Duckling.TimeGrain.EN.Rules