CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
csharp.js413 linesDownload Raw Back to languages
1/*2Language: C#3Author: Jason Diamond <jason@diamond.name>4Contributor: Nicolas LLOBERA <nllobera@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, David Pine <david.pine@microsoft.com>5Website: https://docs.microsoft.com/dotnet/csharp/6Category: common7*/8 9/** @type LanguageFn */10function csharp(hljs) {11  const BUILT_IN_KEYWORDS = [12    'bool',13    'byte',14    'char',15    'decimal',16    'delegate',17    'double',18    'dynamic',19    'enum',20    'float',21    'int',22    'long',23    'nint',24    'nuint',25    'object',26    'sbyte',27    'short',28    'string',29    'ulong',30    'uint',31    'ushort'32  ];33  const FUNCTION_MODIFIERS = [34    'public',35    'private',36    'protected',37    'static',38    'internal',39    'protected',40    'abstract',41    'async',42    'extern',43    'override',44    'unsafe',45    'virtual',46    'new',47    'sealed',48    'partial'49  ];50  const LITERAL_KEYWORDS = [51    'default',52    'false',53    'null',54    'true'55  ];56  const NORMAL_KEYWORDS = [57    'abstract',58    'as',59    'base',60    'break',61    'case',62    'catch',63    'class',64    'const',65    'continue',66    'do',67    'else',68    'event',69    'explicit',70    'extern',71    'finally',72    'fixed',73    'for',74    'foreach',75    'goto',76    'if',77    'implicit',78    'in',79    'interface',80    'internal',81    'is',82    'lock',83    'namespace',84    'new',85    'operator',86    'out',87    'override',88    'params',89    'private',90    'protected',91    'public',92    'readonly',93    'record',94    'ref',95    'return',96    'scoped',97    'sealed',98    'sizeof',99    'stackalloc',100    'static',101    'struct',102    'switch',103    'this',104    'throw',105    'try',106    'typeof',107    'unchecked',108    'unsafe',109    'using',110    'virtual',111    'void',112    'volatile',113    'while'114  ];115  const CONTEXTUAL_KEYWORDS = [116    'add',117    'alias',118    'and',119    'ascending',120    'args',121    'async',122    'await',123    'by',124    'descending',125    'dynamic',126    'equals',127    'file',128    'from',129    'get',130    'global',131    'group',132    'init',133    'into',134    'join',135    'let',136    'nameof',137    'not',138    'notnull',139    'on',140    'or',141    'orderby',142    'partial',143    'record',144    'remove',145    'required',146    'scoped',147    'select',148    'set',149    'unmanaged',150    'value|0',151    'var',152    'when',153    'where',154    'with',155    'yield'156  ];157 158  const KEYWORDS = {159    keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS),160    built_in: BUILT_IN_KEYWORDS,161    literal: LITERAL_KEYWORDS162  };163  const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, { begin: '[a-zA-Z](\\.?\\w)*' });164  const NUMBERS = {165    className: 'number',166    variants: [167      { begin: '\\b(0b[01\']+)' },168      { begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)(u|U|l|L|ul|UL|f|F|b|B)' },169      { begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)' }170    ],171    relevance: 0172  };173  const RAW_STRING = {174    className: 'string',175    begin: /"""("*)(?!")(.|\n)*?"""\1/,176    relevance: 1177  };178  const VERBATIM_STRING = {179    className: 'string',180    begin: '@"',181    end: '"',182    contains: [ { begin: '""' } ]183  };184  const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, { illegal: /\n/ });185  const SUBST = {186    className: 'subst',187    begin: /\{/,188    end: /\}/,189    keywords: KEYWORDS190  };191  const SUBST_NO_LF = hljs.inherit(SUBST, { illegal: /\n/ });192  const INTERPOLATED_STRING = {193    className: 'string',194    begin: /\$"/,195    end: '"',196    illegal: /\n/,197    contains: [198      { begin: /\{\{/ },199      { begin: /\}\}/ },200      hljs.BACKSLASH_ESCAPE,201      SUBST_NO_LF202    ]203  };204  const INTERPOLATED_VERBATIM_STRING = {205    className: 'string',206    begin: /\$@"/,207    end: '"',208    contains: [209      { begin: /\{\{/ },210      { begin: /\}\}/ },211      { begin: '""' },212      SUBST213    ]214  };215  const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {216    illegal: /\n/,217    contains: [218      { begin: /\{\{/ },219      { begin: /\}\}/ },220      { begin: '""' },221      SUBST_NO_LF222    ]223  });224  SUBST.contains = [225    INTERPOLATED_VERBATIM_STRING,226    INTERPOLATED_STRING,227    VERBATIM_STRING,228    hljs.APOS_STRING_MODE,229    hljs.QUOTE_STRING_MODE,230    NUMBERS,231    hljs.C_BLOCK_COMMENT_MODE232  ];233  SUBST_NO_LF.contains = [234    INTERPOLATED_VERBATIM_STRING_NO_LF,235    INTERPOLATED_STRING,236    VERBATIM_STRING_NO_LF,237    hljs.APOS_STRING_MODE,238    hljs.QUOTE_STRING_MODE,239    NUMBERS,240    hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, { illegal: /\n/ })241  ];242  const STRING = { variants: [243    RAW_STRING,244    INTERPOLATED_VERBATIM_STRING,245    INTERPOLATED_STRING,246    VERBATIM_STRING,247    hljs.APOS_STRING_MODE,248    hljs.QUOTE_STRING_MODE249  ] };250 251  const GENERIC_MODIFIER = {252    begin: "<",253    end: ">",254    contains: [255      { beginKeywords: "in out" },256      TITLE_MODE257    ]258  };259  const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\s*,\\s*' + hljs.IDENT_RE + ')*>)?(\\[\\])?';260  const AT_IDENTIFIER = {261    // prevents expressions like `@class` from incorrect flagging262    // `class` as a keyword263    begin: "@" + hljs.IDENT_RE,264    relevance: 0265  };266 267  return {268    name: 'C#',269    aliases: [270      'cs',271      'c#'272    ],273    keywords: KEYWORDS,274    illegal: /::/,275    contains: [276      hljs.COMMENT(277        '///',278        '$',279        {280          returnBegin: true,281          contains: [282            {283              className: 'doctag',284              variants: [285                {286                  begin: '///',287                  relevance: 0288                },289                { begin: '<!--|-->' },290                {291                  begin: '</?',292                  end: '>'293                }294              ]295            }296          ]297        }298      ),299      hljs.C_LINE_COMMENT_MODE,300      hljs.C_BLOCK_COMMENT_MODE,301      {302        className: 'meta',303        begin: '#',304        end: '$',305        keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' }306      },307      STRING,308      NUMBERS,309      {310        beginKeywords: 'class interface',311        relevance: 0,312        end: /[{;=]/,313        illegal: /[^\s:,]/,314        contains: [315          { beginKeywords: "where class" },316          TITLE_MODE,317          GENERIC_MODIFIER,318          hljs.C_LINE_COMMENT_MODE,319          hljs.C_BLOCK_COMMENT_MODE320        ]321      },322      {323        beginKeywords: 'namespace',324        relevance: 0,325        end: /[{;=]/,326        illegal: /[^\s:]/,327        contains: [328          TITLE_MODE,329          hljs.C_LINE_COMMENT_MODE,330          hljs.C_BLOCK_COMMENT_MODE331        ]332      },333      {334        beginKeywords: 'record',335        relevance: 0,336        end: /[{;=]/,337        illegal: /[^\s:]/,338        contains: [339          TITLE_MODE,340          GENERIC_MODIFIER,341          hljs.C_LINE_COMMENT_MODE,342          hljs.C_BLOCK_COMMENT_MODE343        ]344      },345      {346        // [Attributes("")]347        className: 'meta',348        begin: '^\\s*\\[(?=[\\w])',349        excludeBegin: true,350        end: '\\]',351        excludeEnd: true,352        contains: [353          {354            className: 'string',355            begin: /"/,356            end: /"/357          }358        ]359      },360      {361        // Expression keywords prevent 'keyword Name(...)' from being362        // recognized as a function definition363        beginKeywords: 'new return throw await else',364        relevance: 0365      },366      {367        className: 'function',368        begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*(<[^=]+>\\s*)?\\(',369        returnBegin: true,370        end: /\s*[{;=]/,371        excludeEnd: true,372        keywords: KEYWORDS,373        contains: [374          // prevents these from being highlighted `title`375          {376            beginKeywords: FUNCTION_MODIFIERS.join(" "),377            relevance: 0378          },379          {380            begin: hljs.IDENT_RE + '\\s*(<[^=]+>\\s*)?\\(',381            returnBegin: true,382            contains: [383              hljs.TITLE_MODE,384              GENERIC_MODIFIER385            ],386            relevance: 0387          },388          { match: /\(\)/ },389          {390            className: 'params',391            begin: /\(/,392            end: /\)/,393            excludeBegin: true,394            excludeEnd: true,395            keywords: KEYWORDS,396            relevance: 0,397            contains: [398              STRING,399              NUMBERS,400              hljs.C_BLOCK_COMMENT_MODE401            ]402          },403          hljs.C_LINE_COMMENT_MODE,404          hljs.C_BLOCK_COMMENT_MODE405        ]406      },407      AT_IDENTIFIER408    ]409  };410}411 412export { csharp as default };413 
basant307/AI_Governance_Project · CoolFace