Distance for Croatian

Summary: Distance dimension for Croatian.

Reviewed By: niteria

Differential Revision: D4957067

fbshipit-source-id: 232ce30
This commit is contained in:
Julien Odent 2017-04-28 07:47:40 -07:00 committed by Facebook Github Bot
parent 35b9101c48
commit 0aa4aa56bb
7 changed files with 168 additions and 2 deletions

View File

@ -14,7 +14,8 @@ import Duckling.Dimensions.Types
allDimensions :: [Some Dimension]
allDimensions =
[ This Duration
[ This Distance
, This Duration
, This Numeral
, This Ordinal
, This Time

View File

@ -0,0 +1,45 @@
-- 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.Distance.HR.Corpus
( corpus ) where
import Prelude
import Data.String
import Duckling.Distance.Types
import Duckling.Lang
import Duckling.Resolve
import Duckling.Testing.Types
corpus :: Corpus
corpus = (testContext {lang = HR}, allExamples)
allExamples :: [Example]
allExamples = concat
[ examples (DistanceValue Kilometre 3)
[ "3 kilometra"
, "3 km"
, "3km"
, "3k"
]
, examples (DistanceValue Kilometre 3.0)
[ "3,0 km"
]
, examples (DistanceValue Mile 8)
[ "8 milja"
]
, examples (DistanceValue M 9)
[ "9m"
]
, examples (DistanceValue Centimetre 2)
[ "2cm"
, "2 centimetra"
]
]

View File

@ -0,0 +1,92 @@
-- 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.Distance.HR.Rules
( rules ) where
import Data.String
import Prelude
import Duckling.Dimensions.Types
import Duckling.Distance.Helpers
import Duckling.Types
import qualified Duckling.Distance.Types as TDistance
ruleLatentDistKm :: Rule
ruleLatentDistKm = Rule
{ name = "<latent dist> km"
, pattern =
[ dimension Distance
, regex "k(ilo)?m?(eta?r)?a?"
]
, prod = \tokens -> case tokens of
(Token Distance dd:_) ->
Just . Token Distance $ withUnit TDistance.Kilometre dd
_ -> Nothing
}
ruleDistMetar :: Rule
ruleDistMetar = Rule
{ name = "<dist> metar"
, pattern =
[ dimension Distance
, regex "metara?"
]
, prod = \tokens -> case tokens of
(Token Distance dd:_) ->
Just . Token Distance $ withUnit TDistance.Metre dd
_ -> Nothing
}
ruleDistCentimetar :: Rule
ruleDistCentimetar = Rule
{ name = "<dist> centimetar"
, pattern =
[ dimension Distance
, regex "cm|centimeta?ra?"
]
, prod = \tokens -> case tokens of
(Token Distance dd:_) ->
Just . Token Distance $ withUnit TDistance.Centimetre dd
_ -> Nothing
}
ruleDistMilja :: Rule
ruleDistMilja = Rule
{ name = "<dist> milja"
, pattern =
[ dimension Distance
, regex "milja"
]
, prod = \tokens -> case tokens of
(Token Distance dd:_) -> Just . Token Distance $ withUnit TDistance.Mile dd
_ -> Nothing
}
ruleDistMAmbiguousMilesOrMeters :: Rule
ruleDistMAmbiguousMilesOrMeters = Rule
{ name = "<dist> m (ambiguous miles or meters)"
, pattern =
[ dimension Distance
, regex "m"
]
, prod = \tokens -> case tokens of
(Token Distance dd:_) -> Just . Token Distance $ withUnit TDistance.M dd
_ -> Nothing
}
rules :: [Rule]
rules =
[ ruleDistCentimetar
, ruleDistMAmbiguousMilesOrMeters
, ruleDistMetar
, ruleDistMilja
, ruleLatentDistKm
]

View File

@ -16,6 +16,7 @@ module Duckling.Rules.HR
import Duckling.Dimensions.Types
import Duckling.Types
import qualified Duckling.AmountOfMoney.HR.Rules as AmountOfMoney
import qualified Duckling.Distance.HR.Rules as Distance
import qualified Duckling.Duration.HR.Rules as Duration
import qualified Duckling.Numeral.HR.Rules as Numeral
import qualified Duckling.Ordinal.HR.Rules as Ordinal
@ -23,7 +24,7 @@ import qualified Duckling.Time.HR.Rules as Time
import qualified Duckling.TimeGrain.HR.Rules as TimeGrain
rules :: Some Dimension -> [Rule]
rules (This Distance) = []
rules (This Distance) = Distance.rules
rules (This Duration) = Duration.rules
rules (This Numeral) = Numeral.rules
rules (This Email) = []

View File

@ -167,6 +167,8 @@ library
, Duckling.Distance.FR.Rules
, Duckling.Distance.GA.Corpus
, Duckling.Distance.GA.Rules
, Duckling.Distance.HR.Corpus
, Duckling.Distance.HR.Rules
, Duckling.Distance.KO.Corpus
, Duckling.Distance.KO.Rules
, Duckling.Distance.PT.Corpus
@ -534,6 +536,7 @@ test-suite duckling-test
, Duckling.Distance.ES.Tests
, Duckling.Distance.FR.Tests
, Duckling.Distance.GA.Tests
, Duckling.Distance.HR.Tests
, Duckling.Distance.KO.Tests
, Duckling.Distance.NL.Tests
, Duckling.Distance.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.Distance.HR.Tests
( tests ) where
import Data.String
import Prelude
import Test.Tasty
import Duckling.Dimensions.Types
import Duckling.Distance.HR.Corpus
import Duckling.Testing.Asserts
tests :: TestTree
tests = testGroup "HR Tests"
[ makeCorpusTest [This Distance] corpus
]

View File

@ -16,6 +16,7 @@ import qualified Duckling.Distance.EN.Tests as EN
import qualified Duckling.Distance.ES.Tests as ES
import qualified Duckling.Distance.FR.Tests as FR
import qualified Duckling.Distance.GA.Tests as GA
import qualified Duckling.Distance.HR.Tests as HR
import qualified Duckling.Distance.KO.Tests as KO
import qualified Duckling.Distance.NL.Tests as NL
import qualified Duckling.Distance.PT.Tests as PT
@ -27,6 +28,7 @@ tests = testGroup "Distance Tests"
, ES.tests
, FR.tests
, GA.tests
, HR.tests
, KO.tests
, NL.tests
, PT.tests