-- 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.AmountOfMoney.KO.Rules ( rules ) where import Data.Maybe import Prelude import Data.String import Duckling.Dimensions.Types import Duckling.AmountOfMoney.Helpers import Duckling.AmountOfMoney.Types (Currency(..), AmountOfMoneyData (..)) import qualified Duckling.AmountOfMoney.Types as TAmountOfMoney import Duckling.Types ruleAmountofmoneyAbout :: Rule ruleAmountofmoneyAbout = Rule { name = " about" , pattern = [ financeWith TAmountOfMoney.value isJust , regex "정도|쯤" ] , prod = \tokens -> case tokens of (token:_) -> Just token _ -> Nothing } ruleAud :: Rule ruleAud = Rule { name = "AUD" , pattern = [ regex "호주달러" ] , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly AUD } ruleKrw :: Rule ruleKrw = Rule { name = "₩" , pattern = [ regex "₩|원" ] , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly KRW } ruleAboutAmountofmoney :: Rule ruleAboutAmountofmoney = Rule { name = "about " , pattern = [ regex "약|대충|얼추" , financeWith TAmountOfMoney.value isJust ] , prod = \tokens -> case tokens of (_:token:_) -> Just token _ -> Nothing } ruleCent :: Rule ruleCent = Rule { name = "cent" , pattern = [ regex "cents?|센(트|츠)" ] , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly Cent } ruleExactlyAmountofmoney :: Rule ruleExactlyAmountofmoney = Rule { name = "exactly " , pattern = [ regex "딱|정확히" , financeWith TAmountOfMoney.value isJust ] , prod = \tokens -> case tokens of (_:token:_) -> Just token _ -> Nothing } ruleIntersectXCents :: Rule ruleIntersectXCents = Rule { name = "intersect (X cents)" , pattern = [ financeWith TAmountOfMoney.value isJust , financeWith TAmountOfMoney.currency (== Cent) ] , prod = \tokens -> case tokens of (Token AmountOfMoney fd: Token AmountOfMoney (AmountOfMoneyData {TAmountOfMoney.value = Just c}): _) -> Just . Token AmountOfMoney $ withCents c fd _ -> Nothing } ruleEuro :: Rule ruleEuro = Rule { name = "€" , pattern = [ regex "€|유로" ] , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly EUR } ruleDollar :: Rule ruleDollar = Rule { name = "$" , pattern = [ regex "달러|불" ] , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly Dollar } ruleInr :: Rule ruleInr = Rule { name = "INR" , pattern = [ regex "루피|인도루피" ] , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly INR } rulePounds :: Rule rulePounds = Rule { name = "£" , pattern = [ regex "파운드|영국파운드" ] , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly Pound } ruleDirham :: Rule ruleDirham = Rule { name = "dirham" , pattern = [ regex "dirhams?" ] , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly AED } rules :: [Rule] rules = [ ruleAboutAmountofmoney , ruleAmountofmoneyAbout , ruleAud , ruleCent , ruleDirham , ruleDollar , ruleEuro , ruleExactlyAmountofmoney , ruleInr , ruleIntersectXCents , ruleKrw , rulePounds ]