packages feed

GoogleSuggest 0.0.3 → 0.0.4

raw patch · 2 files changed

+104/−114 lines, 2 filesdep −containersPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies removed: containers

API changes (from Hackage documentation)

- Google.Suggest: languageMap :: Map Language String

Files

Google/Suggest.hs view
@@ -16,21 +16,17 @@ -- You should have received a copy of the GNU General Public License -- along with this program.  If not, see <http://www.gnu.org/licenses/>. -{-# LANGUAGE OverloadedStrings #-} module Google.Suggest (     Language (..),-    suggest,-    languageMap+    suggest ) where -import Data.Map (Map) import Data.Maybe (fromMaybe)-import Network.Curl.Download-import Text.XML.Light+import Network.Curl.Download (openAsXML)+import Text.XML.Light (Content (Elem), filterElementsName, findAttrBy, qName)  import qualified Codec.Binary.Url as Url import qualified Codec.Binary.UTF8.String as UTF8-import qualified Data.Map as M  data Language =      Afrikaans@@ -124,116 +120,15 @@   | Unknown     deriving (Show, Eq, Ord, Read) -languageMap :: Map Language String-languageMap = -    M.fromList-    [(Afrikaans,          "af")-    ,(Albanian,           "sq")-    ,(Amharic,            "am")-    ,(Arabic,             "ar")-    ,(Armenian,           "hy")-    ,(Azerbaijani,        "az")-    ,(Basque,             "eu")-    ,(Belarusian,         "be")-    ,(Bengali,            "bn")-    ,(Bihari,             "bh")-    ,(Bulgarian,          "bg")-    ,(Burmese,            "my")-    ,(Catalan,            "ca")-    ,(Cherokee,           "chr")-    ,(Chinese,            "zh")-    ,(ChineseSimplified,  "zh-CN")-    ,(ChineseTraditional, "zh-TW")-    ,(Croatian,           "hr")-    ,(Czech,              "cs")-    ,(Danish,             "da")-    ,(Dhivehi,            "dv")-    ,(Dutch,              "nl")-    ,(English,            "en")-    ,(Esperanto,          "eo")-    ,(Estonian,           "et")-    ,(Filipino,           "tl")-    ,(Finnish,            "fi")-    ,(French,             "fr")-    ,(Galician,           "gl")-    ,(Georgian,           "ka")-    ,(German,             "de")-    ,(Greek,              "el")-    ,(Guarani,            "gn")-    ,(Gujarati,           "gu")-    ,(Hebrew,             "iw")-    ,(Hindi,              "hi")-    ,(Hungarian,          "hu")-    ,(Icelandic,          "is")-    ,(Indonesian,         "id")-    ,(Inuktitut,          "iu")-    ,(Italian,            "it")-    ,(Japanese,           "ja")-    ,(Kannada,            "kn")-    ,(Kazakh,             "kk")-    ,(Khmer,              "km")-    ,(Korean,             "ko")-    ,(Kurdish,            "ku")-    ,(Kyrgyz,             "ky")-    ,(Laothian,           "lo")-    ,(Latvian,            "lv")-    ,(Lithuanian,         "lt")-    ,(Macedonian,         "mk")-    ,(Malay,              "ms")-    ,(Malayalam,          "ml")-    ,(Maltese,            "mt")-    ,(Marathi,            "mr")-    ,(Mongolian,          "mn")-    ,(Nepali,             "ne")-    ,(Norwegian,          "no")-    ,(Oriya,              "or")-    ,(Pashto,             "ps")-    ,(Persian,            "fa")-    ,(Polish,             "pl")-    ,(Portuguese,         "pt-PT")-    ,(Punjabi,            "pa")-    ,(Romanian,           "ro")-    ,(Russian,            "ru")-    ,(Sanskrit,           "sa")-    ,(Serbian,            "sr")-    ,(Sindhi,             "sd")-    ,(Sinhalese,          "si")-    ,(Slovak,             "sk")-    ,(Slovenian,          "sl")-    ,(Spanish,            "es")-    ,(Swahili,            "sw")-    ,(Swedish,            "sv")-    ,(Tajik,              "tg")-    ,(Tamil,              "ta")-    ,(Tagalog,            "tl")-    ,(Telugu,             "te")-    ,(Thai,               "th")-    ,(Tibetan,            "bo")-    ,(Turkish,            "tr")-    ,(Ukrainian,          "uk")-    ,(Urdu,               "ur")-    ,(Uzbek,              "uz")-    ,(Uighur,             "ug")-    ,(Vietnamese,         "vi")-    ,(Unknown,            "")]- -- | Get [(suggestions, queries)] from Google Suggest.-suggest :: String                -- ^ @keyword@ the keyword to search-        -> Maybe Language        -- ^ @language@ result will adjust with local language,-                                 -- or 'Nothing' use 'English' default+suggest :: String                -- ^ search term+        -> Maybe Language        -- ^ @'Just' language@, or 'Nothing' to use 'English' default         -> IO (Either String [(String, Int)]) suggest keyword language = do-  let getLangStr :: Language -> String-      getLangStr lang -          | M.null newMap-              = error $ "Miss match language : " ++ show lang-          | otherwise -              = snd $ M.findMin newMap-                where newMap = M.filterWithKey (\ l _ -> l == lang) languageMap-  -- Build url.+  -- Build URL.   let url = "http://google.com/complete/search?output=toolbar"              -- Language.-            ++ ("&hl=" ++ getLangStr (fromMaybe English language))+            ++ ("&hl=" ++ getLanguageCode (fromMaybe English language))             -- Request text.              ++ ("&q=" ++ Url.encode (UTF8.encode keyword))  @@ -256,3 +151,97 @@                Right $ zip names nums              else Left "Parse failed."         _ ->  Left "Parse failed."++-- | Get language code.+getLanguageCode :: Language -> String+getLanguageCode lang = +  case lang of+    Afrikaans          -> "af"+    Albanian           -> "sq"+    Amharic            -> "am"+    Arabic             -> "ar"+    Armenian           -> "hy"+    Azerbaijani        -> "az"+    Basque             -> "eu"+    Belarusian         -> "be"+    Bengali            -> "bn"+    Bihari             -> "bh"+    Bulgarian          -> "bg"+    Burmese            -> "my"+    Catalan            -> "ca"+    Cherokee           -> "chr"+    Chinese            -> "zh"+    ChineseSimplified  -> "zh-CN"+    ChineseTraditional -> "zh-TW"+    Croatian           -> "hr"+    Czech              -> "cs"+    Danish             -> "da"+    Dhivehi            -> "dv"+    Dutch              -> "nl"+    English            -> "en"+    Esperanto          -> "eo"+    Estonian           -> "et"+    Filipino           -> "tl"+    Finnish            -> "fi"+    French             -> "fr"+    Galician           -> "gl"+    Georgian           -> "ka"+    German             -> "de"+    Greek              -> "el"+    Guarani            -> "gn"+    Gujarati           -> "gu"+    Hebrew             -> "iw"+    Hindi              -> "hi"+    Hungarian          -> "hu"+    Icelandic          -> "is"+    Indonesian         -> "id"+    Inuktitut          -> "iu"+    Italian            -> "it"+    Japanese           -> "ja"+    Kannada            -> "kn"+    Kazakh             -> "kk"+    Khmer              -> "km"+    Korean             -> "ko"+    Kurdish            -> "ku"+    Kyrgyz             -> "ky"+    Laothian           -> "lo"+    Latvian            -> "lv"+    Lithuanian         -> "lt"+    Macedonian         -> "mk"+    Malay              -> "ms"+    Malayalam          -> "ml"+    Maltese            -> "mt"+    Marathi            -> "mr"+    Mongolian          -> "mn"+    Nepali             -> "ne"+    Norwegian          -> "no"+    Oriya              -> "or"+    Pashto             -> "ps"+    Persian            -> "fa"+    Polish             -> "pl"+    Portuguese         -> "pt-PT"+    Punjabi            -> "pa"+    Romanian           -> "ro"+    Russian            -> "ru"+    Sanskrit           -> "sa"+    Serbian            -> "sr"+    Sindhi             -> "sd"+    Sinhalese          -> "si"+    Slovak             -> "sk"+    Slovenian          -> "sl"+    Spanish            -> "es"+    Swahili            -> "sw"+    Swedish            -> "sv"+    Tajik              -> "tg"+    Tamil              -> "ta"+    Tagalog            -> "tl"+    Telugu             -> "te"+    Thai               -> "th"+    Tibetan            -> "bo"+    Turkish            -> "tr"+    Ukrainian          -> "uk"+    Urdu               -> "ur"+    Uzbek              -> "uz"+    Uighur             -> "ug"+    Vietnamese         -> "vi"+    Unknown            -> ""
GoogleSuggest.cabal view
@@ -1,5 +1,5 @@ name:			GoogleSuggest-version:		0.0.3+version:		0.0.4 Cabal-Version:	>= 1.6 license:		GPL-3 license-file:	LICENSE@@ -18,5 +18,6 @@   Exposed-Modules:      Google.Suggest   Build-depends: base >= 4 && < 5, download-curl >= 0.1.2, -                 containers >= 0.3.0.0, dataenc, utf8-string, xml+                 dataenc, utf8-string, xml+  ghc-options: -Wall