Eleve...
[gargantext.git] / src / Gargantext / Text / List / CSV.hs
index 9f9b4140b463124f2eb35f9cf34db41cca3d1e24..b7ad457b0b06b20619b2fea508e9ff63f0da616d 100644 (file)
@@ -17,7 +17,6 @@ CSV parser for Gargantext corpus files.
 
 module Gargantext.Text.List.CSV where
 
-import GHC.Real (round)
 import GHC.IO (FilePath)
 
 import Control.Applicative
@@ -26,18 +25,26 @@ import Control.Monad (mzero)
 import Data.Char (ord)
 import Data.Csv
 import Data.Either (Either(Left, Right))
-import Data.Text (Text, pack, length, intercalate)
+import Data.List (null)
+import Data.Text (Text, pack)
+import qualified Data.Text as DT
 import qualified Data.ByteString.Lazy as BL
 
 import Data.Vector (Vector)
 import qualified Data.Vector as V
 
 import Gargantext.Prelude hiding (length)
-import Gargantext.Text.List.Types
+import Gargantext.Text.Context
+
 ------------------------------------------------------------------------
 
---csv2lists :: Vector CsvList -> Lists
---csv2lists v = V.foldl' (\e (CsvList listType label forms) -> insertLists lt label forms e) emptyLists v
+csvGraphTermList :: FilePath -> IO TermList
+csvGraphTermList fp = csv2list CsvMap <$> snd <$>  fromCsvListFile fp
+
+csv2list :: CsvListType -> Vector CsvList -> TermList
+csv2list lt vs = V.toList $ V.map (\(CsvList _ label forms)
+                           -> (DT.words label, [DT.words label] <> (filter (not . null) . map DT.words $ DT.splitOn csvListFormsDelimiter forms)))
+                         $ V.filter (\l -> csvList_status l == lt ) vs
 
 ------------------------------------------------------------------------
 data CsvListType = CsvMap | CsvStop | CsvCandidate