| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 | /*Language: C#Author: Jason Diamond <[email protected]>Category: common*/function(hljs) {  var KEYWORDS = {    keyword:      // Normal keywords.      'abstract as base bool break byte case catch char checked const continue decimal ' +      'default delegate do double else enum event explicit extern finally fixed float ' +      'for foreach goto if implicit in int interface internal is lock long ' +      'object operator out override params private protected public readonly ref sbyte ' +      'sealed short sizeof stackalloc static string struct switch this try typeof ' +      'uint ulong unchecked unsafe ushort using virtual void volatile while ' +      'nameof ' +      // Contextual keywords.      'add alias ascending async await by descending dynamic equals from get global group into join ' +      'let on orderby partial remove select set value var where yield',    literal:      'null false true'  };  var VERBATIM_STRING = {    className: 'string',    begin: '@"', end: '"',    contains: [{begin: '""'}]  };  var VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {illegal: /\n/});  var SUBST = {    className: 'subst',    begin: '{', end: '}',    keywords: KEYWORDS  };  var SUBST_NO_LF = hljs.inherit(SUBST, {illegal: /\n/});  var INTERPOLATED_STRING = {    className: 'string',    begin: /\$"/, end: '"',    illegal: /\n/,    contains: [{begin: '{{'}, {begin: '}}'}, hljs.BACKSLASH_ESCAPE, SUBST_NO_LF]  };  var INTERPOLATED_VERBATIM_STRING = {    className: 'string',    begin: /\$@"/, end: '"',    contains: [{begin: '{{'}, {begin: '}}'}, {begin: '""'}, SUBST]  };  var INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {    illegal: /\n/,    contains: [{begin: '{{'}, {begin: '}}'}, {begin: '""'}, SUBST_NO_LF]  });  SUBST.contains = [    INTERPOLATED_VERBATIM_STRING,    INTERPOLATED_STRING,    VERBATIM_STRING,    hljs.APOS_STRING_MODE,    hljs.QUOTE_STRING_MODE,    hljs.C_NUMBER_MODE,    hljs.C_BLOCK_COMMENT_MODE  ];  SUBST_NO_LF.contains = [    INTERPOLATED_VERBATIM_STRING_NO_LF,    INTERPOLATED_STRING,    VERBATIM_STRING_NO_LF,    hljs.APOS_STRING_MODE,    hljs.QUOTE_STRING_MODE,    hljs.C_NUMBER_MODE,    hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, {illegal: /\n/})  ];  var STRING = {    variants: [      INTERPOLATED_VERBATIM_STRING,      INTERPOLATED_STRING,      VERBATIM_STRING,      hljs.APOS_STRING_MODE,      hljs.QUOTE_STRING_MODE    ]  };  var TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\s*,\\s*' + hljs.IDENT_RE + ')*>)?(\\[\\])?';  return {    aliases: ['csharp'],    keywords: KEYWORDS,    illegal: /::/,    contains: [      hljs.COMMENT(        '///',        '$',        {          returnBegin: true,          contains: [            {              className: 'doctag',              variants: [                {                  begin: '///', relevance: 0                },                {                  begin: '<!--|-->'                },                {                  begin: '</?', end: '>'                }              ]            }          ]        }      ),      hljs.C_LINE_COMMENT_MODE,      hljs.C_BLOCK_COMMENT_MODE,      {        className: 'meta',        begin: '#', end: '$',        keywords: {'meta-keyword': 'if else elif endif define undef warning error line region endregion pragma checksum'}      },      STRING,      hljs.C_NUMBER_MODE,      {        beginKeywords: 'class interface', end: /[{;=]/,        illegal: /[^\s:]/,        contains: [          hljs.TITLE_MODE,          hljs.C_LINE_COMMENT_MODE,          hljs.C_BLOCK_COMMENT_MODE        ]      },      {        beginKeywords: 'namespace', end: /[{;=]/,        illegal: /[^\s:]/,        contains: [          hljs.inherit(hljs.TITLE_MODE, {begin: '[a-zA-Z](\\.?\\w)*'}),          hljs.C_LINE_COMMENT_MODE,          hljs.C_BLOCK_COMMENT_MODE        ]      },      {        // Expression keywords prevent 'keyword Name(...)' from being        // recognized as a function definition        beginKeywords: 'new return throw await',        relevance: 0      },      {        className: 'function',        begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*\\(', returnBegin: true, end: /[{;=]/,        excludeEnd: true,        keywords: KEYWORDS,        contains: [          {            begin: hljs.IDENT_RE + '\\s*\\(', returnBegin: true,            contains: [hljs.TITLE_MODE],            relevance: 0          },          {            className: 'params',            begin: /\(/, end: /\)/,            excludeBegin: true,            excludeEnd: true,            keywords: KEYWORDS,            relevance: 0,            contains: [              STRING,              hljs.C_NUMBER_MODE,              hljs.C_BLOCK_COMMENT_MODE            ]          },          hljs.C_LINE_COMMENT_MODE,          hljs.C_BLOCK_COMMENT_MODE        ]      }    ]  };}
 |