mirror of
https://github.com/facebook/duckling.git
synced 2024-12-01 08:19:36 +03:00
5460d8df0e
Summary: Support custom dimensions Had to move the definition of `Dimension` from `Duckling.Dimensions.Types` to `Duckling.Types` to avoid cyclic imports between these two modules. A sample custom dimension is in `exe/CustomDimensionExample.hs`. Limitations of custom dimensions: - All rules for a custom dimension must be in the same module with the definition of the custom dimension. Otherwise there will be cyclic imports, because the definition of the dimension and the rules refer to each other. - The custom dimension must be specified when using `parse`, since there's no way to get all the existing custom dimensions. Reviewed By: patapizza Differential Revision: D7630360 fbshipit-source-id: 30e12dcb33611f5692c4f5949de377bf61b75e1e
55 lines
1.9 KiB
Haskell
55 lines
1.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. An additional grant
|
|
-- of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
|
|
{-# LANGUAGE GADTs #-}
|
|
|
|
|
|
module Duckling.Rules.KO
|
|
( defaultRules
|
|
, langRules
|
|
, localeRules
|
|
) where
|
|
|
|
import Duckling.Dimensions.Types
|
|
import Duckling.Locale
|
|
import Duckling.Types
|
|
import qualified Duckling.AmountOfMoney.KO.Rules as AmountOfMoney
|
|
import qualified Duckling.Distance.KO.Rules as Distance
|
|
import qualified Duckling.Duration.KO.Rules as Duration
|
|
import qualified Duckling.Numeral.KO.Rules as Numeral
|
|
import qualified Duckling.Ordinal.KO.Rules as Ordinal
|
|
import qualified Duckling.Quantity.KO.Rules as Quantity
|
|
import qualified Duckling.Temperature.KO.Rules as Temperature
|
|
import qualified Duckling.Time.KO.Rules as Time
|
|
import qualified Duckling.TimeGrain.KO.Rules as TimeGrain
|
|
import qualified Duckling.Volume.KO.Rules as Volume
|
|
|
|
defaultRules :: Some Dimension -> [Rule]
|
|
defaultRules = langRules
|
|
|
|
localeRules :: Region -> Some Dimension -> [Rule]
|
|
localeRules region (This (CustomDimension dim)) = dimLocaleRules region dim
|
|
localeRules _ _ = []
|
|
|
|
langRules :: Some Dimension -> [Rule]
|
|
langRules (This AmountOfMoney) = AmountOfMoney.rules
|
|
langRules (This Distance) = Distance.rules
|
|
langRules (This Duration) = Duration.rules
|
|
langRules (This Email) = []
|
|
langRules (This Numeral) = Numeral.rules
|
|
langRules (This Ordinal) = Ordinal.rules
|
|
langRules (This PhoneNumber) = []
|
|
langRules (This Quantity) = Quantity.rules
|
|
langRules (This RegexMatch) = []
|
|
langRules (This Temperature) = Temperature.rules
|
|
langRules (This Time) = Time.rules
|
|
langRules (This TimeGrain) = TimeGrain.rules
|
|
langRules (This Url) = []
|
|
langRules (This Volume) = Volume.rules
|
|
langRules (This (CustomDimension dim)) = dimLangRules KO dim
|