-- 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.Ordinal.PT.Rules ( rules ) where import qualified Data.Text as Text import Prelude import Data.String import Duckling.Dimensions.Types import Duckling.Ordinal.Helpers import Duckling.Regex.Types import Duckling.Types ruleOrdinalsPrimeiro :: Rule ruleOrdinalsPrimeiro = Rule { name = "ordinals (primeiro..10)" , pattern = [ regex "((primeir|segund|quart|quint|sext|s(e|\x00e9)tim|oitav|non|d(e|\x00e9)cim)(os?|as?))" ] , prod = \tokens -> case tokens of (Token RegexMatch (GroupMatch (match:_)):_) -> case Text.toLower match of "primeira" -> Just $ ordinal 1 "primeiros" -> Just $ ordinal 1 "primeiras" -> Just $ ordinal 1 "primeiro" -> Just $ ordinal 1 "segundo" -> Just $ ordinal 2 "segunda" -> Just $ ordinal 2 "segundas" -> Just $ ordinal 2 "segundos" -> Just $ ordinal 2 "terceiros" -> Just $ ordinal 3 "terceiro" -> Just $ ordinal 3 "terceiras" -> Just $ ordinal 3 "terceira" -> Just $ ordinal 3 "quartos" -> Just $ ordinal 4 "quarto" -> Just $ ordinal 4 "quarta" -> Just $ ordinal 4 "quartas" -> Just $ ordinal 4 "quinto" -> Just $ ordinal 5 "quinta" -> Just $ ordinal 5 "quintas" -> Just $ ordinal 5 "quintos" -> Just $ ordinal 5 "sextos" -> Just $ ordinal 6 "sexto" -> Just $ ordinal 6 "sexta" -> Just $ ordinal 6 "sextas" -> Just $ ordinal 6 "setimas" -> Just $ ordinal 7 "s\x00e9tima" -> Just $ ordinal 7 "setimo" -> Just $ ordinal 7 "setimos" -> Just $ ordinal 7 "setima" -> Just $ ordinal 7 "s\x00e9timos" -> Just $ ordinal 7 "s\x00e9timo" -> Just $ ordinal 7 "s\x00e9timas" -> Just $ ordinal 7 "oitavas" -> Just $ ordinal 8 "oitava" -> Just $ ordinal 8 "oitavo" -> Just $ ordinal 8 "oitavos" -> Just $ ordinal 8 "nonos" -> Just $ ordinal 9 "nona" -> Just $ ordinal 9 "nono" -> Just $ ordinal 9 "nonas" -> Just $ ordinal 9 "d\x00e9cimos" -> Just $ ordinal 10 "decimo" -> Just $ ordinal 10 "decimos" -> Just $ ordinal 10 "d\x00e9cimo" -> Just $ ordinal 10 "decimas" -> Just $ ordinal 10 "d\x00e9cima" -> Just $ ordinal 10 "decima" -> Just $ ordinal 10 "d\x00e9cimas" -> Just $ ordinal 10 _ -> Nothing _ -> Nothing } rules :: [Rule] rules = [ ruleOrdinalsPrimeiro ]