Summary: Initialise Temperature for CA (Catalan) language

Reviewed By: stroxler

Differential Revision: D28298423

Pulled By: chessai

fbshipit-source-id: 73b87d002196b6b707388e9f83f42591510f40eb
This commit is contained in:
leandro.guisandez@pgconocimiento.com 2021-05-12 14:02:13 -07:00 committed by Facebook GitHub Bot
parent ff342868d7
commit 219e5600d6
7 changed files with 168 additions and 1 deletions

View File

@ -8,6 +8,7 @@
* CA (Catalan) * CA (Catalan)
* AmountOfMoney: **new!** * AmountOfMoney: **new!**
* Distance: **new!** * Distance: **new!**
* Temperature: **new!**
* EN (English) * EN (English)
* Time: Allow latent match for \<part-of-day\> \<latent-time-of-day\> * Time: Allow latent match for \<part-of-day\> \<latent-time-of-day\>

View File

@ -17,4 +17,5 @@ allDimensions =
, Seal Distance , Seal Distance
, Seal Numeral , Seal Numeral
, Seal Ordinal , Seal Ordinal
, Seal Temperature
] ]

View File

@ -21,6 +21,7 @@ import qualified Duckling.AmountOfMoney.CA.Rules as AmountOfMoney
import qualified Duckling.Distance.CA.Rules as Distance import qualified Duckling.Distance.CA.Rules as Distance
import qualified Duckling.Numeral.CA.Rules as Numeral import qualified Duckling.Numeral.CA.Rules as Numeral
import qualified Duckling.Ordinal.CA.Rules as Ordinal import qualified Duckling.Ordinal.CA.Rules as Ordinal
import qualified Duckling.Temperature.CA.Rules as Temperature
import Duckling.Types import Duckling.Types
defaultRules :: Seal Dimension -> [Rule] defaultRules :: Seal Dimension -> [Rule]
@ -41,7 +42,7 @@ langRules (Seal Ordinal) = Ordinal.rules
langRules (Seal PhoneNumber) = [] langRules (Seal PhoneNumber) = []
langRules (Seal Quantity) = [] langRules (Seal Quantity) = []
langRules (Seal RegexMatch) = [] langRules (Seal RegexMatch) = []
langRules (Seal Temperature) = [] langRules (Seal Temperature) = Temperature.rules
langRules (Seal Time) = [] langRules (Seal Time) = []
langRules (Seal TimeGrain) = [] langRules (Seal TimeGrain) = []
langRules (Seal Url) = [] langRules (Seal Url) = []

View File

@ -0,0 +1,54 @@
-- 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.Temperature.CA.Corpus
( corpus ) where
import Prelude
import Data.String
import Duckling.Locale
import Duckling.Resolve
import Duckling.Temperature.Types
import Duckling.Testing.Types
corpus :: Corpus
corpus = (testContext {locale = makeLocale CA Nothing}, testOptions, allExamples)
allExamples :: [Example]
allExamples = concat
[ examples (simple Celsius 37)
[ "37°C"
, "37 ° celsius"
, "37 graus Celsius"
, "37 graus C"
, "37 centígrads"
, "37 graus centígrads"
, "37 Celsius"
]
, examples (simple Fahrenheit 70)
[ "70°F"
, "70 ° Fahrenheit"
, "70 graus F"
, "setanta Fahrenheit"
]
, examples (simple Degree 45)
[ "45°"
, "45 graus"
]
, examples (simple Degree 37)
[ "trenta-set graus"
, "37 grads"
]
, examples (simple Degree (-10))
[ "-10°"
, "- deu graus"
, "10 sota zero"
]
]

View File

@ -0,0 +1,85 @@
-- 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 LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
module Duckling.Temperature.CA.Rules
( rules ) where
import Prelude
import Data.String
import Duckling.Dimensions.Types
import Duckling.Temperature.Helpers
import Duckling.Temperature.Types (TemperatureData (..))
import qualified Duckling.Temperature.Types as TTemperature
import Duckling.Types
ruleLatentTempTemp :: Rule
ruleLatentTempTemp = Rule
{ name = "<latent temp> temp"
, pattern =
[ Predicate $ isValueOnly False
, regex "(gra(d|u)s?|°)"
]
, prod = \case
(Token Temperature td:_) ->
Just $ Token Temperature $ withUnit TTemperature.Degree td
_ -> Nothing
}
ruleTempCelsius :: Rule
ruleTempCelsius = Rule
{ name = "<temp> Celsius"
, pattern =
[ Predicate $ isValueOnly True
, regex "(cent(i|í)gra(d|u)s?|(C|c)(el[cs]?(ius)?)?\\.?)"
]
, prod = \case
(Token Temperature td:_) ->
Just $ Token Temperature $ withUnit TTemperature.Celsius td
_ -> Nothing
}
ruleTempFahrenheit :: Rule
ruleTempFahrenheit = Rule
{ name = "<temp> Fahrenheit"
, pattern =
[ Predicate $ isValueOnly True
, regex "f(ah?reh?n(h?eit)?)?\\.?"
]
, prod = \case
(Token Temperature td:_) -> Just $ Token Temperature $
withUnit TTemperature.Fahrenheit td
_ -> Nothing
}
ruleLatentTempTempBajoCero :: Rule
ruleLatentTempTempBajoCero = Rule
{ name = "<latent temp> temp bajo zero"
, pattern =
[ Predicate $ isValueOnly True
, regex "sota zero"
]
, prod = \case
(Token Temperature td@TemperatureData{TTemperature.value = Just v}:_) ->
case TTemperature.unit td of
Nothing -> Just $ Token Temperature $ withUnit TTemperature.Degree $
td {TTemperature.value = Just (- v)}
_ -> Just $ Token Temperature $ td {TTemperature.value = Just (- v)}
_ -> Nothing
}
rules :: [Rule]
rules =
[ ruleLatentTempTemp
, ruleLatentTempTempBajoCero
, ruleTempCelsius
, ruleTempFahrenheit
]

View File

@ -650,6 +650,8 @@ library
-- Temperature -- Temperature
, Duckling.Temperature.AR.Corpus , Duckling.Temperature.AR.Corpus
, Duckling.Temperature.AR.Rules , Duckling.Temperature.AR.Rules
, Duckling.Temperature.CA.Corpus
, Duckling.Temperature.CA.Rules
, Duckling.Temperature.EN.Corpus , Duckling.Temperature.EN.Corpus
, Duckling.Temperature.EN.Rules , Duckling.Temperature.EN.Rules
, Duckling.Temperature.ES.Corpus , Duckling.Temperature.ES.Corpus
@ -1105,6 +1107,7 @@ test-suite duckling-test
-- Temperature -- Temperature
, Duckling.Temperature.AR.Tests , Duckling.Temperature.AR.Tests
, Duckling.Temperature.CA.Tests
, Duckling.Temperature.EN.Tests , Duckling.Temperature.EN.Tests
, Duckling.Temperature.ES.Tests , Duckling.Temperature.ES.Tests
, Duckling.Temperature.FR.Tests , Duckling.Temperature.FR.Tests

View File

@ -0,0 +1,22 @@
-- 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.
module Duckling.Temperature.CA.Tests
( tests ) where
import Data.String
import Prelude
import Test.Tasty
import Duckling.Temperature.CA.Corpus
import Duckling.Dimensions.Types
import Duckling.Testing.Asserts
tests :: TestTree
tests = testGroup "CA Tests"
[ makeCorpusTest [Seal Temperature] corpus
]