mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-11-04 12:28:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			454 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			454 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
Language: Stylus
 | 
						|
Author: Bryant Williams <b.n.williams@gmail.com>
 | 
						|
Description: Stylus is an expressive, robust, feature-rich CSS language built for nodejs.
 | 
						|
Website: https://github.com/stylus/stylus
 | 
						|
Category: css
 | 
						|
*/
 | 
						|
 | 
						|
export default function(hljs) {
 | 
						|
 | 
						|
  var VARIABLE = {
 | 
						|
    className: 'variable',
 | 
						|
    begin: '\\$' + hljs.IDENT_RE
 | 
						|
  };
 | 
						|
 | 
						|
  var HEX_COLOR = {
 | 
						|
    className: 'number',
 | 
						|
    begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'
 | 
						|
  };
 | 
						|
 | 
						|
  var AT_KEYWORDS = [
 | 
						|
    'charset',
 | 
						|
    'css',
 | 
						|
    'debug',
 | 
						|
    'extend',
 | 
						|
    'font-face',
 | 
						|
    'for',
 | 
						|
    'import',
 | 
						|
    'include',
 | 
						|
    'media',
 | 
						|
    'mixin',
 | 
						|
    'page',
 | 
						|
    'warn',
 | 
						|
    'while'
 | 
						|
  ];
 | 
						|
 | 
						|
  var PSEUDO_SELECTORS = [
 | 
						|
    'after',
 | 
						|
    'before',
 | 
						|
    'first-letter',
 | 
						|
    'first-line',
 | 
						|
    'active',
 | 
						|
    'first-child',
 | 
						|
    'focus',
 | 
						|
    'hover',
 | 
						|
    'lang',
 | 
						|
    'link',
 | 
						|
    'visited'
 | 
						|
  ];
 | 
						|
 | 
						|
  var TAGS = [
 | 
						|
    'a',
 | 
						|
    'abbr',
 | 
						|
    'address',
 | 
						|
    'article',
 | 
						|
    'aside',
 | 
						|
    'audio',
 | 
						|
    'b',
 | 
						|
    'blockquote',
 | 
						|
    'body',
 | 
						|
    'button',
 | 
						|
    'canvas',
 | 
						|
    'caption',
 | 
						|
    'cite',
 | 
						|
    'code',
 | 
						|
    'dd',
 | 
						|
    'del',
 | 
						|
    'details',
 | 
						|
    'dfn',
 | 
						|
    'div',
 | 
						|
    'dl',
 | 
						|
    'dt',
 | 
						|
    'em',
 | 
						|
    'fieldset',
 | 
						|
    'figcaption',
 | 
						|
    'figure',
 | 
						|
    'footer',
 | 
						|
    'form',
 | 
						|
    'h1',
 | 
						|
    'h2',
 | 
						|
    'h3',
 | 
						|
    'h4',
 | 
						|
    'h5',
 | 
						|
    'h6',
 | 
						|
    'header',
 | 
						|
    'hgroup',
 | 
						|
    'html',
 | 
						|
    'i',
 | 
						|
    'iframe',
 | 
						|
    'img',
 | 
						|
    'input',
 | 
						|
    'ins',
 | 
						|
    'kbd',
 | 
						|
    'label',
 | 
						|
    'legend',
 | 
						|
    'li',
 | 
						|
    'mark',
 | 
						|
    'menu',
 | 
						|
    'nav',
 | 
						|
    'object',
 | 
						|
    'ol',
 | 
						|
    'p',
 | 
						|
    'q',
 | 
						|
    'quote',
 | 
						|
    'samp',
 | 
						|
    'section',
 | 
						|
    'span',
 | 
						|
    'strong',
 | 
						|
    'summary',
 | 
						|
    'sup',
 | 
						|
    'table',
 | 
						|
    'tbody',
 | 
						|
    'td',
 | 
						|
    'textarea',
 | 
						|
    'tfoot',
 | 
						|
    'th',
 | 
						|
    'thead',
 | 
						|
    'time',
 | 
						|
    'tr',
 | 
						|
    'ul',
 | 
						|
    'var',
 | 
						|
    'video'
 | 
						|
  ];
 | 
						|
 | 
						|
  var LOOKAHEAD_TAG_END = '(?=[\\.\\s\\n\\[\\:,])';
 | 
						|
 | 
						|
  var ATTRIBUTES = [
 | 
						|
    'align-content',
 | 
						|
    'align-items',
 | 
						|
    'align-self',
 | 
						|
    'animation',
 | 
						|
    'animation-delay',
 | 
						|
    'animation-direction',
 | 
						|
    'animation-duration',
 | 
						|
    'animation-fill-mode',
 | 
						|
    'animation-iteration-count',
 | 
						|
    'animation-name',
 | 
						|
    'animation-play-state',
 | 
						|
    'animation-timing-function',
 | 
						|
    'auto',
 | 
						|
    'backface-visibility',
 | 
						|
    'background',
 | 
						|
    'background-attachment',
 | 
						|
    'background-clip',
 | 
						|
    'background-color',
 | 
						|
    'background-image',
 | 
						|
    'background-origin',
 | 
						|
    'background-position',
 | 
						|
    'background-repeat',
 | 
						|
    'background-size',
 | 
						|
    'border',
 | 
						|
    'border-bottom',
 | 
						|
    'border-bottom-color',
 | 
						|
    'border-bottom-left-radius',
 | 
						|
    'border-bottom-right-radius',
 | 
						|
    'border-bottom-style',
 | 
						|
    'border-bottom-width',
 | 
						|
    'border-collapse',
 | 
						|
    'border-color',
 | 
						|
    'border-image',
 | 
						|
    'border-image-outset',
 | 
						|
    'border-image-repeat',
 | 
						|
    'border-image-slice',
 | 
						|
    'border-image-source',
 | 
						|
    'border-image-width',
 | 
						|
    'border-left',
 | 
						|
    'border-left-color',
 | 
						|
    'border-left-style',
 | 
						|
    'border-left-width',
 | 
						|
    'border-radius',
 | 
						|
    'border-right',
 | 
						|
    'border-right-color',
 | 
						|
    'border-right-style',
 | 
						|
    'border-right-width',
 | 
						|
    'border-spacing',
 | 
						|
    'border-style',
 | 
						|
    'border-top',
 | 
						|
    'border-top-color',
 | 
						|
    'border-top-left-radius',
 | 
						|
    'border-top-right-radius',
 | 
						|
    'border-top-style',
 | 
						|
    'border-top-width',
 | 
						|
    'border-width',
 | 
						|
    'bottom',
 | 
						|
    'box-decoration-break',
 | 
						|
    'box-shadow',
 | 
						|
    'box-sizing',
 | 
						|
    'break-after',
 | 
						|
    'break-before',
 | 
						|
    'break-inside',
 | 
						|
    'caption-side',
 | 
						|
    'clear',
 | 
						|
    'clip',
 | 
						|
    'clip-path',
 | 
						|
    'color',
 | 
						|
    'column-count',
 | 
						|
    'column-fill',
 | 
						|
    'column-gap',
 | 
						|
    'column-rule',
 | 
						|
    'column-rule-color',
 | 
						|
    'column-rule-style',
 | 
						|
    'column-rule-width',
 | 
						|
    'column-span',
 | 
						|
    'column-width',
 | 
						|
    'columns',
 | 
						|
    'content',
 | 
						|
    'counter-increment',
 | 
						|
    'counter-reset',
 | 
						|
    'cursor',
 | 
						|
    'direction',
 | 
						|
    'display',
 | 
						|
    'empty-cells',
 | 
						|
    'filter',
 | 
						|
    'flex',
 | 
						|
    'flex-basis',
 | 
						|
    'flex-direction',
 | 
						|
    'flex-flow',
 | 
						|
    'flex-grow',
 | 
						|
    'flex-shrink',
 | 
						|
    'flex-wrap',
 | 
						|
    'float',
 | 
						|
    'font',
 | 
						|
    'font-family',
 | 
						|
    'font-feature-settings',
 | 
						|
    'font-kerning',
 | 
						|
    'font-language-override',
 | 
						|
    'font-size',
 | 
						|
    'font-size-adjust',
 | 
						|
    'font-stretch',
 | 
						|
    'font-style',
 | 
						|
    'font-variant',
 | 
						|
    'font-variant-ligatures',
 | 
						|
    'font-weight',
 | 
						|
    'height',
 | 
						|
    'hyphens',
 | 
						|
    'icon',
 | 
						|
    'image-orientation',
 | 
						|
    'image-rendering',
 | 
						|
    'image-resolution',
 | 
						|
    'ime-mode',
 | 
						|
    'inherit',
 | 
						|
    'initial',
 | 
						|
    'justify-content',
 | 
						|
    'left',
 | 
						|
    'letter-spacing',
 | 
						|
    'line-height',
 | 
						|
    'list-style',
 | 
						|
    'list-style-image',
 | 
						|
    'list-style-position',
 | 
						|
    'list-style-type',
 | 
						|
    'margin',
 | 
						|
    'margin-bottom',
 | 
						|
    'margin-left',
 | 
						|
    'margin-right',
 | 
						|
    'margin-top',
 | 
						|
    'marks',
 | 
						|
    'mask',
 | 
						|
    'max-height',
 | 
						|
    'max-width',
 | 
						|
    'min-height',
 | 
						|
    'min-width',
 | 
						|
    'nav-down',
 | 
						|
    'nav-index',
 | 
						|
    'nav-left',
 | 
						|
    'nav-right',
 | 
						|
    'nav-up',
 | 
						|
    'none',
 | 
						|
    'normal',
 | 
						|
    'object-fit',
 | 
						|
    'object-position',
 | 
						|
    'opacity',
 | 
						|
    'order',
 | 
						|
    'orphans',
 | 
						|
    'outline',
 | 
						|
    'outline-color',
 | 
						|
    'outline-offset',
 | 
						|
    'outline-style',
 | 
						|
    'outline-width',
 | 
						|
    'overflow',
 | 
						|
    'overflow-wrap',
 | 
						|
    'overflow-x',
 | 
						|
    'overflow-y',
 | 
						|
    'padding',
 | 
						|
    'padding-bottom',
 | 
						|
    'padding-left',
 | 
						|
    'padding-right',
 | 
						|
    'padding-top',
 | 
						|
    'page-break-after',
 | 
						|
    'page-break-before',
 | 
						|
    'page-break-inside',
 | 
						|
    'perspective',
 | 
						|
    'perspective-origin',
 | 
						|
    'pointer-events',
 | 
						|
    'position',
 | 
						|
    'quotes',
 | 
						|
    'resize',
 | 
						|
    'right',
 | 
						|
    'tab-size',
 | 
						|
    'table-layout',
 | 
						|
    'text-align',
 | 
						|
    'text-align-last',
 | 
						|
    'text-decoration',
 | 
						|
    'text-decoration-color',
 | 
						|
    'text-decoration-line',
 | 
						|
    'text-decoration-style',
 | 
						|
    'text-indent',
 | 
						|
    'text-overflow',
 | 
						|
    'text-rendering',
 | 
						|
    'text-shadow',
 | 
						|
    'text-transform',
 | 
						|
    'text-underline-position',
 | 
						|
    'top',
 | 
						|
    'transform',
 | 
						|
    'transform-origin',
 | 
						|
    'transform-style',
 | 
						|
    'transition',
 | 
						|
    'transition-delay',
 | 
						|
    'transition-duration',
 | 
						|
    'transition-property',
 | 
						|
    'transition-timing-function',
 | 
						|
    'unicode-bidi',
 | 
						|
    'vertical-align',
 | 
						|
    'visibility',
 | 
						|
    'white-space',
 | 
						|
    'widows',
 | 
						|
    'width',
 | 
						|
    'word-break',
 | 
						|
    'word-spacing',
 | 
						|
    'word-wrap',
 | 
						|
    'z-index'
 | 
						|
  ];
 | 
						|
 | 
						|
  // illegals
 | 
						|
  var ILLEGAL = [
 | 
						|
    '\\?',
 | 
						|
    '(\\bReturn\\b)', // monkey
 | 
						|
    '(\\bEnd\\b)', // monkey
 | 
						|
    '(\\bend\\b)', // vbscript
 | 
						|
    '(\\bdef\\b)', // gradle
 | 
						|
    ';', // a whole lot of languages
 | 
						|
    '#\\s', // markdown
 | 
						|
    '\\*\\s', // markdown
 | 
						|
    '===\\s', // markdown
 | 
						|
    '\\|',
 | 
						|
    '%', // prolog
 | 
						|
  ];
 | 
						|
 | 
						|
  return {
 | 
						|
    name: 'Stylus',
 | 
						|
    aliases: ['styl'],
 | 
						|
    case_insensitive: false,
 | 
						|
    keywords: 'if else for in',
 | 
						|
    illegal: '(' + ILLEGAL.join('|') + ')',
 | 
						|
    contains: [
 | 
						|
 | 
						|
      // strings
 | 
						|
      hljs.QUOTE_STRING_MODE,
 | 
						|
      hljs.APOS_STRING_MODE,
 | 
						|
 | 
						|
      // comments
 | 
						|
      hljs.C_LINE_COMMENT_MODE,
 | 
						|
      hljs.C_BLOCK_COMMENT_MODE,
 | 
						|
 | 
						|
      // hex colors
 | 
						|
      HEX_COLOR,
 | 
						|
 | 
						|
      // class tag
 | 
						|
      {
 | 
						|
        begin: '\\.[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END,
 | 
						|
        className: 'selector-class'
 | 
						|
      },
 | 
						|
 | 
						|
      // id tag
 | 
						|
      {
 | 
						|
        begin: '\\#[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END,
 | 
						|
        className: 'selector-id'
 | 
						|
      },
 | 
						|
 | 
						|
      // tags
 | 
						|
      {
 | 
						|
        begin: '\\b(' + TAGS.join('|') + ')' + LOOKAHEAD_TAG_END,
 | 
						|
        className: 'selector-tag'
 | 
						|
      },
 | 
						|
 | 
						|
      // psuedo selectors
 | 
						|
      {
 | 
						|
        begin: '&?:?:\\b(' + PSEUDO_SELECTORS.join('|') + ')' + LOOKAHEAD_TAG_END
 | 
						|
      },
 | 
						|
 | 
						|
      // @ keywords
 | 
						|
      {
 | 
						|
        begin: '\@(' + AT_KEYWORDS.join('|') + ')\\b'
 | 
						|
      },
 | 
						|
 | 
						|
      // variables
 | 
						|
      VARIABLE,
 | 
						|
 | 
						|
      // dimension
 | 
						|
      hljs.CSS_NUMBER_MODE,
 | 
						|
 | 
						|
      // number
 | 
						|
      hljs.NUMBER_MODE,
 | 
						|
 | 
						|
      // functions
 | 
						|
      //  - only from beginning of line + whitespace
 | 
						|
      {
 | 
						|
        className: 'function',
 | 
						|
        begin: '^[a-zA-Z][a-zA-Z0-9_\-]*\\(.*\\)',
 | 
						|
        illegal: '[\\n]',
 | 
						|
        returnBegin: true,
 | 
						|
        contains: [
 | 
						|
          {className: 'title', begin: '\\b[a-zA-Z][a-zA-Z0-9_\-]*'},
 | 
						|
          {
 | 
						|
            className: 'params',
 | 
						|
            begin: /\(/,
 | 
						|
            end: /\)/,
 | 
						|
            contains: [
 | 
						|
              HEX_COLOR,
 | 
						|
              VARIABLE,
 | 
						|
              hljs.APOS_STRING_MODE,
 | 
						|
              hljs.CSS_NUMBER_MODE,
 | 
						|
              hljs.NUMBER_MODE,
 | 
						|
              hljs.QUOTE_STRING_MODE
 | 
						|
            ]
 | 
						|
          }
 | 
						|
        ]
 | 
						|
      },
 | 
						|
 | 
						|
      // attributes
 | 
						|
      //  - only from beginning of line + whitespace
 | 
						|
      //  - must have whitespace after it
 | 
						|
      {
 | 
						|
        className: 'attribute',
 | 
						|
        begin: '\\b(' + ATTRIBUTES.reverse().join('|') + ')\\b',
 | 
						|
        starts: {
 | 
						|
          // value container
 | 
						|
          end: /;|$/,
 | 
						|
          contains: [
 | 
						|
            HEX_COLOR,
 | 
						|
            VARIABLE,
 | 
						|
            hljs.APOS_STRING_MODE,
 | 
						|
            hljs.QUOTE_STRING_MODE,
 | 
						|
            hljs.CSS_NUMBER_MODE,
 | 
						|
            hljs.NUMBER_MODE,
 | 
						|
            hljs.C_BLOCK_COMMENT_MODE
 | 
						|
          ],
 | 
						|
          illegal: /\./,
 | 
						|
          relevance: 0
 | 
						|
        }
 | 
						|
      }
 | 
						|
    ]
 | 
						|
  };
 | 
						|
}
 |