IT: Temperature

Summary: Temperature dimension for Italian.

Reviewed By: JonCoens

Differential Revision: D4970338

fbshipit-source-id: 024802e
This commit is contained in:
Julien Odent 2017-04-28 09:54:02 -07:00 committed by Facebook Github Bot
parent 74936df848
commit ab2c89df4f
7 changed files with 149 additions and 1 deletions

View File

@ -17,5 +17,6 @@ allDimensions =
[ This Duration
, This Numeral
, This Ordinal
, This Temperature
, This Time
]

View File

@ -18,6 +18,7 @@ import qualified Duckling.Duration.IT.Rules as Duration
import qualified Duckling.Email.IT.Rules as Email
import qualified Duckling.Numeral.IT.Rules as Numeral
import qualified Duckling.Ordinal.IT.Rules as Ordinal
import qualified Duckling.Temperature.IT.Rules as Temperature
import qualified Duckling.Time.IT.Rules as Time
import qualified Duckling.TimeGrain.IT.Rules as TimeGrain
import Duckling.Types
@ -32,7 +33,7 @@ rules (This Ordinal) = Ordinal.rules
rules (This PhoneNumber) = []
rules (This Quantity) = []
rules (This RegexMatch) = []
rules (This Temperature) = []
rules (This Temperature) = Temperature.rules
rules (This Time) = Time.rules
rules (This TimeGrain) = TimeGrain.rules
rules (This Url) = []

View File

@ -0,0 +1,52 @@
-- 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 OverloadedStrings #-}
module Duckling.Temperature.IT.Corpus
( corpus ) where
import Data.String
import Prelude
import Duckling.Lang
import Duckling.Resolve
import Duckling.Temperature.Types
import Duckling.Testing.Types
corpus :: Corpus
corpus = (testContext {lang = IT}, allExamples)
allExamples :: [Example]
allExamples = concat
[ examples (TemperatureValue Celsius 37)
[ "37°C"
, "37 ° celsius"
, "37 ° centigradi"
, "37 gradi Celsius"
, "37 gradi Centigradi"
, "trentasette celsius"
, "trentasette gradi centigradi"
]
, examples (TemperatureValue Celsius 1)
[ "1 grado centigrado"
]
, examples (TemperatureValue Fahrenheit 70)
[ "70°F"
, "70 ° Fahrenheit"
, "70 gradi F"
, "70 gradi Fahreneit"
, "settanta Fahrenheit"
]
, examples (TemperatureValue Degree 45)
[ "45°"
, "45 gradi"
]
, examples (TemperatureValue Degree 1)
[ "1 grado"
]
]

View File

@ -0,0 +1,67 @@
-- 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 #-}
{-# LANGUAGE OverloadedStrings #-}
module Duckling.Temperature.IT.Rules
( rules ) where
import Data.String
import Prelude
import Duckling.Dimensions.Types
import Duckling.Temperature.Helpers
import Duckling.Temperature.Types (TemperatureData (..))
import Duckling.Types
import qualified Duckling.Temperature.Types as TTemperature
ruleLatentTempDegrees :: Rule
ruleLatentTempDegrees = Rule
{ name = "<latent temp> degrees"
, pattern =
[ dimension Temperature
, regex "(grad[io]?\\.?)|\x00b0"
]
, prod = \tokens -> case tokens of
(Token Temperature td:_) -> Just . Token Temperature $
withUnit TTemperature.Degree td
_ -> Nothing
}
ruleTempCelcius :: Rule
ruleTempCelcius = Rule
{ name = "<temp> Celcius"
, pattern =
[ dimension Temperature
, regex "(c((el[cs]?(ius)?)|(entigrad[io]))?\\.?)"
]
, prod = \tokens -> case tokens of
(Token Temperature td:_) -> Just . Token Temperature $
withUnit TTemperature.Celsius td
_ -> Nothing
}
ruleTempFahrenheit :: Rule
ruleTempFahrenheit = Rule
{ name = "<temp> Fahrenheit"
, pattern =
[ dimension Temperature
, regex "f(ah?rh?eh?n(h?eit)?)?\\.?"
]
, prod = \tokens -> case tokens of
(Token Temperature td:_) -> Just . Token Temperature $
withUnit TTemperature.Fahrenheit td
_ -> Nothing
}
rules :: [Rule]
rules =
[ ruleLatentTempDegrees
, ruleTempCelcius
, ruleTempFahrenheit
]

View File

@ -367,6 +367,8 @@ library
, Duckling.Temperature.GA.Rules
, Duckling.Temperature.HR.Corpus
, Duckling.Temperature.HR.Rules
, Duckling.Temperature.IT.Corpus
, Duckling.Temperature.IT.Rules
, Duckling.Temperature.JA.Corpus
, Duckling.Temperature.JA.Rules
, Duckling.Temperature.KO.Corpus
@ -646,6 +648,7 @@ test-suite duckling-test
, Duckling.Temperature.FR.Tests
, Duckling.Temperature.GA.Tests
, Duckling.Temperature.HR.Tests
, Duckling.Temperature.IT.Tests
, Duckling.Temperature.JA.Tests
, Duckling.Temperature.KO.Tests
, Duckling.Temperature.PT.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. An additional grant
-- of patent rights can be found in the PATENTS file in the same directory.
module Duckling.Temperature.IT.Tests
( tests ) where
import Data.String
import Prelude
import Test.Tasty
import Duckling.Dimensions.Types
import Duckling.Temperature.IT.Corpus
import Duckling.Testing.Asserts
tests :: TestTree
tests = testGroup "IT Tests"
[ makeCorpusTest [This Temperature] corpus
]

View File

@ -17,6 +17,7 @@ import qualified Duckling.Temperature.ES.Tests as ES
import qualified Duckling.Temperature.FR.Tests as FR
import qualified Duckling.Temperature.GA.Tests as GA
import qualified Duckling.Temperature.HR.Tests as HR
import qualified Duckling.Temperature.IT.Tests as IT
import qualified Duckling.Temperature.JA.Tests as JA
import qualified Duckling.Temperature.KO.Tests as KO
import qualified Duckling.Temperature.PT.Tests as PT
@ -30,6 +31,7 @@ tests = testGroup "Temperature Tests"
, FR.tests
, GA.tests
, HR.tests
, IT.tests
, JA.tests
, KO.tests
, PT.tests