/*
Language: Haskell
Author: Jeremy Hull <sourdrums@gmail.com>
*/

hljs.LANGUAGES.haskell = function(){
  //var HASK_IDENT_RE = 
  return {
    defaultMode: {
      lexems: hljs.UNDERSCORE_IDENT_RE,
      illegal: '',
      contains: ['comment', 'string', 'function', 'class', 'number', 'shebang', 'label'],
      keywords: {
        'keyword': {'let': 1,'in': 1,'if': 1,'then': 1,'else': 1,'case': 1,'of': 1,'where': 1,'do': 1,'module': 1,'import': 1, 'hiding': 1,'qualified': 1,'type': 1,'data': 1,'deriving': 1,'class': 1,'instance': 1,'null': 1,'not': 1}//,
        //'built_in': {'Bool': 1,'True': 1,'False': 1,'Int': 1,'Char': 1,'Maybe': 1,'Nothing': 1,'String': 1}
      }
    },
    modes: [
      {
        className: 'comment',
        begin: '--', end: '$'
      },
      {
        className: 'comment',
        begin: '{-', end: '-}'
      },
      {
        className: 'shebang',
        begin: '#!\\/usr\\/bin\\/env\ runhaskell',
        end: '$'
      },
      hljs.C_NUMBER_MODE,
      hljs.APOS_STRING_MODE,
      hljs.QUOTE_STRING_MODE,
      {
        className: 'class',
        lexems: hljs.UNDERSCORE_IDENT_RE,
        begin: '\\bclass', end: 'where|$',
        keywords: {'class': 1,'where': 1},
        contains: ['label']
      },
      {
        className: 'title',
        begin: '^[_a-z][\\w\\\']*', end: hljs.IMMEDIATE_RE
      },
      {
        className: 'label',
        begin: '[A-Z][\\w\\\']*', end: hljs.IMMEDIATE_RE
      }
    ]
  };
}();

@@ -89,58 +89,10 @@
 l = 
-function()%7B%0A  //var HASK_IDENT_RE = %0A  return %7B%0A  
+%7B%0A
   de
@@ -104,26 +104,24 @@
 Mode: %7B%0A    
-  
 lexems: hljs
@@ -146,18 +146,16 @@
 RE,%0A    
-  
 illegal:
@@ -159,18 +159,16 @@
 al: '',%0A
-  
     cont
@@ -239,26 +239,15 @@
 ang'
-, 'label'
 %5D,%0A    
- 
- 
 keyw
@@ -254,18 +254,16 @@
 ords: %7B%0A
-  
       'k
@@ -488,18 +488,16 @@
 : 1%7D
-//
 ,%0A      
   //
@@ -496,12 +496,8 @@
     
-  //
 'bui
@@ -600,21 +600,15 @@
     
-  %7D%0A  
+%7D%0A
   %7D,%0A
-  
   mo
@@ -614,30 +614,26 @@
 odes: %5B%0A    
- 
- 
 %7B%0A
-  
       classN
@@ -646,34 +646,32 @@
 comment',%0A      
- 
- 
 begin: '--', end
@@ -676,39 +676,33 @@
 nd: '$'%0A    
-  
 %7D,%0A    
- 
- 
 %7B%0A
-  
       classN
@@ -715,34 +715,32 @@
 comment',%0A      
- 
- 
 begin: '%7B-', end
@@ -746,39 +746,33 @@
 d: '-%7D'%0A    
-  
 %7D,%0A    
- 
- 
 %7B%0A
-  
       classN
@@ -787,18 +787,16 @@
 ebang',%0A
-  
       be
@@ -842,18 +842,16 @@
 ,%0A      
-  
 end: '$'
@@ -851,31 +851,27 @@
 nd: '$'%0A    
- 
- 
 %7D,%0A
-  
     hljs.C_N
@@ -882,26 +882,24 @@
 R_MODE,%0A    
- 
- 
 hljs.APOS_ST
@@ -905,26 +905,24 @@
 TRING_MODE,%0A
-  
     hljs.QUO
@@ -937,30 +937,26 @@
 G_MODE,%0A    
- 
- 
 %7B%0A
-  
       classN
@@ -975,18 +975,16 @@
 ,%0A      
- 
- 
 lexems: 
@@ -1009,18 +1009,16 @@
 ENT_RE,%0A
-  
       be
@@ -1056,18 +1056,16 @@
 ,%0A      
- 
- 
 keywords
@@ -1097,18 +1097,16 @@
 ,%0A      
-  
 contains
@@ -1113,18 +1113,25 @@
 : %5B'
-label
+title','params
 '%5D%0A
-  
     
@@ -1129,38 +1129,34 @@
 ms'%5D%0A    %7D,%0A    
-  %7B%0A  
+%7B%0A
       className:
@@ -1175,36 +1175,39 @@
     
-  
 begin: 
-'%5E%5B_a-z%5D%5B%5C%5Cw%5C%5C%5C'%5D*'
+hljs.UNDERSCORE_IDENT_RE
 , en
@@ -1235,27 +1235,23 @@
     
-  
 %7D,%0A    
-  
 %7B%0A      
   cl
@@ -1242,26 +1242,24 @@
     %7B%0A      
- 
- 
 className: '
@@ -1262,18 +1262,17 @@
 e: '
-label
+params
 ',%0A
-  
     
@@ -1284,25 +1284,32 @@
 in: 
-'%5BA-Z%5D%5B%5C%5Cw%5C%5C%5C'%5D*'
+hljs.UNDERSCORE_IDENT_RE
 , en
@@ -1337,24 +1337,13 @@
     
-  
 %7D%0A  
- 
- 
 %5D%0A
-  
 %7D;%0A
-%7D();%0A

Revert "Finished class highlight, easier then I thought"