Skip to content

Commit 92a3e16

Browse files
serefayarfacebook-github-bot
authored andcommitted
Temperature for TR
Summary: Closes facebook#30 Reviewed By: niteria Differential Revision: D5147114 Pulled By: patapizza fbshipit-source-id: 804f623
1 parent 001ff29 commit 92a3e16

File tree

7 files changed

+192
-2
lines changed

7 files changed

+192
-2
lines changed

Duckling/Dimensions/TR.hs

+1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ allDimensions =
1717
[ This Distance
1818
, This Numeral
1919
, This Ordinal
20+
, This Temperature
2021
]

Duckling/Rules/TR.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import Duckling.Types
1818
import qualified Duckling.Distance.TR.Rules as Distance
1919
import qualified Duckling.Numeral.TR.Rules as Numeral
2020
import qualified Duckling.Ordinal.TR.Rules as Ordinal
21+
import qualified Duckling.Temperature.TR.Rules as Temperature
2122

2223
rules :: Some Dimension -> [Rule]
2324
rules (This Distance) = Distance.rules
@@ -29,7 +30,7 @@ rules (This Ordinal) = Ordinal.rules
2930
rules (This PhoneNumber) = []
3031
rules (This Quantity) = []
3132
rules (This RegexMatch) = []
32-
rules (This Temperature) = []
33+
rules (This Temperature) = Temperature.rules
3334
rules (This Time) = []
3435
rules (This TimeGrain) = []
3536
rules (This Url) = []

