87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
Language: F#
 | 
						|
Author: Jonas Follesø <jonas@follesoe.no>
 | 
						|
Contributors: Troy Kershaw <hello@troykershaw.com>, Henrik Feldt <henrik@haf.se>
 | 
						|
Website: https://docs.microsoft.com/en-us/dotnet/fsharp/
 | 
						|
Category: functional
 | 
						|
*/
 | 
						|
 | 
						|
/** @type LanguageFn */
 | 
						|
function fsharp(hljs) {
 | 
						|
  const TYPEPARAM = {
 | 
						|
    begin: '<',
 | 
						|
    end: '>',
 | 
						|
    contains: [
 | 
						|
      hljs.inherit(hljs.TITLE_MODE, {
 | 
						|
        begin: /'[a-zA-Z0-9_]+/
 | 
						|
      })
 | 
						|
    ]
 | 
						|
  };
 | 
						|
 | 
						|
  return {
 | 
						|
    name: 'F#',
 | 
						|
    aliases: ['fs'],
 | 
						|
    keywords:
 | 
						|
      'abstract and as assert base begin class default delegate do done ' +
 | 
						|
      'downcast downto elif else end exception extern false finally for ' +
 | 
						|
      'fun function global if in inherit inline interface internal lazy let ' +
 | 
						|
      'match member module mutable namespace new null of open or ' +
 | 
						|
      'override private public rec return sig static struct then to ' +
 | 
						|
      'true try type upcast use val void when while with yield',
 | 
						|
    illegal: /\/\*/,
 | 
						|
    contains: [
 | 
						|
      {
 | 
						|
        // monad builder keywords (matches before non-bang kws)
 | 
						|
        className: 'keyword',
 | 
						|
        begin: /\b(yield|return|let|do)!/
 | 
						|
      },
 | 
						|
      {
 | 
						|
        className: 'string',
 | 
						|
        begin: '@"',
 | 
						|
        end: '"',
 | 
						|
        contains: [
 | 
						|
          {
 | 
						|
            begin: '""'
 | 
						|
          }
 | 
						|
        ]
 | 
						|
      },
 | 
						|
      {
 | 
						|
        className: 'string',
 | 
						|
        begin: '"""',
 | 
						|
        end: '"""'
 | 
						|
      },
 | 
						|
      hljs.COMMENT('\\(\\*(\\s)', '\\*\\)', {
 | 
						|
        contains: ["self"]
 | 
						|
      }),
 | 
						|
      {
 | 
						|
        className: 'class',
 | 
						|
        beginKeywords: 'type',
 | 
						|
        end: '\\(|=|$',
 | 
						|
        excludeEnd: true,
 | 
						|
        contains: [
 | 
						|
          hljs.UNDERSCORE_TITLE_MODE,
 | 
						|
          TYPEPARAM
 | 
						|
        ]
 | 
						|
      },
 | 
						|
      {
 | 
						|
        className: 'meta',
 | 
						|
        begin: '\\[<',
 | 
						|
        end: '>\\]',
 | 
						|
        relevance: 10
 | 
						|
      },
 | 
						|
      {
 | 
						|
        className: 'symbol',
 | 
						|
        begin: '\\B(\'[A-Za-z])\\b',
 | 
						|
        contains: [hljs.BACKSLASH_ESCAPE]
 | 
						|
      },
 | 
						|
      hljs.C_LINE_COMMENT_MODE,
 | 
						|
      hljs.inherit(hljs.QUOTE_STRING_MODE, {
 | 
						|
        illegal: null
 | 
						|
      }),
 | 
						|
      hljs.C_NUMBER_MODE
 | 
						|
    ]
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
module.exports = fsharp;
 |