duckling/Duckling/Url/Helpers.hs
Ziyang Liu 5460d8df0e Support custom dimensions
Summary:
Support custom dimensions

Had to move the definition of `Dimension` from `Duckling.Dimensions.Types` to `Duckling.Types` to avoid cyclic imports between these two modules.

A sample custom dimension is in `exe/CustomDimensionExample.hs`.

Limitations of custom dimensions:

- All rules for a custom dimension must be in the same module with the definition of the custom dimension. Otherwise there will be cyclic imports, because the definition of the dimension and the rules refer to each other.
- The custom dimension must be specified when using `parse`, since there's no way to get all the existing custom dimensions.

Reviewed By: patapizza

Differential Revision: D7630360

fbshipit-source-id: 30e12dcb33611f5692c4f5949de377bf61b75e1e
2018-04-19 15:30:51 -07:00

30 lines
779 B
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.
module Duckling.Url.Helpers
( url
) where
import Data.Text (Text)
import qualified Data.Text as Text
import qualified Duckling.Url.Types as TUrl
import Duckling.Url.Types (UrlData(..))
-- -----------------------------------------------------------------
-- Patterns
-- -----------------------------------------------------------------
-- Production
url :: Text -> Text -> UrlData
url value domain = UrlData
{TUrl.value = value, TUrl.domain = Text.toLower domain}