2021-03-11 00:35:00 +08:00
hljs . registerLanguage ( "haskell" , ( ( ) => { "use strict" ; return e => { const n = {
variants : [ e . COMMENT ( "--" , "$" ) , e . COMMENT ( /\{-/ , /-\}/ , { contains : [ "self" ] } ) ] } , i = {
className : "meta" , begin : /\{-#/ , end : /#-\}/ } , a = { className : "meta" , begin : "^#" , end : "$"
} , s = { className : "type" , begin : "\\b[A-Z][\\w']*" , relevance : 0 } , l = { begin : "\\(" ,
end : "\\)" , illegal : '"' , contains : [ i , a , { className : "type" ,
begin : "\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?" } , e . inherit ( e . TITLE _MODE , {
begin : "[_a-z][\\w']*" } ) , n ] } ; return { name : "Haskell" , aliases : [ "hs" ] ,
keywords : "let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec" ,
contains : [ { beginKeywords : "module" , end : "where" , keywords : "module where" ,
contains : [ l , n ] , illegal : "\\W\\.|;" } , { begin : "\\bimport\\b" , end : "$" ,
keywords : "import qualified as hiding" , contains : [ l , n ] , illegal : "\\W\\.|;" } , {
className : "class" , begin : "^(\\s*)?(class|instance)\\b" , end : "where" ,
keywords : "class family instance where" , contains : [ s , l , n ] } , { className : "class" ,
begin : "\\b(data|(new)?type)\\b" , end : "$" ,
keywords : "data family type newtype deriving" , contains : [ i , s , l , { begin : /\{/ ,
end : /\}/ , contains : l . contains } , n ] } , { beginKeywords : "default" , end : "$" ,
contains : [ s , l , n ] } , { beginKeywords : "infix infixl infixr" , end : "$" ,
contains : [ e . C _NUMBER _MODE , n ] } , { begin : "\\bforeign\\b" , end : "$" ,
keywords : "foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe" ,
contains : [ s , e . QUOTE _STRING _MODE , n ] } , { className : "meta" ,
begin : "#!\\/usr\\/bin\\/env runhaskell" , end : "$"
} , i , a , e . QUOTE _STRING _MODE , e . C _NUMBER _MODE , s , e . inherit ( e . TITLE _MODE , {
begin : "^[_a-z][\\w']*" } ) , n , { begin : "->|<-" } ] } } } ) ( ) ) ;