Duckling/Temperature/TR/Corpus.hs

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
-- Copyright (c) 2016-present, Facebook, Inc.
2+
-- All rights reserved.
3+
--
4+
-- This source code is licensed under the BSD-style license found in the
5+
-- LICENSE file in the root directory of this source tree. An additional grant
6+
-- of patent rights can be found in the PATENTS file in the same directory.
7+
8+
9+
{-# LANGUAGE OverloadedStrings #-}
10+
11+
module Duckling.Temperature.TR.Corpus
12+
( corpus ) where
13+
14+
import Prelude
15+
import Data.String
16+
import Duckling.Lang
17+
import Duckling.Resolve
18+
import Duckling.Temperature.Types
19+
import Duckling.Testing.Types
20+
21+
corpus :: Corpus
22+
corpus = (testContext {lang = TR}, allExamples)
23+
24+
allExamples :: [Example]
25+
allExamples = concat
26+
[ examples (TemperatureValue Celsius 37)
27+
[ "37°C"
28+
, "37 ° santigrat"
29+
, "37 derece C"
30+
, "37 C"
31+
, "37 derece santigrat"
32+
, "otuz yedi santigrat"
33+
]
34+
, examples (TemperatureValue Fahrenheit 70)
35+
[ "70°F"
36+
, "70 ° Fahrenhayt"
37+
, "70 ° Fahrenayt"
38+
, "70 derece fahrenhayt"
39+
, "70 derece F"
40+
, "70 F"
41+
, "yetmiş fahrenayt"
42+
]
43+
, examples (TemperatureValue Degree 45)
44+
[ "45°"
45+
, "45 derece"
46+
, "kırk beş derece"
47+
]
48+
, examples (TemperatureValue Degree (-2))
49+
[ "-2°"
50+
, "- 2 derece"
51+
, "sıfırın altında 2°"
52+
, "sıfırın altında 2 derece"
53+
, "2° sıfırın altında"
54+
, "2 derece sıfırın altında"
55+
]
56+
]

Duckling/Temperature/TR/Rules.hs

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
-- Copyright (c) 2016-present, Facebook, Inc.
2+
-- All rights reserved.
3+
--
4+
-- This source code is licensed under the BSD-style license found in the
5+
-- LICENSE file in the root directory of this source tree. An additional grant
6+
-- of patent rights can be found in the PATENTS file in the same directory.
7+
8+
9+
{-# LANGUAGE GADTs #-}
10+
{-# LANGUAGE OverloadedStrings #-}
11+
12+
module Duckling.Temperature.TR.Rules
13+
( rules ) where
14+
15+
import Data.Maybe
16+
import Prelude
17+
import Data.String
18+
19+
import Duckling.Dimensions.Types
20+
import Duckling.Temperature.Helpers
21+
import qualified Duckling.Temperature.Types as TTemperature
22+
import Duckling.Temperature.Types (TemperatureData(..))
23+
import Duckling.Types
24+
25+
ruleTemperatureDegrees :: Rule
26+
ruleTemperatureDegrees = Rule
27+
{ name = "<latent temp> degrees"
28+
, pattern =
29+
[ dimension Temperature
30+
, regex "derece|°"
31+
]
32+
, prod = \tokens -> case tokens of
33+
(Token Temperature td:_) -> Just . Token Temperature $
34+
withUnit TTemperature.Degree td
35+
_ -> Nothing
36+
}
37+
38+
ruleTemperatureCelsius :: Rule
39+
ruleTemperatureCelsius = Rule
40+
{ name = "<temp> Celsius"
41+
, pattern =
42+
[ dimension Temperature
43+
, regex "c|santigrat"
44+
]
45+
, prod = \tokens -> case tokens of
46+
(Token Temperature td:_) -> Just . Token Temperature $
47+
withUnit TTemperature.Celsius td
48+
_ -> Nothing
49+
}
50+
51+
ruleTemperatureFahrenheit :: Rule
52+
ruleTemperatureFahrenheit = Rule
53+
{ name = "<temp> Fahrenheit"
54+
, pattern =
55+
[ dimension Temperature
56+
, regex "f(ahrenh?ayt)?"
57+
]
58+
, prod = \tokens -> case tokens of
59+
(Token Temperature td:_) -> Just . Token Temperature $
60+
withUnit TTemperature.Fahrenheit td
61+
_ -> Nothing
62+
}
63+
64+
ruleTemperatureBelowZero :: Rule
65+
ruleTemperatureBelowZero = Rule
66+
{ name = "below zero <temp>"
67+
, pattern =
68+
[ regex "s\305f\305r\305n alt\305nda"
69+
, dimension Temperature
70+
]
71+
, prod = \tokens -> case tokens of
72+
(_:Token Temperature td@(TemperatureData {TTemperature.value = v}):_) ->
73+
case TTemperature.unit td of
74+
Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
75+
td {TTemperature.value = - v}
76+
_ -> Just . Token Temperature $ td {TTemperature.value = - v}
77+
_ -> Nothing
78+
}
79+
80+
ruleTemperatureBelowZeroReverse :: Rule
81+
ruleTemperatureBelowZeroReverse = Rule
82+
{ name = "<temp> below zero"
83+
, pattern =
84+
[ dimension Temperature
85+
, regex "s\305f\305r\305n alt\305nda"
86+
]
87+
, prod = \tokens -> case tokens of
88+
(Token Temperature td@(TemperatureData {TTemperature.value = v}):_) ->
89+
case TTemperature.unit td of
90+
Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
91+
td {TTemperature.value = - v}
92+
_ -> Just . Token Temperature $ td {TTemperature.value = - v}
93+
_ -> Nothing
94+
}
95+
96+
rules :: [Rule]
97+
rules =
98+
[ ruleTemperatureDegrees
99+
, ruleTemperatureCelsius
100+
, ruleTemperatureFahrenheit
101+
, ruleTemperatureBelowZero
102+
, ruleTemperatureBelowZeroReverse
103+
]

duckling.cabal

+4-1
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,8 @@ library
388388
, Duckling.Temperature.PT.Rules
389389
, Duckling.Temperature.RO.Corpus
390390
, Duckling.Temperature.RO.Rules
391+
, Duckling.Temperature.TR.Corpus
392+
, Duckling.Temperature.TR.Rules
391393
, Duckling.Temperature.ZH.Corpus
392394
, Duckling.Temperature.ZH.Rules
393395
, Duckling.Temperature.Helpers
@@ -657,8 +659,9 @@ test-suite duckling-test
657659
, Duckling.Temperature.JA.Tests
658660
, Duckling.Temperature.KO.Tests
659661
, Duckling.Temperature.PT.Tests
660-
, Duckling.Temperature.ZH.Tests
661662
, Duckling.Temperature.RO.Tests
663+
, Duckling.Temperature.TR.Tests
664+
, Duckling.Temperature.ZH.Tests
662665
, Duckling.Temperature.Tests
663666

664667
-- Time
+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
-- Copyright (c) 2016-present, Facebook, Inc.
2+
-- All rights reserved.
3+
--
4+
-- This source code is licensed under the BSD-style license found in the
5+
-- LICENSE file in the root directory of this source tree. An additional grant
6+
-- of patent rights can be found in the PATENTS file in the same directory.
7+
8+
9+
module Duckling.Temperature.TR.Tests
10+
( tests
11+
) where
12+
13+
import Prelude
14+
import Data.String
15+
import Test.Tasty
16+
17+
import Duckling.Dimensions.Types
18+
import Duckling.Temperature.TR.Corpus
19+
import Duckling.Testing.Asserts
20+
21+
tests :: TestTree
22+
tests = testGroup "TR Tests"
23+
[ makeCorpusTest [This Temperature] corpus
24+
]

tests/Duckling/Temperature/Tests.hs

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import qualified Duckling.Temperature.JA.Tests as JA
2222
import qualified Duckling.Temperature.KO.Tests as KO
2323
import qualified Duckling.Temperature.PT.Tests as PT
2424
import qualified Duckling.Temperature.RO.Tests as RO
25+
import qualified Duckling.Temperature.TR.Tests as TR
2526
import qualified Duckling.Temperature.ZH.Tests as ZH
2627

2728
tests :: TestTree
@@ -36,5 +37,6 @@ tests = testGroup "Temperature Tests"
3637
, KO.tests
3738
, PT.tests
3839
, RO.tests
40+
, TR.tests
3941
, ZH.tests
4042
]

0 commit comments

Comments
 (0)