Merge branch 'master' into lang-parser
[gargantext.git] / src / Gargantext / Text / Context.hs
index 43da376931c8f48726bd449fbac1cf0e0df2ad63..1aca8099f051dc1ecf5f0ed0997e9b73a9882d6d 100644 (file)
@@ -1,13 +1,21 @@
 {-|
 Module      : Gargantext.Text.Context
-Description : 
+Description : How to manage contexts of texts ?
 Copyright   : (c) CNRS, 2017-Present
 License     : AGPL + CECILL v3
 Maintainer  : team@gargantext.org
 Stability   : experimental
 Portability : POSIX
 
-Context of text management tool
+Context of text management tool, here are logic of main types:
+
+- Term
+- Multi-term
+- Label
+- Sentence
+- Corpus
+
+How to split contexts is describes in this module.
 
 -}
 
@@ -24,18 +32,37 @@ import Text.HTML.TagSoup (parseTags, isTagText, Tag(..))
 import Gargantext.Text
 import Gargantext.Prelude hiding (length)
 
+------------------------------------------------------------------------
+type Term = Text
+type MultiTerm = [Term]
+type Label = MultiTerm
+
+type TermList = [(Label, [MultiTerm])]
+
+type Sentence  a = [a] -- or a nominal group
+type Corpus    a = [Sentence a] -- a list of sentences
+
+-- type ConText a = [Sentence a]
+-- type Corpus a = [ConText a]
+------------------------------------------------------------------------
 
+-- | Contexts definition to build/unbuild contexts.
 data SplitContext = Chars Int | Sentences Int | Paragraphs Int
 
 tag :: Text -> [Tag Text]
 tag = parseTags
 
 -- | splitBy contexts of Chars or Sentences or Paragraphs
--- >> splitBy (Chars 0) "abcde"
+-- To see some examples at a higher level (sentences and paragraph), see
+-- 'Gargantext.Text.Examples.ex_terms'
+--
+-- >>> splitBy (Chars 0) (pack "abcde")
 -- ["a","b","c","d","e"]
--- >> splitBy (Chars 1) "abcde"
+--
+-- >>> splitBy (Chars 1) (pack "abcde")
 -- ["ab","bc","cd","de"]
--- >> splitBy (Chars 2) "abcde"
+--
+-- >>> splitBy (Chars 2) (pack "abcde")
 -- ["abc","bcd","cde"]
 splitBy :: SplitContext -> Text -> [Text]
 splitBy (Chars     n)  = map pack        . chunkAlong (n+1) 1 . unpack