packages feed

cedict-0.2.1: Data/Char/CEDICT.hs

 {- | Look up Unihan characters in CEDICT.
  - 
  - A few functions on String and Char are provided for Chinese
  - lookup. 
  -
  - It is okay to feed mixed Hanzi and other input to these functions.
  - They'll return the non-Han parts untouched.
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

{-# LANGUAGE TypeSynonymInstances #-}

module Data.Char.CEDICT
  ( simplified
  , traditional
  , pinyin
  , translation
  , pindefs
  ) where

import Data.Char.CEDICT.C.Walker

class HanZiMatter a where
  {-| Obtain possible simplified characters for an a.
   -  A character that is not in the "traditional" side of the table
   -  are mapped to themselves.
   -}
  simplified                ::  a -> String
  {-| Obtain possible traditional characters for an a.
   -  A character that is not in the "simplified" side of the table
   -  are mapped to themselves.
   -}
  traditional               ::  a -> String
  {-| Obtain possible pinyins and definitions for the longest match in
   -  an a, along with longest match and everything that follows.
   -}
  pindefs                   ::  a -> Maybe ((String, String), [[String]])
  {-| Obtain possible pinyins for the longest match in an a, along with
   -  longest match and everything that follows.
   -}
  pinyin                    ::  a -> Maybe ((String, String), [String])
  {-| Obtain possible translationns for the longest match in an a, along
   -  with longest match and everything that follows.
   -}
  translation               ::  a -> Maybe ((String, String), [String])

 -- | All Strings are HanZiMatter. 
instance HanZiMatter String where
  simplified []              =  []
  simplified (h:hans)        =  (simplified h) ++ (simplified hans)
  traditional []             =  []
  traditional (h:hans)       =  (traditional h) ++ (traditional hans)
  pindefs                    =  searchPD
  translation                =  searchDefs
  pinyin                     =  searchPins

 -- | All Char are HanZiMatter.
instance HanZiMatter Char where
  simplified char            =  searchTS char
  traditional char           =  searchST char
  pindefs char               =  pindefs [char]
  translation char           =  translation [char] 
  pinyin char                =  pinyin [char]