aboutsummaryrefslogtreecommitdiff
path: root/common/src/Common/Util/Text.hs
blob: 0f9c1879637bdd1862ef79b7d03170ea81099ead (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
module Common.Util.Text
  ( search
  , formatSearch
  , unaccent
  ) where

import           Data.Text (Text)
import qualified Data.Text as T

search :: Text -> Text -> Bool
search s t = (formatSearch s) `T.isInfixOf` (formatSearch t)

formatSearch :: Text -> Text
formatSearch = T.toLower . unaccent

unaccent :: Text -> Text
unaccent = T.map unaccentChar

unaccentChar :: Char -> Char
unaccentChar c = case c of
  'à' -> 'a'
  'á' -> 'a'
  'â' -> 'a'
  'ã' -> 'a'
  'ä' -> 'a'
  'ç' -> 'c'
  'è' -> 'e'
  'é' -> 'e'
  'ê' -> 'e'
  'ë' -> 'e'
  'ì' -> 'i'
  'í' -> 'i'
  'î' -> 'i'
  'ï' -> 'i'
  'ñ' -> 'n'
  'ò' -> 'o'
  'ó' -> 'o'
  'ô' -> 'o'
  'õ' -> 'o'
  'ö' -> 'o'
  'š' -> 's'
  'ù' -> 'u'
  'ú' -> 'u'
  'û' -> 'u'
  'ü' -> 'u'
  'ý' -> 'y'
  'ÿ' -> 'y'
  'ž' -> 'z'
  _   -> c