mirror of
https://github.com/facebook/duckling.git
synced 2024-12-01 08:19:36 +03:00
3f8e52e70a
fbshipit-source-id: 301a10f448e9623aa1c953544f42de562909e192
42 lines
1.2 KiB
Haskell
42 lines
1.2 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 #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module Duckling.Distance.Helpers
|
|
( distance
|
|
, unitDistance
|
|
, withUnit
|
|
) where
|
|
|
|
|
|
import Prelude
|
|
|
|
import Duckling.Dimensions.Types
|
|
import Duckling.Distance.Types (DistanceData(..))
|
|
import qualified Duckling.Distance.Types as TDistance
|
|
import Duckling.Types
|
|
|
|
-- -----------------------------------------------------------------
|
|
-- Patterns
|
|
|
|
unitDistance :: TDistance.Unit -> PatternItem
|
|
unitDistance value = Predicate $ \x -> case x of
|
|
(Token Distance DistanceData {TDistance.unit = Just unit}) -> value == unit
|
|
_ -> False
|
|
|
|
-- -----------------------------------------------------------------
|
|
-- Production
|
|
|
|
distance :: Double -> DistanceData
|
|
distance x = DistanceData {TDistance.value = x, TDistance.unit = Nothing}
|
|
|
|
withUnit :: TDistance.Unit -> DistanceData -> DistanceData
|
|
withUnit value dd = dd {TDistance.unit = Just value}
|