packages feed

scion-browser 0.2.16 → 0.2.17

raw patch · 4 files changed

+44/−38 lines, 4 filesdep +vector

Dependencies added: vector

Files

scion-browser.cabal view
@@ -1,5 +1,5 @@ name:           scion-browser
-version:        0.2.16
+version:        0.2.17 cabal-version:  >= 1.8
 build-type:     Simple
 license:        BSD3
@@ -96,33 +96,34 @@ executable scion-browser
   hs-source-dirs:  src
   main-is:         Main.hs
-  build-depends:
-    haskeline >= 0.7,
-    attoparsec >= 0.10,
-    base == 4.*,
-    mtl >= 2,
-    derive >= 2.5 && < 3,
-    text == 0.11.*,
-    parsec >= 3 && < 4,
-    Cabal >= 0.10,
-    haskell-src-exts >= 1.11 && < 2,
-    process >= 1 && < 2,
-    tar >= 0.3 && < 0.5,
-    zlib == 0.5.*,
-    HTTP >= 4000 && < 5000,
-    deepseq >= 1.1 && < 2,
-    aeson >= 0.4,
-    parallel-io >= 0.3,
-    utf8-string,
-    persistent >= 1.2,
-    persistent-sqlite >= 1.2,
-    persistent-template >= 1.2,
-    conduit>=1.0,
-    transformers,
-    unordered-containers >= 0.1.3,
-    zlib,
-    ghc-paths == 0.1.*,
-    monad-logger >= 0.3
+  build-depends:+    haskeline >= 0.7,+    attoparsec >= 0.10,+    base == 4.*,+    mtl >= 2,+    derive >= 2.5 && < 3,+    text == 0.11.*,+    parsec >= 3 && < 4,+    Cabal >= 0.10,+    haskell-src-exts >= 1.11 && < 2,+    process >= 1 && < 2,+    tar >= 0.3 && < 0.5,+    zlib == 0.5.*,+    HTTP >= 4000 && < 5000,+    deepseq >= 1.1 && < 2,+    aeson >= 0.4,+    parallel-io >= 0.3,+    utf8-string,+    persistent >= 1.2,+    persistent-sqlite >= 1.2,+    persistent-template >= 1.2,+    conduit>=1.0,+    transformers,+    unordered-containers >= 0.1.3,+    zlib,+    ghc-paths == 0.1.*,+    monad-logger >= 0.3,+    vector   
   if !os(mingw32)
     build-depends:
src/Scion/PersistentBrowser/Query.hs view
@@ -48,19 +48,19 @@ --  For getting the entire list of modules modules, use "" as initial name.
 getSubmodules :: String -> Maybe DbPackageIdentifier -> SQL [DbModule]
 getSubmodules "" Nothing =
-  do let sql = "SELECT name, doc, packageId FROM DbModule"
+  do let sql = "SELECT DISTINCT name, doc, packageId FROM DbModule"
      queryDb sql [] moduleAction
 getSubmodules "" (Just (DbPackageIdentifier pkgName pkgVersion)) =
-  do let sql = "SELECT DbModule.name, DbModule.doc, DbModule.packageId FROM DbModule, DbPackage"
+  do let sql = "SELECT DISTINCT DbModule.name, DbModule.doc, DbModule.packageId FROM DbModule, DbPackage"
                ++ " WHERE DbModule.packageId = DbPackage.id "
                ++ " AND DbPackage.name = ?"
                ++ " AND DbPackage.version = ?"
      queryDb sql [pkgName, pkgVersion] moduleAction
 getSubmodules modName Nothing =
-  do let sql = "SELECT name, doc, packageId FROM DbModule WHERE name LIKE ?"
+  do let sql = "SELECT DISTINCT name, doc, packageId FROM DbModule WHERE name LIKE ?"
      queryDb sql [modName ++ ".%"] moduleAction
 getSubmodules modName (Just (DbPackageIdentifier pkgName pkgVersion)) =
-  do let sql = "SELECT DbModule.name, DbModule.doc, DbModule.packageId FROM DbModule, DbPackage"
+  do let sql = "SELECT DISTINCT DbModule.name, DbModule.doc, DbModule.packageId FROM DbModule, DbPackage"
                ++ " WHERE name LIKE ?"
                ++ " AND DbModule.packageId = DbPackage.id "
                ++ " AND DbPackage.name = ?"
src/Scion/PersistentBrowser/ToDb.hs view
@@ -20,7 +20,7 @@      mapM_ (saveModuleToDb pkgId) (M.elems modules)    -- saveModuleToDb :: PersistBackend backend m => DbPackageId -> Documented Module -> backend m ()-saveModuleToDb pkgId (Module doc (Just (ModuleHead _ (ModuleName _ name) _ _)) _ _ decls) =+saveModuleToDb pkgId (Module doc (Just (ModuleHead _ (ModuleName _ name)_ _)) _ _ decls) =   do moduleId <- insert $ DbModule name (docToString doc) pkgId      mapM_ (saveDeclToDb moduleId) decls saveModuleToDb _ _ = error "This should never happen"
src/Server/PersistentCommands.hs view
@@ -20,6 +20,9 @@ import System.Directory
 import Data.Conduit (runResourceT)
 import Control.Monad.Logger (runNoLoggingT) --runStderrLoggingT, 
+import Data.List (nub)+import Data.Vector (fromList)+ 
 data Command = LoadLocalDatabase FilePath Bool
              | LoadHackageDatabase FilePath Bool
@@ -115,20 +118,20 @@         else modify (\s -> s { hackageDb = Nothing })
      return (String "ok", True)   
 executeCommand (GetPackages cdb)         = do pkgs <- runDb cdb allPackages
-                                              return (toJSON pkgs, True)
+                                              return (nubJSON pkgs, True)
 executeCommand (GetModules cdb mname)  = 
                                            do smods <- runDb cdb (getSubmodules mname)
-                                              return (toJSON smods, True)
+                                              return (nubJSON smods, True)
 executeCommand (GetDeclarations cdb mname) = 
                                            do decls <- runDb cdb (getDeclsInModule mname)
-                                              return (toJSON decls, True)
+                                              return (nubJSON decls, True)
 executeCommand (GetDeclarationsFromPrefix cdb prefix) = 
                                            do decls <- runDb cdb (getDeclsFromPrefix prefix)
-                                              return (toJSON decls, True)
+                                              return (nubJSON decls, True)
 executeCommand (HoogleQuery cdb query)       = 
                                            do extraH <- fmap extraHooglePath get
                                               results <- runDb cdb (\_ -> H.query extraH query)
-                                              return (toJSON results, True)
+                                              return (nubJSON results, True)
 executeCommand HoogleDownloadData        = do extraH <- fmap extraHooglePath get
                                               ret <- lift $ H.downloadData extraH
                                               return (String $ T.pack $ show ret, True)
@@ -142,6 +145,8 @@                                               return (toJSON mods, True)
 executeCommand Quit                      = return (String "ok", False)
 
+nubJSON :: (ToJSON a)=> [a] -> Value
+nubJSON = Array . fromList . nub . map toJSON 
 
 instance FromJSON Command where
   parseJSON (Object v) = case M.lookup (T.pack "command") v of