Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gargantext-ihaskell
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
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
gargantext-ihaskell
Commits
e86272af
Commit
e86272af
authored
May 29, 2015
by
Andrew Gibiansky
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removing MissingH
parent
17582024
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
70 additions
and
49 deletions
+70
-49
ihaskell.cabal
ihaskell.cabal
+1
-2
BrokenPackages.hs
src/IHaskell/BrokenPackages.hs
+2
-4
Display.hs
src/IHaskell/Display.hs
+1
-1
Completion.hs
src/IHaskell/Eval/Completion.hs
+19
-20
Evaluate.hs
src/IHaskell/Eval/Evaluate.hs
+4
-5
Hoogle.hs
src/IHaskell/Eval/Hoogle.hs
+8
-8
Lint.hs
src/IHaskell/Eval/Lint.hs
+1
-2
Parser.hs
src/IHaskell/Eval/Parser.hs
+3
-3
Util.hs
src/IHaskell/Eval/Util.hs
+2
-1
IPython.hs
src/IHaskell/IPython.hs
+3
-3
StringUtils.hs
src/StringUtils.hs
+26
-0
No files found.
ihaskell.cabal
View file @
e86272af
...
...
@@ -73,7 +73,6 @@ library
haskell-src-exts ==1.16.*,
http-client == 0.4.*,
http-client-tls == 0.2.*,
MissingH >=1.2,
mtl >=2.1,
parsec -any,
process >=1.1,
...
...
@@ -116,6 +115,7 @@ library
Paths_ihaskell
other-modules:
IHaskellPrelude
StringUtils
default-extensions:
NoImplicitPrelude
...
...
@@ -182,7 +182,6 @@ Test-Suite hspec
haskell-src-exts ==1.16.*,
hspec -any,
HUnit -any,
MissingH >=1.2,
mtl >=2.1,
parsec -any,
process >=1.1,
...
...
src/IHaskell/BrokenPackages.hs
View file @
e86272af
...
...
@@ -13,8 +13,6 @@ import Text.Parsec
import
Text.Parsec.String
import
Control.Applicative
hiding
((
<|>
),
many
)
import
Data.String.Utils
(
startswith
)
import
Shelly
data
BrokenPackage
=
BrokenPackage
{
packageID
::
String
,
brokenDeps
::
[
String
]
}
...
...
@@ -30,8 +28,8 @@ getBrokenPackages = shelly $ do
checkOut
<-
lastStderr
-- Get rid of extraneous things
let
rightStart
str
=
startswith
"There are problems"
str
||
startswith
" dependency"
str
let
rightStart
str
=
"There are problems"
`
isPrefixOf
`
str
||
" dependency"
`
isPrefixOf
`
str
ghcPkgOutput
=
unlines
.
filter
rightStart
.
lines
$
T
.
unpack
checkOut
return
$
...
...
src/IHaskell/Display.hs
View file @
e86272af
...
...
@@ -56,7 +56,6 @@ import qualified Data.ByteString.Lazy as LBS
import
qualified
Data.ByteString.Char8
as
CBS
import
Data.Serialize
as
Serialize
import
Data.String.Utils
(
rstrip
)
import
qualified
Data.ByteString.Base64
as
Base64
import
Data.Aeson
(
Value
)
import
System.Directory
(
getTemporaryDirectory
,
setCurrentDirectory
)
...
...
@@ -69,6 +68,7 @@ import System.IO.Unsafe (unsafePerformIO)
import
qualified
Data.Text.Encoding
as
E
import
IHaskell.Types
import
StringUtils
(
rstrip
)
type
Base64
=
Text
...
...
src/IHaskell/Eval/Completion.hs
View file @
e86272af
...
...
@@ -23,11 +23,9 @@ import Control.Applicative ((<$>))
import
Data.ByteString.UTF8
hiding
(
drop
,
take
,
lines
,
length
)
import
Data.Char
import
Data.List
(
nub
,
init
,
last
,
head
,
elemIndex
)
import
Data.List.
Split
import
Data.List.Split.Internals
import
qualified
Data.List.Split
as
Split
import
qualified
Data.List.Split.Internals
as
Split
import
Data.Maybe
(
fromJust
)
import
Data.String.Utils
(
strip
,
startswith
,
endswith
,
replace
)
import
qualified
Data.String.Utils
as
StringUtils
import
System.Environment
(
getEnv
)
import
GHC
hiding
(
Qualified
)
...
...
@@ -51,6 +49,7 @@ import System.Console.Haskeline.Completion
import
IHaskell.Types
import
IHaskell.Eval.Evaluate
(
Interpreter
)
import
IHaskell.Eval.ParseShell
(
parseShell
)
import
StringUtils
(
replace
,
strip
,
split
)
data
CompletionType
=
Empty
|
Identifier
String
...
...
@@ -179,17 +178,17 @@ completionType :: String -- ^ The line on which the completion is bei
->
CompletionType
completionType
line
loc
target
-- File and directory completions are special
|
startswith
":!"
stripped
=
|
":!"
`
isPrefixOf
`
stripped
=
fileComplete
FilePath
|
startswith
":l"
stripped
=
|
":l"
`
isPrefixOf
`
stripped
=
fileComplete
HsFilePath
-- Complete :set, :opt, and :ext
|
startswith
":s"
stripped
=
|
":s"
`
isPrefixOf
`
stripped
=
DynFlag
candidate
|
startswith
":o"
stripped
=
|
":o"
`
isPrefixOf
`
stripped
=
KernelOption
candidate
|
startswith
":e"
stripped
=
|
":e"
`
isPrefixOf
`
stripped
=
Extension
candidate
-- Use target for other completions. If it's empty, no completion.
...
...
@@ -201,7 +200,7 @@ completionType line loc target
FilePath
(
getStringTarget
lineUpToCursor
)
(
getStringTarget
lineUpToCursor
)
-- Complete module names in imports and elsewhere.
|
startswith
"import"
stripped
&&
isModName
=
|
"import"
`
isPrefixOf
`
stripped
&&
isModName
=
ModuleName
dotted
candidate
|
isModName
&&
(
not
.
null
.
init
)
target
=
Qualified
dotted
candidate
...
...
@@ -225,7 +224,7 @@ completionType line loc target
fileComplete
filePath
=
case
parseShell
lineUpToCursor
of
Right
xs
->
filePath
lineUpToCursor
$
if
endswith
(
last
xs
)
lineUpToCursor
if
last
xs
`
isSuffixOf
`
lineUpToCursor
then
last
xs
else
[]
Left
_
->
Empty
...
...
@@ -256,14 +255,14 @@ completionTarget :: String -> Int -> [String]
completionTarget
code
cursor
=
expandCompletionPiece
pieceToComplete
where
pieceToComplete
=
map
fst
<$>
find
(
elem
cursor
.
map
snd
)
pieces
pieces
=
splitAlongCursor
$
split
splitter
$
zip
code
[
1
..
]
splitter
=
defaultSplitter
pieces
=
splitAlongCursor
$
Split
.
split
splitter
$
zip
code
[
1
..
]
splitter
=
Split
.
defaultSplitter
{
-- Split using only the characters, which are the first elements of the (char, index) tuple
delimiter
=
Delimiter
[
uncurry
isDelim
]
Split
.
delimiter
=
Split
.
Delimiter
[
uncurry
isDelim
]
-- Condense multiple delimiters into one and then drop them.
,
condensePolicy
=
Condense
,
delimPolicy
=
Drop
,
Split
.
condensePolicy
=
Split
.
Condense
,
Split
.
delimPolicy
=
Split
.
Drop
}
isDelim
::
Char
->
Int
->
Bool
...
...
@@ -281,7 +280,7 @@ completionTarget code cursor = expandCompletionPiece pieceToComplete
neverIdent
=
"
\n\t
(),{}[]
\\
'
\"
`"
expandCompletionPiece
Nothing
=
[]
expandCompletionPiece
(
Just
str
)
=
splitOn
"."
str
expandCompletionPiece
(
Just
str
)
=
Split
.
splitOn
"."
str
getHome
::
IO
String
getHome
=
do
...
...
@@ -313,7 +312,7 @@ completePathWithExtensions extensions line =
acceptAll
=
const
True
extensionIsOneOf
exts
str
=
any
correctEnding
exts
where
correctEnding
ext
=
e
ndswith
ext
str
correctEnding
ext
=
e
xt
`
isSuffixOf
`
str
completePathFilter
::
(
String
->
Bool
)
-- ^ File filter: test whether to include this file.
->
(
String
->
Bool
)
-- ^ Directory filter: test whether to include this directory.
...
...
@@ -334,8 +333,8 @@ completePathFilter includeFile includeDirectory left right = GhcMonad.liftIO $ d
-- everything else. If we wanted to keep original order, we could instead use
-- filter (`elem` (dirs ++ files)) completions
suggestions
<-
mapM
unDirExpand
$
dirs
++
files
let
isHidden
str
=
startswith
"."
.
last
.
StringUtils
.
split
"/"
$
if
endswith
"/"
str
let
isHidden
str
=
isPrefixOf
"."
.
last
.
split
"/"
$
if
"/"
`
isSuffixOf
`
str
then
init
str
else
str
visible
=
filter
(
not
.
isHidden
)
suggestions
...
...
src/IHaskell/Eval/Evaluate.hs
View file @
e86272af
...
...
@@ -24,9 +24,7 @@ import qualified Data.ByteString.Char8 as CBS
import
Control.Concurrent
(
forkIO
,
threadDelay
)
import
Prelude
(
putChar
,
head
,
tail
,
last
,
init
,
(
!!
))
import
Data.List.Utils
import
Data.List
(
findIndex
,
and
,
foldl1
,
nubBy
)
import
Data.String.Utils
import
Text.Printf
import
Data.Char
as
Char
import
Data.Dynamic
...
...
@@ -86,6 +84,7 @@ import qualified IHaskell.Eval.Hoogle as Hoogle
import
IHaskell.Eval.Util
import
IHaskell.BrokenPackages
import
qualified
IHaskell.IPython.Message.UUID
as
UUID
import
StringUtils
(
replace
,
split
,
strip
,
rstrip
)
import
Paths_ihaskell
(
version
)
import
Data.Version
(
versionBranch
)
...
...
@@ -570,7 +569,7 @@ evalCommand _ (Directive LoadFile names) state = wrapExecution state $ do
write
state
$
"Load: "
++
names
displays
<-
forM
(
words
names
)
$
\
name
->
do
let
filename
=
if
endswith
".hs"
name
let
filename
=
if
".hs"
`
isSuffixOf
`
name
then
name
else
name
++
".hs"
contents
<-
liftIO
$
readFile
filename
...
...
@@ -855,7 +854,7 @@ evalCommand output (Expression expr) state = do
isShowError
(
Display
errs
)
=
-- Note that we rely on this error message being 'type cleaned', so that `Show` is not displayed as
-- GHC.Show.Show. This is also very fragile!
startswith
"No instance for (Show"
msg
&&
"No instance for (Show"
`
isPrefixOf
`
msg
&&
isInfixOf
"print it"
msg
where
msg
=
extractPlain
errs
...
...
@@ -1250,7 +1249,7 @@ formatErrorWithClass cls =
fixDollarSigns
=
replace
"$"
"<span>$</span>"
useDashV
=
"
\n
Use -v to see a list of the files searched for."
isShowError
err
=
startswith
"No instance for (Show"
err
&&
"No instance for (Show"
`
isPrefixOf
`
err
&&
isInfixOf
" arising from a use of `print'"
err
formatParseError
::
StringLoc
->
String
->
ErrMsg
...
...
src/IHaskell/Eval/Hoogle.hs
View file @
e86272af
...
...
@@ -18,12 +18,12 @@ import qualified Data.ByteString.Char8 as CBS
import
Network.HTTP.Client
import
Network.HTTP.Client.TLS
import
Data.Aeson
import
Data.String.Utils
import
qualified
Data.List
as
List
import
Data.Char
(
isAscii
,
isAlphaNum
)
import
IHaskell.IPython
import
StringUtils
(
split
,
strip
,
replace
)
-- | Types of formats to render output to.
data
OutputFormat
=
Plain
-- ^ Render to plain text.
...
...
@@ -156,22 +156,22 @@ renderHtml (SearchResult resp) =
renderSelf
::
String
->
String
->
String
renderSelf
string
loc
|
startswith
"package"
string
=
|
"package"
`
isPrefixOf
`
string
=
pkg
++
" "
++
span
"hoogle-package"
(
link
loc
$
extractPackage
string
)
|
startswith
"module"
string
=
|
"module"
`
isPrefixOf
`
string
=
let
package
=
extractPackageName
loc
in
mod
++
" "
++
span
"hoogle-module"
(
link
loc
$
extractModule
string
)
++
packageSub
package
|
startswith
"class"
string
=
|
"class"
`
isPrefixOf
`
string
=
let
package
=
extractPackageName
loc
in
cls
++
" "
++
span
"hoogle-class"
(
link
loc
$
extractClass
string
)
++
packageSub
package
|
startswith
"data"
string
=
|
"data"
`
isPrefixOf
`
string
=
let
package
=
extractPackageName
loc
in
dat
++
" "
++
span
"hoogle-class"
(
link
loc
$
extractData
string
)
++
...
...
@@ -221,9 +221,9 @@ renderDocs doc =
let
groups
=
List
.
groupBy
bothAreCode
$
lines
doc
nonull
=
filter
(
not
.
null
.
strip
)
bothAreCode
s1
s2
=
startswith
">"
(
strip
s1
)
&&
startswith
">"
(
strip
s2
)
isCode
(
s
:
_
)
=
startswith
">"
$
strip
s
isPrefixOf
">"
(
strip
s1
)
&&
isPrefixOf
">"
(
strip
s2
)
isCode
(
s
:
_
)
=
isPrefixOf
">"
$
strip
s
makeBlock
lines
=
if
isCode
lines
then
div'
"hoogle-code"
$
unlines
$
nonull
lines
...
...
src/IHaskell/Eval/Lint.hs
View file @
e86272af
...
...
@@ -9,11 +9,9 @@ import qualified Data.ByteString as BS
import
qualified
Data.ByteString.Lazy
as
LBS
import
qualified
Data.ByteString.Char8
as
CBS
import
Data.String.Utils
(
replace
,
startswith
,
strip
,
split
)
import
Prelude
(
head
,
tail
,
last
)
import
Control.Monad
import
Data.List
(
findIndex
)
import
Text.Printf
import
Data.String.Here
import
Data.Char
import
Data.Monoid
...
...
@@ -34,6 +32,7 @@ import IHaskell.Types
import
IHaskell.Display
import
IHaskell.IPython
import
IHaskell.Eval.Parser
hiding
(
line
)
import
StringUtils
(
replace
)
type
ExtsModule
=
SrcExts
.
Module
SrcSpanInfo
...
...
src/IHaskell/Eval/Parser.hs
View file @
e86272af
...
...
@@ -23,7 +23,6 @@ import qualified Data.ByteString.Lazy as LBS
import
qualified
Data.ByteString.Char8
as
CBS
import
Data.List
(
maximumBy
,
inits
)
import
Data.String.Utils
(
startswith
,
strip
,
split
)
import
Prelude
(
head
,
tail
)
import
Control.Monad
(
msum
)
...
...
@@ -31,6 +30,7 @@ import GHC hiding (Located)
import
Language.Haskell.GHC.Parser
import
IHaskell.Eval.Util
import
StringUtils
(
strip
,
split
)
-- | A block of code to be evaluated. Each block contains a single element - one declaration,
-- statement, expression, etc. If parsing of the block failed, the block is instead a ParseError,
...
...
@@ -113,11 +113,11 @@ parseString codeString = do
-- Test whether a given chunk is a directive.
isDirective
::
String
->
Bool
isDirective
=
startswith
":"
.
strip
isDirective
=
isPrefixOf
":"
.
strip
-- Test if a chunk is a pragma.
isPragma
::
String
->
Bool
isPragma
=
startswith
"{-#"
.
strip
isPragma
=
isPrefixOf
"{-#"
.
strip
activateExtensions
::
GhcMonad
m
=>
CodeBlock
->
m
()
activateExtensions
(
Directive
SetExtension
ext
)
=
void
$
setExtension
ext
...
...
src/IHaskell/Eval/Util.hs
View file @
e86272af
...
...
@@ -52,9 +52,10 @@ import qualified Outputable as O
import
Control.Monad
(
void
)
import
Data.Function
(
on
)
import
Data.String.Utils
(
replace
)
import
Data.List
(
nubBy
)
import
StringUtils
(
replace
)
-- | A extension flag that can be set or unset.
data
ExtFlag
=
SetFlag
ExtensionFlag
|
UnsetFlag
ExtensionFlag
...
...
src/IHaskell/IPython.hs
View file @
e86272af
...
...
@@ -26,8 +26,6 @@ import qualified Shelly as SH
import
qualified
System.IO
as
IO
import
qualified
System.FilePath
as
FP
import
System.Directory
import
Data.List.Utils
(
split
)
import
Data.String.Utils
(
rstrip
,
endswith
,
strip
,
replace
)
import
System.Exit
(
exitFailure
)
import
Data.Aeson
(
toJSON
)
import
Data.Aeson.Encode
(
encodeToTextBuilder
)
...
...
@@ -40,6 +38,8 @@ import qualified GHC.Paths
import
IHaskell.Types
import
System.Posix.Signals
import
StringUtils
(
replace
,
split
)
data
KernelSpecOptions
=
KernelSpecOptions
{
kernelSpecGhcLibdir
::
String
-- ^ GHC libdir.
...
...
@@ -258,7 +258,7 @@ getSandboxPackageConf = SH.shelly $ do
let
pieces
=
split
"/"
myPath
sandboxDir
=
intercalate
"/"
$
takeWhile
(
/=
sandboxName
)
pieces
++
[
sandboxName
]
subdirs
<-
map
fp
<$>
SH
.
ls
(
SH
.
fromText
$
T
.
pack
sandboxDir
)
let
confdirs
=
filter
(
endswith
(
"packages.conf.d"
::
String
))
subdirs
let
confdirs
=
filter
(
isSuffixOf
(
"packages.conf.d"
::
String
))
subdirs
case
confdirs
of
[]
->
return
Nothing
dir
:
_
->
...
...
src/StringUtils.hs
0 → 100644
View file @
e86272af
module
StringUtils
(
strip
,
lstrip
,
rstrip
,
replace
,
split
,
)
where
import
IHaskellPrelude
import
qualified
Data.Text
as
T
lstrip
::
String
->
String
lstrip
=
dropWhile
(`
elem
`
"
\t\r\n
"
)
rstrip
::
String
->
String
rstrip
=
reverse
.
lstrip
.
reverse
strip
::
String
->
String
strip
=
rstrip
.
lstrip
replace
::
String
->
String
->
String
->
String
replace
needle
replacement
haystack
=
T
.
unpack
$
T
.
replace
(
T
.
pack
needle
)
(
T
.
pack
replacement
)
(
T
.
pack
haystack
)
split
::
String
->
String
->
[
String
]
split
delim
=
map
T
.
unpack
.
T
.
splitOn
(
T
.
pack
delim
)
.
T
.
pack
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