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
154 lines
6.9 KiB
Haskell
154 lines
6.9 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.Dimensions
|
|
( allDimensions
|
|
, explicitDimensions
|
|
) where
|
|
|
|
import Data.HashSet (HashSet)
|
|
import Prelude
|
|
import qualified Data.HashSet as HashSet
|
|
|
|
import Duckling.Dimensions.Types
|
|
import Duckling.Locale
|
|
import Duckling.Types
|
|
import qualified Duckling.Dimensions.Common as CommonDimensions
|
|
import qualified Duckling.Dimensions.AF as AFDimensions
|
|
import qualified Duckling.Dimensions.AR as ARDimensions
|
|
import qualified Duckling.Dimensions.BG as BGDimensions
|
|
import qualified Duckling.Dimensions.BN as BNDimensions
|
|
import qualified Duckling.Dimensions.CA as CADimensions
|
|
import qualified Duckling.Dimensions.CS as CSDimensions
|
|
import qualified Duckling.Dimensions.DA as DADimensions
|
|
import qualified Duckling.Dimensions.DE as DEDimensions
|
|
import qualified Duckling.Dimensions.EL as ELDimensions
|
|
import qualified Duckling.Dimensions.EN as ENDimensions
|
|
import qualified Duckling.Dimensions.ES as ESDimensions
|
|
import qualified Duckling.Dimensions.ET as ETDimensions
|
|
import qualified Duckling.Dimensions.FA as FADimensions
|
|
import qualified Duckling.Dimensions.FI as FIDimensions
|
|
import qualified Duckling.Dimensions.FR as FRDimensions
|
|
import qualified Duckling.Dimensions.GA as GADimensions
|
|
import qualified Duckling.Dimensions.HE as HEDimensions
|
|
import qualified Duckling.Dimensions.HI as HIDimensions
|
|
import qualified Duckling.Dimensions.HR as HRDimensions
|
|
import qualified Duckling.Dimensions.HU as HUDimensions
|
|
import qualified Duckling.Dimensions.ID as IDDimensions
|
|
import qualified Duckling.Dimensions.IS as ISDimensions
|
|
import qualified Duckling.Dimensions.IT as ITDimensions
|
|
import qualified Duckling.Dimensions.JA as JADimensions
|
|
import qualified Duckling.Dimensions.KA as KADimensions
|
|
import qualified Duckling.Dimensions.KM as KMDimensions
|
|
import qualified Duckling.Dimensions.KN as KNDimensions
|
|
import qualified Duckling.Dimensions.KO as KODimensions
|
|
import qualified Duckling.Dimensions.LO as LODimensions
|
|
import qualified Duckling.Dimensions.ML as MLDimensions
|
|
import qualified Duckling.Dimensions.MN as MNDimensions
|
|
import qualified Duckling.Dimensions.MY as MYDimensions
|
|
import qualified Duckling.Dimensions.NB as NBDimensions
|
|
import qualified Duckling.Dimensions.NE as NEDimensions
|
|
import qualified Duckling.Dimensions.NL as NLDimensions
|
|
import qualified Duckling.Dimensions.PL as PLDimensions
|
|
import qualified Duckling.Dimensions.PT as PTDimensions
|
|
import qualified Duckling.Dimensions.RO as RODimensions
|
|
import qualified Duckling.Dimensions.RU as RUDimensions
|
|
import qualified Duckling.Dimensions.SK as SKDimensions
|
|
import qualified Duckling.Dimensions.SV as SVDimensions
|
|
import qualified Duckling.Dimensions.SW as SWDimensions
|
|
import qualified Duckling.Dimensions.TA as TADimensions
|
|
import qualified Duckling.Dimensions.TE as TEDimensions
|
|
import qualified Duckling.Dimensions.TH as THDimensions
|
|
import qualified Duckling.Dimensions.TR as TRDimensions
|
|
import qualified Duckling.Dimensions.UK as UKDimensions
|
|
import qualified Duckling.Dimensions.VI as VIDimensions
|
|
import qualified Duckling.Dimensions.ZH as ZHDimensions
|
|
|
|
|
|
allDimensions :: Lang -> [Seal Dimension]
|
|
allDimensions lang = CommonDimensions.allDimensions ++ langDimensions lang
|
|
|
|
-- | Augments `targets` with all dependent dimensions.
|
|
explicitDimensions :: HashSet (Seal Dimension) -> HashSet (Seal Dimension)
|
|
explicitDimensions targets = HashSet.union targets deps
|
|
where
|
|
deps = HashSet.unions . map dependents $ HashSet.toList targets
|
|
|
|
-- | Ordinal depends on Numeral for JA, KO, and ZH.
|
|
dependents :: Seal Dimension -> HashSet (Seal Dimension)
|
|
dependents (Seal CreditCardNumber) = HashSet.empty
|
|
dependents (Seal Distance) = HashSet.singleton (Seal Numeral)
|
|
dependents (Seal Duration) = HashSet.fromList [Seal Numeral, Seal TimeGrain]
|
|
dependents (Seal Numeral) = HashSet.empty
|
|
dependents (Seal Email) = HashSet.empty
|
|
dependents (Seal AmountOfMoney) = HashSet.singleton (Seal Numeral)
|
|
dependents (Seal Ordinal) = HashSet.singleton (Seal Numeral)
|
|
dependents (Seal PhoneNumber) = HashSet.empty
|
|
dependents (Seal Quantity) = HashSet.singleton (Seal Numeral)
|
|
dependents (Seal RegexMatch) = HashSet.empty
|
|
dependents (Seal Temperature) = HashSet.singleton (Seal Numeral)
|
|
dependents (Seal Time) =
|
|
HashSet.fromList [Seal Numeral, Seal Duration, Seal Ordinal, Seal TimeGrain]
|
|
dependents (Seal TimeGrain) = HashSet.empty
|
|
dependents (Seal Url) = HashSet.empty
|
|
dependents (Seal Volume) = HashSet.singleton (Seal Numeral)
|
|
dependents (Seal (CustomDimension dim)) = dimDependents dim
|
|
|
|
langDimensions :: Lang -> [Seal Dimension]
|
|
langDimensions AF = AFDimensions.allDimensions
|
|
langDimensions AR = ARDimensions.allDimensions
|
|
langDimensions BG = BGDimensions.allDimensions
|
|
langDimensions BN = BNDimensions.allDimensions
|
|
langDimensions CA = CADimensions.allDimensions
|
|
langDimensions CS = CSDimensions.allDimensions
|
|
langDimensions DA = DADimensions.allDimensions
|
|
langDimensions DE = DEDimensions.allDimensions
|
|
langDimensions EL = ELDimensions.allDimensions
|
|
langDimensions EN = ENDimensions.allDimensions
|
|
langDimensions ES = ESDimensions.allDimensions
|
|
langDimensions ET = ETDimensions.allDimensions
|
|
langDimensions FA = FADimensions.allDimensions
|
|
langDimensions FI = FIDimensions.allDimensions
|
|
langDimensions FR = FRDimensions.allDimensions
|
|
langDimensions GA = GADimensions.allDimensions
|
|
langDimensions HE = HEDimensions.allDimensions
|
|
langDimensions HI = HIDimensions.allDimensions
|
|
langDimensions HR = HRDimensions.allDimensions
|
|
langDimensions HU = HUDimensions.allDimensions
|
|
langDimensions ID = IDDimensions.allDimensions
|
|
langDimensions IS = ISDimensions.allDimensions
|
|
langDimensions IT = ITDimensions.allDimensions
|
|
langDimensions JA = JADimensions.allDimensions
|
|
langDimensions KA = KADimensions.allDimensions
|
|
langDimensions KM = KMDimensions.allDimensions
|
|
langDimensions KN = KNDimensions.allDimensions
|
|
langDimensions KO = KODimensions.allDimensions
|
|
langDimensions LO = LODimensions.allDimensions
|
|
langDimensions ML = MLDimensions.allDimensions
|
|
langDimensions MN = MNDimensions.allDimensions
|
|
langDimensions MY = MYDimensions.allDimensions
|
|
langDimensions NB = NBDimensions.allDimensions
|
|
langDimensions NE = NEDimensions.allDimensions
|
|
langDimensions NL = NLDimensions.allDimensions
|
|
langDimensions PL = PLDimensions.allDimensions
|
|
langDimensions PT = PTDimensions.allDimensions
|
|
langDimensions RO = RODimensions.allDimensions
|
|
langDimensions RU = RUDimensions.allDimensions
|
|
langDimensions SK = SKDimensions.allDimensions
|
|
langDimensions SV = SVDimensions.allDimensions
|
|
langDimensions SW = SWDimensions.allDimensions
|
|
langDimensions TA = TADimensions.allDimensions
|
|
langDimensions TE = TEDimensions.allDimensions
|
|
langDimensions TH = THDimensions.allDimensions
|
|
langDimensions TR = TRDimensions.allDimensions
|
|
langDimensions UK = UKDimensions.allDimensions
|
|
langDimensions VI = VIDimensions.allDimensions
|
|
langDimensions ZH = ZHDimensions.allDimensions
|