Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
153
Issues
153
List
Board
Labels
Milestones
Merge Requests
10
Merge Requests
10
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
haskell-gargantext
Commits
37a36aba
Commit
37a36aba
authored
Sep 13, 2021
by
Przemyslaw Kaminski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[refactoring] rewrite for better record syntax
parent
bfc3b776
Pipeline
#1801
passed with stage
in 33 minutes and 6 seconds
Changes
10
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
176 additions
and
111 deletions
+176
-111
package.yaml
package.yaml
+2
-0
API.hs
src/Gargantext/API.hs
+1
-1
Searx.hs
src/Gargantext/API/Node/Corpus/Searx.hs
+0
-1
Search.hs
src/Gargantext/API/Search.hs
+0
-1
IMT.hs
src/Gargantext/Core/Ext/IMT.hs
+50
-49
IMTUser.hs
src/Gargantext/Core/Ext/IMTUser.hs
+84
-43
Distances.hs
src/Gargantext/Core/Methods/Distances.hs
+3
-0
NodeStory.hs
src/Gargantext/Core/NodeStory.hs
+21
-6
Patch.hs
src/Gargantext/Core/Text/List/Social/Patch.hs
+15
-8
Search.hs
src/Gargantext/Core/Text/Search.hs
+0
-2
No files found.
package.yaml
View file @
37a36aba
...
...
@@ -22,9 +22,11 @@ default-extensions:
-
FlexibleInstances
-
GeneralizedNewtypeDeriving
-
MultiParamTypeClasses
-
NamedFieldPuns
-
NoImplicitPrelude
-
OverloadedStrings
-
RankNTypes
-
RecordWildCards
library
:
source-dirs
:
src
ghc-options
:
...
...
src/Gargantext/API.hs
View file @
37a36aba
...
...
@@ -59,7 +59,7 @@ import System.IO (FilePath)
data
Mode
=
Dev
|
Mock
|
Prod
deriving
(
Show
,
Read
,
Generic
)
deriving
(
Show
,
Read
,
Generic
)
-- | startGargantext takes as parameters port number and Ini file.
startGargantext
::
Mode
->
PortNumber
->
FilePath
->
IO
()
...
...
src/Gargantext/API/Node/Corpus/Searx.hs
View file @
37a36aba
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.API.Node.Corpus.Searx
where
...
...
src/Gargantext/API/Search.hs
View file @
37a36aba
...
...
@@ -10,7 +10,6 @@ Portability : POSIX
Count API part of Gargantext.
-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DeriveAnyClass #-}
...
...
src/Gargantext/Core/Ext/IMT.hs
View file @
37a36aba
...
...
@@ -33,73 +33,74 @@ data School = School { school_shortName :: Text
schools
::
[
School
]
schools
=
[
School
(
"Mines Albi-Carmaux"
)
(
"Mines Albi-Carmaux - École nationale supérieure des Mines d'Albi‐Carmaux"
)
(
"469216"
)
{
school_shortName
=
"Mines Albi-Carmaux"
,
school_longName
=
"Mines Albi-Carmaux - École nationale supérieure des Mines d'Albi‐Carmaux"
,
school_id
=
"469216"
}
,
School
(
"Mines Alès"
)
(
"EMA - École des Mines d'Alès"
)
(
"6279"
)
{
school_shortName
=
"Mines Alès"
,
school_longName
=
"EMA - École des Mines d'Alès"
,
school_id
=
"6279"
}
,
School
(
"Mines Douai"
)
(
"Mines Douai EMD - École des Mines de Douai"
)
(
"224096"
)
{
school_shortName
=
"Mines Douai"
,
school_longName
=
"Mines Douai EMD - École des Mines de Douai"
,
school_id
=
"224096"
}
,
School
(
"Mines Lille"
)
(
"Mines Lille - École des Mines de Lille"
)
(
"144103"
)
{
school_shortName
=
"Mines Lille"
,
school_longName
=
"Mines Lille - École des Mines de Lille"
,
school_id
=
"144103"
}
,
School
(
"IMT Lille Douai"
)
(
"IMT Lille Douai"
)
(
"497330"
)
{
school_shortName
=
"IMT Lille Douai"
,
school_longName
=
"IMT Lille Douai"
,
school_id
=
"497330"
}
,
School
(
"Mines Nantes"
)
(
"Mines Nantes - Mines Nantes"
)
(
"84538"
)
{
school_shortName
=
"Mines Nantes"
,
school_longName
=
"Mines Nantes - Mines Nantes"
,
school_id
=
"84538"
}
,
School
(
"Télécom Bretagne"
)
(
"Télécom Bretagne"
)
(
"301262"
)
{
school_shortName
=
"Télécom Bretagne"
,
school_longName
=
"Télécom Bretagne"
,
school_id
=
"301262"
}
,
School
(
"IMT Atlantique"
)
(
"IMT Atlantique - IMT Atlantique Bretagne-Pays de la Loire"
)
(
"481355"
)
{
school_shortName
=
"IMT Atlantique"
,
school_longName
=
"IMT Atlantique - IMT Atlantique Bretagne-Pays de la Loire"
,
school_id
=
"481355"
}
,
School
(
"Mines Saint-Étienne"
)
(
"Mines Saint-Étienne MSE - École des Mines de Saint-Étienne"
)
(
"29212"
)
{
school_shortName
=
"Mines Saint-Étienne"
,
school_longName
=
"Mines Saint-Étienne MSE - École des Mines de Saint-Étienne"
,
school_id
=
"29212"
}
,
School
(
"Télécom École de Management"
)
(
"TEM - Télécom Ecole de Management"
)
(
"301442"
)
{
school_shortName
=
"Télécom École de Management"
,
school_longName
=
"TEM - Télécom Ecole de Management"
,
school_id
=
"301442"
}
,
School
(
"IMT Business School"
)
(
"IMT Business School"
)
(
"542824"
)
{
school_shortName
=
"IMT Business School"
,
school_longName
=
"IMT Business School"
,
school_id
=
"542824"
}
,
School
(
"Télécom ParisTech"
)
(
"Télécom ParisTech"
)
(
"300362"
)
{
school_shortName
=
"Télécom ParisTech"
,
school_longName
=
"Télécom ParisTech"
,
school_id
=
"300362"
}
,
School
(
"Télécom SudParis"
)
(
"TSP - Télécom SudParis"
)
(
"352124"
)
{
school_shortName
=
"Télécom SudParis"
,
school_longName
=
"TSP - Télécom SudParis"
,
school_id
=
"352124"
}
,
School
(
"ARMINES"
)
(
"ARMINES"
)
(
"300362"
)
{
school_shortName
=
"ARMINES"
,
school_longName
=
"ARMINES"
,
school_id
=
"300362"
}
,
School
(
"Eurecom"
)
(
"Eurecom"
)
(
"421532"
)
{
school_shortName
=
"Eurecom"
,
school_longName
=
"Eurecom"
,
school_id
=
"421532"
}
,
School
(
"Mines ParisTech"
)
(
"MINES ParisTech - École nationale supérieure des mines de Paris"
)
(
"301492"
)
{
school_shortName
=
"Mines ParisTech"
,
school_longName
=
"MINES ParisTech - École nationale supérieure des mines de Paris"
,
school_id
=
"301492"
}
]
mapIdSchool
::
Map
Text
Text
mapIdSchool
=
M
.
fromList
$
Gargantext
.
Prelude
.
map
(
\
(
School
n
_
i
)
->
(
i
,
n
))
schools
mapIdSchool
=
M
.
fromList
$
Gargantext
.
Prelude
.
map
(
\
(
School
{
school_shortName
,
school_id
})
->
(
school_id
,
school_shortName
))
schools
hal_data
::
IO
(
Either
Prelude
.
String
(
DV
.
Vector
CsvHal
))
hal_data
=
do
...
...
src/Gargantext/Core/Ext/IMTUser.hs
View file @
37a36aba
...
...
@@ -75,37 +75,39 @@ data IMTUser = IMTUser
-- | CSV instance
instance
FromNamedRecord
IMTUser
where
parseNamedRecord
r
=
IMTUser
<$>
r
.:
"id"
<*>
r
.:
"entite"
<*>
r
.:
"mail"
<*>
r
.:
"nom"
<*>
r
.:
"prenom"
<*>
r
.:
"fonction"
<*>
r
.:
"fonction2"
<*>
r
.:
"tel"
<*>
r
.:
"fax"
<*>
r
.:
"service"
<*>
r
.:
"groupe"
<*>
r
.:
"entite2"
<*>
r
.:
"service2"
<*>
r
.:
"groupe2"
<*>
r
.:
"bureau"
<*>
r
.:
"url"
<*>
r
.:
"pservice"
<*>
r
.:
"pfonction"
<*>
r
.:
"afonction"
<*>
r
.:
"afonction2"
<*>
r
.:
"grprech"
<*>
r
.:
"appellation"
<*>
r
.:
"lieu"
<*>
r
.:
"aprecision"
<*>
r
.:
"atel"
<*>
r
.:
"sexe"
<*>
r
.:
"statut"
<*>
r
.:
"idutilentite"
<*>
r
.:
"actif"
<*>
r
.:
"idutilsiecoles"
<*>
r
.:
"date_modification"
parseNamedRecord
r
=
do
id
<-
r
.:
"id"
entite
<-
r
.:
"entite"
mail
<-
r
.:
"mail"
nom
<-
r
.:
"nom"
prenom
<-
r
.:
"prenom"
fonction
<-
r
.:
"fonction"
fonction2
<-
r
.:
"fonction2"
tel
<-
r
.:
"tel"
fax
<-
r
.:
"fax"
service
<-
r
.:
"service"
groupe
<-
r
.:
"groupe"
entite2
<-
r
.:
"entite2"
service2
<-
r
.:
"service2"
groupe2
<-
r
.:
"groupe2"
bureau
<-
r
.:
"bureau"
url
<-
r
.:
"url"
pservice
<-
r
.:
"pservice"
pfonction
<-
r
.:
"pfonction"
afonction
<-
r
.:
"afonction"
afonction2
<-
r
.:
"afonction2"
grprech
<-
r
.:
"grprech"
appellation
<-
r
.:
"appellation"
lieu
<-
r
.:
"lieu"
aprecision
<-
r
.:
"aprecision"
atel
<-
r
.:
"atel"
sexe
<-
r
.:
"sexe"
statut
<-
r
.:
"statut"
idutilentite
<-
r
.:
"idutilentite"
actif
<-
r
.:
"actif"
idutilsiecoles
<-
r
.:
"idutilsiecoles"
date_modification
<-
r
.:
"date_modification"
pure
$
IMTUser
{
..
}
headerCSVannuaire
::
Header
headerCSVannuaire
=
...
...
@@ -136,15 +138,54 @@ deserialiseFromFile' filepath = deserialise <$> BL.readFile filepath
------------------------------------------------------------------------
imtUser2gargContact
::
IMTUser
->
HyperdataContact
imtUser2gargContact
(
IMTUser
id'
entite'
mail'
nom'
prenom'
fonction'
_fonction2'
tel'
_fax'
service'
_groupe'
_entite2
_service2
_group2
bureau'
url'
_pservice'
_pfonction'
_afonction'
_afonction2'
_grprech'
_appellation'
lieu'
_aprecision'
_atel'
_sexe'
_statut'
_idutilentite'
_actif'
_idutilsiecoles'
date_modification'
)
=
HyperdataContact
(
Just
"IMT Annuaire"
)
(
Just
qui
)
[
ou
]
((
<>
)
<$>
(
fmap
(
\
p
->
p
<>
" "
)
prenom'
)
<*>
nom'
)
entite'
date_modification'
Nothing
Nothing
where
qui
=
ContactWho
id'
prenom'
nom'
(
catMaybes
[
service'
])
[]
ou
=
ContactWhere
(
toList
entite'
)
(
toList
service'
)
fonction'
bureau'
(
Just
"France"
)
lieu'
contact
Nothing
Nothing
contact
=
Just
$
ContactTouch
mail'
tel'
url'
-- meta = ContactMetaData (Just "IMT annuaire") date_modification'
toList
Nothing
=
[]
toList
(
Just
x
)
=
[
x
]
--imtUser2gargContact (IMTUser id' entite' mail' nom' prenom' fonction' _fonction2' tel' _fax'
-- service' _groupe' _entite2 _service2 _group2 bureau' url' _pservice' _pfonction' _afonction' _afonction2'
-- _grprech' _appellation' lieu' _aprecision' _atel' _sexe' _statut' _idutilentite'
-- _actif' _idutilsiecoles' date_modification')
-- = HyperdataContact (Just "IMT Annuaire") (Just qui) [ou] ((<>) <$> (fmap (\p -> p <> " ") prenom') <*> nom') entite' date_modification' Nothing Nothing
imtUser2gargContact
(
IMTUser
{
id
,
entite
,
mail
,
nom
,
prenom
,
fonction
,
tel
,
service
,
bureau
,
url
,
lieu
,
date_modification
})
=
HyperdataContact
{
_hc_bdd
=
Just
"IMT Annuaire"
,
_hc_who
=
Just
qui
,
_hc_where
=
[
ou
]
,
_hc_title
=
title
,
_hc_source
=
entite
,
_hc_lastValidation
=
date_modification
,
_hc_uniqIdBdd
=
Nothing
,
_hc_uniqId
=
Nothing
}
where
title
=
(
<>
)
<$>
(
fmap
(
\
p
->
p
<>
" "
)
prenom
)
<*>
nom
qui
=
ContactWho
{
_cw_id
=
id
,
_cw_firstName
=
prenom
,
_cw_lastName
=
nom
,
_cw_keywords
=
catMaybes
[
service
]
,
_cw_freetags
=
[]
}
ou
=
ContactWhere
{
_cw_organization
=
toList
entite
,
_cw_labTeamDepts
=
toList
service
,
_cw_role
=
fonction
,
_cw_office
=
bureau
,
_cw_country
=
Just
"France"
,
_cw_city
=
lieu
,
_cw_touch
=
contact
,
_cw_entry
=
Nothing
,
_cw_exit
=
Nothing
}
contact
=
Just
$
ContactTouch
{
_ct_mail
=
mail
,
_ct_phone
=
tel
,
_ct_url
=
url
}
-- meta = ContactMetaData (Just "IMT annuaire") date_modification'
toList
Nothing
=
[]
toList
(
Just
x
)
=
[
x
]
src/Gargantext/Core/Methods/Distances.hs
View file @
37a36aba
...
...
@@ -50,3 +50,6 @@ instance Arbitrary GraphMetric where
arbitrary
=
elements
[
minBound
..
maxBound
]
------------------------------------------------------------------------
src/Gargantext/Core/NodeStory.hs
View file @
37a36aba
...
...
@@ -82,7 +82,9 @@ readNodeStoryEnv :: NodeStoryDir -> IO NodeStoryEnv
readNodeStoryEnv
nsd
=
do
mvar
<-
nodeStoryVar
nsd
Nothing
[
0
]
saver
<-
mkNodeStorySaver
nsd
mvar
pure
$
NodeStoryEnv
mvar
saver
(
nodeStoryVar
nsd
(
Just
mvar
))
pure
$
NodeStoryEnv
{
_nse_var
=
mvar
,
_nse_saver
=
saver
,
_nse_getter
=
nodeStoryVar
nsd
(
Just
mvar
)
}
------------------------------------------------------------------------
mkNodeStorySaver
::
NodeStoryDir
->
MVar
NodeListStory
->
IO
(
IO
()
)
...
...
@@ -212,7 +214,9 @@ repoToNodeListStory (Repo _v s h) = NodeStory $ Map.fromList ns
h'
=
ngramsStatePatch_migration
h
ns
=
List
.
map
(
\
(
n
,
ns'
)
->
(
n
,
let
hs
=
fromMaybe
[]
(
Map
.
lookup
n
h'
)
in
Archive
(
List
.
length
hs
)
ns'
hs
Archive
{
_a_version
=
List
.
length
hs
,
_a_state
=
ns'
,
_a_history
=
hs
}
)
)
$
Map
.
toList
s'
...
...
@@ -276,10 +280,17 @@ instance Serialise NgramsStatePatch'
-- TODO Semigroup instance for unions
-- TODO check this
instance
(
Semigroup
s
,
Semigroup
p
)
=>
Semigroup
(
Archive
s
p
)
where
(
<>
)
(
Archive
_v
_s
p
)
(
Archive
v'
s'
p'
)
=
Archive
v'
s'
(
p'
<>
p
)
(
<>
)
(
Archive
{
_a_history
=
p
})
(
Archive
{
_a_version
=
v'
,
_a_state
=
s'
,
_a_history
=
p'
})
=
Archive
{
_a_version
=
v'
,
_a_state
=
s'
,
_a_history
=
p'
<>
p
}
instance
Monoid
(
Archive
NgramsState'
NgramsStatePatch'
)
where
mempty
=
Archive
0
mempty
[]
mempty
=
Archive
{
_a_version
=
0
,
_a_state
=
mempty
,
_a_history
=
[]
}
instance
(
FromJSON
s
,
FromJSON
p
)
=>
FromJSON
(
Archive
s
p
)
where
parseJSON
=
genericParseJSON
$
unPrefix
"_a_"
...
...
@@ -293,13 +304,17 @@ initNodeStory :: Monoid s => NodeId -> NodeStory s p
initNodeStory
ni
=
NodeStory
$
Map
.
singleton
ni
initArchive
initArchive
::
Monoid
s
=>
Archive
s
p
initArchive
=
Archive
0
mempty
[]
initArchive
=
Archive
{
_a_version
=
0
,
_a_state
=
mempty
,
_a_history
=
[]
}
initNodeListStoryMock
::
NodeListStory
initNodeListStoryMock
=
NodeStory
$
Map
.
singleton
nodeListId
archive
where
nodeListId
=
0
archive
=
Archive
0
ngramsTableMap
[]
archive
=
Archive
{
_a_version
=
0
,
_a_state
=
ngramsTableMap
,
_a_history
=
[]
}
ngramsTableMap
=
Map
.
singleton
TableNgrams
.
NgramsTerms
$
Map
.
fromList
[
(
n
^.
ne_ngrams
,
ngramsElementToRepo
n
)
...
...
src/Gargantext/Core/Text/List/Social/Patch.hs
View file @
37a36aba
...
...
@@ -70,9 +70,11 @@ Children are not modified in this specific case.
-- | Old list get -1 score
-- New list get +1 score
-- Hence others lists lay around 0 score
addScorePatch
fl
(
t
,
(
NgramsPatch
children'
(
Patch
.
Replace
old_list
new_list
)))
=
addScorePatch
fl
(
t
,
(
NgramsPatch
{
_patch_children
,
_patch_list
=
Patch
.
Replace
old_list
new_list
}))
=
-- Adding new 'Children' score
addScorePatch
fl'
(
t
,
NgramsPatch
children'
Patch
.
Keep
)
addScorePatch
fl'
(
t
,
NgramsPatch
{
_patch_children
,
_patch_list
=
Patch
.
Keep
})
where
-- | Adding new 'ListType' score
fl'
=
fl
&
flc_scores
.
at
t
%~
(
score
fls_listType
old_list
(
-
1
))
...
...
@@ -80,8 +82,9 @@ addScorePatch fl (t, (NgramsPatch children' (Patch.Replace old_list new_list)))
&
flc_cont
%~
(
HashMap
.
delete
t
)
-- | Patching existing Ngrams with children
addScorePatch
fl
(
p
,
NgramsPatch
children'
Patch
.
Keep
)
=
foldl'
addChild
fl
$
patchMSet_toList
children'
addScorePatch
fl
(
p
,
NgramsPatch
{
_patch_children
,
_patch_list
=
Patch
.
Keep
})
=
foldl'
addChild
fl
$
patchMSet_toList
_patch_children
where
-- | Adding a child
addChild
fl'
(
t
,
Patch
.
Replace
Nothing
(
Just
_
))
=
doLink
(
1
)
p
t
fl'
...
...
@@ -92,20 +95,24 @@ addScorePatch fl (p, NgramsPatch children' Patch.Keep) =
addChild
fl'
_
=
fl'
-- | Inserting a new Ngrams
addScorePatch
fl
(
t
,
NgramsReplace
Nothing
(
Just
nre
))
=
addScorePatch
fl
(
t
,
NgramsReplace
{
_patch_old
=
Nothing
,
_patch_new
=
Just
nre
})
=
childrenScore
1
t
(
nre
^.
nre_children
)
$
fl
&
flc_scores
.
at
t
%~
(
score
fls_listType
$
nre
^.
nre_list
)
1
&
flc_cont
%~
(
HashMap
.
delete
t
)
addScorePatch
fl
(
t
,
NgramsReplace
(
Just
old_nre
)
maybe_new_nre
)
=
addScorePatch
fl
(
t
,
NgramsReplace
{
_patch_old
=
Just
old_nre
,
_patch_new
=
maybe_new_nre
})
=
let
fl'
=
childrenScore
(
-
1
)
t
(
old_nre
^.
nre_children
)
$
fl
&
flc_scores
.
at
t
%~
(
score
fls_listType
$
old_nre
^.
nre_list
)
(
-
1
)
&
flc_cont
%~
(
HashMap
.
delete
t
)
in
case
maybe_new_nre
of
Nothing
->
fl'
Just
new_nre
->
addScorePatch
fl'
(
t
,
NgramsReplace
Nothing
(
Just
new_nre
))
Just
new_nre
->
addScorePatch
fl'
(
t
,
NgramsReplace
{
_patch_old
=
Nothing
,
_patch_new
=
Just
new_nre
})
addScorePatch
fl
(
_
,
NgramsReplace
Nothing
Nothing
)
=
fl
addScorePatch
fl
(
_
,
NgramsReplace
{
_patch_old
=
Nothing
,
_patch_new
=
Nothing
})
=
fl
-------------------------------------------------------------------------------
-- | Utils
...
...
src/Gargantext/Core/Text/Search.hs
View file @
37a36aba
...
...
@@ -13,8 +13,6 @@ Starting from this model, a specific Gargantext engine will be made
(using more metrics scores/features).
-}
{-# LANGUAGE NamedFieldPuns #-}
module
Gargantext.Core.Text.Search
where
import
Data.SearchEngine
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment