MediaWiki:Highlight-js/languages/css.js

/** * Language: CSS * Category: common, css */ window.dev.highlight.registerLanguage('css', function(hljs) { var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';  var RULE = {    begin: /[A-Z\_\.\-]+\s*:/, returnBegin: true, end: ';', endsWithParent: true,    contains: [      {        className: 'attribute',        begin: /\S/, end: ':', excludeEnd: true,        starts: {          endsWithParent: true, excludeEnd: true,          contains: [            {              begin: /[\w-]+\(/, returnBegin: true, contains: [ {                 className: 'built_in', begin: /[\w-]+/ },               {                  begin: /\(/, end: /\)/, contains: [ hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE ]               }              ]            },            hljs.CSS_NUMBER_MODE, hljs.QUOTE_STRING_MODE, hljs.APOS_STRING_MODE, hljs.C_BLOCK_COMMENT_MODE, {             className: 'number', begin: '#[0-9A-Fa-f]+' },           {              className: 'meta', begin: '!important' }         ]        }      }    ]  };

return { case_insensitive: true, illegal: /[=\/|'\$]/, contains: [ hljs.C_BLOCK_COMMENT_MODE, {       className: 'selector-id', begin: /#[A-Za-z0-9_-]+/ },     {        className: 'selector-class', begin: /\.[A-Za-z0-9_-]+/ },     {        className: 'selector-attr', begin: /\[/, end: /\]/, illegal: '$' },     {        className: 'selector-pseudo', begin: /:?[a-zA-Z0-9\_\-\+\(\)"'.]+/     },      {        begin: '@(font-face|page)',        lexemes: '[a-z-]+',        keywords: 'font-face page'      },      {        begin: '@', end: '[{;]', // at_rule eating first "{" is a good thing                                 // because it doesn’t let it to be parsed as                                 // a rule set but instead drops parser into                                 // the default mode which is how it should be.        illegal: /:/, // break on Less variables @var: ...        contains: [          {            className: 'keyword',            begin: /\w+/          },          {            begin: /\s/, endsWithParent: true, excludeEnd: true,            relevance: 0,            contains: [              hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE,              hljs.CSS_NUMBER_MODE            ]          }        ]      },      { className: 'selector-tag', begin: IDENT_RE, relevance: 0 },     {        begin: '{', end: '}', illegal: /\S/, contains: [ hljs.C_BLOCK_COMMENT_MODE, RULE, ]     }    ]  }; }); /** **/