1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /*
- 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;
|