mirror of
https://github.com/facebook/duckling.git
synced 2024-08-17 17:20:55 +03:00
Summary: Adds Catalan language and Numeral rules for it Reviewed By: haoxuany Differential Revision: D26518604 Pulled By: chessai fbshipit-source-id: e6b4b0ceb9b7931d086c732dd03fb5cbbe062d5b
247 lines
9.1 KiB
Haskell
247 lines
9.1 KiB
Haskell
-- 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 #-}
|
|
|
|
module Duckling.Rules
|
|
( allRules
|
|
, rulesFor
|
|
) where
|
|
|
|
import Data.HashSet (HashSet)
|
|
import Prelude
|
|
import qualified Data.HashSet as HashSet
|
|
|
|
import Duckling.Dimensions
|
|
import Duckling.Dimensions.Types
|
|
import Duckling.Locale
|
|
import Duckling.Types
|
|
import qualified Duckling.Rules.AF as AFRules
|
|
import qualified Duckling.Rules.AR as ARRules
|
|
import qualified Duckling.Rules.Common as CommonRules
|
|
import qualified Duckling.Rules.BG as BGRules
|
|
import qualified Duckling.Rules.BN as BNRules
|
|
import qualified Duckling.Rules.CA as CARules
|
|
import qualified Duckling.Rules.CS as CSRules
|
|
import qualified Duckling.Rules.DA as DARules
|
|
import qualified Duckling.Rules.DE as DERules
|
|
import qualified Duckling.Rules.EL as ELRules
|
|
import qualified Duckling.Rules.EN as ENRules
|
|
import qualified Duckling.Rules.ES as ESRules
|
|
import qualified Duckling.Rules.ET as ETRules
|
|
import qualified Duckling.Rules.FI as FIRules
|
|
import qualified Duckling.Rules.FA as FARules
|
|
import qualified Duckling.Rules.FR as FRRules
|
|
import qualified Duckling.Rules.GA as GARules
|
|
import qualified Duckling.Rules.HE as HERules
|
|
import qualified Duckling.Rules.HI as HIRules
|
|
import qualified Duckling.Rules.HR as HRRules
|
|
import qualified Duckling.Rules.HU as HURules
|
|
import qualified Duckling.Rules.ID as IDRules
|
|
import qualified Duckling.Rules.IS as ISRules
|
|
import qualified Duckling.Rules.IT as ITRules
|
|
import qualified Duckling.Rules.JA as JARules
|
|
import qualified Duckling.Rules.KA as KARules
|
|
import qualified Duckling.Rules.KM as KMRules
|
|
import qualified Duckling.Rules.KN as KNRules
|
|
import qualified Duckling.Rules.KO as KORules
|
|
import qualified Duckling.Rules.LO as LORules
|
|
import qualified Duckling.Rules.ML as MLRules
|
|
import qualified Duckling.Rules.MN as MNRules
|
|
import qualified Duckling.Rules.MY as MYRules
|
|
import qualified Duckling.Rules.NB as NBRules
|
|
import qualified Duckling.Rules.NE as NERules
|
|
import qualified Duckling.Rules.NL as NLRules
|
|
import qualified Duckling.Rules.PL as PLRules
|
|
import qualified Duckling.Rules.PT as PTRules
|
|
import qualified Duckling.Rules.RO as RORules
|
|
import qualified Duckling.Rules.RU as RURules
|
|
import qualified Duckling.Rules.SK as SKRules
|
|
import qualified Duckling.Rules.SV as SVRules
|
|
import qualified Duckling.Rules.SW as SWRules
|
|
import qualified Duckling.Rules.TA as TARules
|
|
import qualified Duckling.Rules.TE as TERules
|
|
import qualified Duckling.Rules.TH as THRules
|
|
import qualified Duckling.Rules.TR as TRRules
|
|
import qualified Duckling.Rules.UK as UKRules
|
|
import qualified Duckling.Rules.VI as VIRules
|
|
import qualified Duckling.Rules.ZH as ZHRules
|
|
|
|
-- | Returns the minimal set of rules required for `targets`.
|
|
rulesFor :: Locale -> HashSet (Seal Dimension) -> [Rule]
|
|
rulesFor locale targets
|
|
| HashSet.null targets = allRules locale
|
|
| otherwise = [ rules | dims <- HashSet.toList $ explicitDimensions targets
|
|
, rules <- rulesFor' locale dims ]
|
|
|
|
-- | Returns all the rules for the provided locale.
|
|
-- We can't really use `allDimensions` as-is, since `TimeGrain` is not present.
|
|
allRules :: Locale -> [Rule]
|
|
allRules locale@(Locale lang _) = concatMap (rulesFor' locale) . HashSet.toList
|
|
. explicitDimensions . HashSet.fromList $ allDimensions lang
|
|
|
|
rulesFor' :: Locale -> Seal Dimension -> [Rule]
|
|
rulesFor' (Locale lang (Just region)) dim =
|
|
CommonRules.rules dim ++ langRules lang dim ++ localeRules lang region dim
|
|
rulesFor' (Locale lang Nothing) dim =
|
|
CommonRules.rules dim ++ defaultRules lang dim
|
|
|
|
-- | Default rules when no locale, for backward compatibility.
|
|
defaultRules :: Lang -> Seal Dimension -> [Rule]
|
|
defaultRules AF = AFRules.defaultRules
|
|
defaultRules AR = ARRules.defaultRules
|
|
defaultRules BG = BGRules.defaultRules
|
|
defaultRules BN = BNRules.defaultRules
|
|
defaultRules CA = CARules.defaultRules
|
|
defaultRules CS = CSRules.defaultRules
|
|
defaultRules DA = DARules.defaultRules
|
|
defaultRules DE = DERules.defaultRules
|
|
defaultRules EL = ELRules.defaultRules
|
|
defaultRules EN = ENRules.defaultRules
|
|
defaultRules ES = ESRules.defaultRules
|
|
defaultRules ET = ETRules.defaultRules
|
|
defaultRules FI = FIRules.defaultRules
|
|
defaultRules FA = FARules.defaultRules
|
|
defaultRules FR = FRRules.defaultRules
|
|
defaultRules GA = GARules.defaultRules
|
|
defaultRules HE = HERules.defaultRules
|
|
defaultRules HI = HIRules.defaultRules
|
|
defaultRules HR = HRRules.defaultRules
|
|
defaultRules HU = HURules.defaultRules
|
|
defaultRules ID = IDRules.defaultRules
|
|
defaultRules IS = ISRules.defaultRules
|
|
defaultRules IT = ITRules.defaultRules
|
|
defaultRules JA = JARules.defaultRules
|
|
defaultRules KA = KARules.defaultRules
|
|
defaultRules KM = KMRules.defaultRules
|
|
defaultRules KN = KNRules.defaultRules
|
|
defaultRules KO = KORules.defaultRules
|
|
defaultRules LO = LORules.defaultRules
|
|
defaultRules ML = MLRules.defaultRules
|
|
defaultRules MN = MNRules.defaultRules
|
|
defaultRules MY = MYRules.defaultRules
|
|
defaultRules NB = NBRules.defaultRules
|
|
defaultRules NE = NERules.defaultRules
|
|
defaultRules NL = NLRules.defaultRules
|
|
defaultRules PL = PLRules.defaultRules
|
|
defaultRules PT = PTRules.defaultRules
|
|
defaultRules RO = RORules.defaultRules
|
|
defaultRules RU = RURules.defaultRules
|
|
defaultRules SK = SKRules.defaultRules
|
|
defaultRules SV = SVRules.defaultRules
|
|
defaultRules SW = SWRules.defaultRules
|
|
defaultRules TA = TARules.defaultRules
|
|
defaultRules TE = TERules.defaultRules
|
|
defaultRules TH = THRules.defaultRules
|
|
defaultRules TR = TRRules.defaultRules
|
|
defaultRules UK = UKRules.defaultRules
|
|
defaultRules VI = VIRules.defaultRules
|
|
defaultRules ZH = ZHRules.defaultRules
|
|
|
|
localeRules :: Lang -> Region -> Seal Dimension -> [Rule]
|
|
localeRules AF = AFRules.localeRules
|
|
localeRules AR = ARRules.localeRules
|
|
localeRules BG = BGRules.localeRules
|
|
localeRules BN = BNRules.localeRules
|
|
localeRules CA = CARules.localeRules
|
|
localeRules CS = CSRules.localeRules
|
|
localeRules DA = DARules.localeRules
|
|
localeRules DE = DERules.localeRules
|
|
localeRules EL = ELRules.localeRules
|
|
localeRules EN = ENRules.localeRules
|
|
localeRules ES = ESRules.localeRules
|
|
localeRules ET = ETRules.localeRules
|
|
localeRules FI = FIRules.localeRules
|
|
localeRules FA = FARules.localeRules
|
|
localeRules FR = FRRules.localeRules
|
|
localeRules GA = GARules.localeRules
|
|
localeRules HE = HERules.localeRules
|
|
localeRules HI = HIRules.localeRules
|
|
localeRules HR = HRRules.localeRules
|
|
localeRules HU = HURules.localeRules
|
|
localeRules ID = IDRules.localeRules
|
|
localeRules IS = ISRules.localeRules
|
|
localeRules IT = ITRules.localeRules
|
|
localeRules JA = JARules.localeRules
|
|
localeRules KA = KARules.localeRules
|
|
localeRules KM = KMRules.localeRules
|
|
localeRules KN = KNRules.localeRules
|
|
localeRules KO = KORules.localeRules
|
|
localeRules LO = LORules.localeRules
|
|
localeRules ML = MLRules.localeRules
|
|
localeRules MN = MNRules.localeRules
|
|
localeRules MY = MYRules.localeRules
|
|
localeRules NB = NBRules.localeRules
|
|
localeRules NE = NERules.localeRules
|
|
localeRules NL = NLRules.localeRules
|
|
localeRules PL = PLRules.localeRules
|
|
localeRules PT = PTRules.localeRules
|
|
localeRules RO = RORules.localeRules
|
|
localeRules RU = RURules.localeRules
|
|
localeRules SK = SKRules.localeRules
|
|
localeRules SV = SVRules.localeRules
|
|
localeRules SW = SWRules.localeRules
|
|
localeRules TA = TARules.localeRules
|
|
localeRules TE = TERules.localeRules
|
|
localeRules TH = THRules.localeRules
|
|
localeRules TR = TRRules.localeRules
|
|
localeRules UK = UKRules.localeRules
|
|
localeRules VI = VIRules.localeRules
|
|
localeRules ZH = ZHRules.localeRules
|
|
|
|
langRules :: Lang -> Seal Dimension -> [Rule]
|
|
langRules AF = AFRules.langRules
|
|
langRules AR = ARRules.langRules
|
|
langRules BG = BGRules.langRules
|
|
langRules BN = BNRules.langRules
|
|
langRules CA = CARules.langRules
|
|
langRules CS = CSRules.langRules
|
|
langRules DA = DARules.langRules
|
|
langRules DE = DERules.langRules
|
|
langRules EL = ELRules.langRules
|
|
langRules EN = ENRules.langRules
|
|
langRules ES = ESRules.langRules
|
|
langRules ET = ETRules.langRules
|
|
langRules FI = FIRules.langRules
|
|
langRules FA = FARules.langRules
|
|
langRules FR = FRRules.langRules
|
|
langRules GA = GARules.langRules
|
|
langRules HE = HERules.langRules
|
|
langRules HI = HIRules.langRules
|
|
langRules KN = KNRules.langRules
|
|
langRules HR = HRRules.langRules
|
|
langRules HU = HURules.langRules
|
|
langRules ID = IDRules.langRules
|
|
langRules IS = ISRules.langRules
|
|
langRules IT = ITRules.langRules
|
|
langRules JA = JARules.langRules
|
|
langRules KA = KARules.langRules
|
|
langRules KM = KMRules.langRules
|
|
langRules KO = KORules.langRules
|
|
langRules LO = LORules.langRules
|
|
langRules ML = MLRules.langRules
|
|
langRules MN = MNRules.langRules
|
|
langRules MY = MYRules.langRules
|
|
langRules NB = NBRules.langRules
|
|
langRules NE = NERules.langRules
|
|
langRules NL = NLRules.langRules
|
|
langRules PL = PLRules.langRules
|
|
langRules PT = PTRules.langRules
|
|
langRules RO = RORules.langRules
|
|
langRules RU = RURules.langRules
|
|
langRules SK = SKRules.langRules
|
|
langRules SV = SVRules.langRules
|
|
langRules SW = SWRules.langRules
|
|
langRules TA = TARules.langRules
|
|
langRules TE = TERules.langRules
|
|
langRules TH = THRules.langRules
|
|
langRules TR = TRRules.langRules
|
|
langRules UK = UKRules.langRules
|
|
langRules VI = VIRules.langRules
|
|
langRules ZH = ZHRules.langRules
|