diff options
Diffstat (limited to 'node_modules/highlight.js/lib/languages/stylus.js')
-rw-r--r-- | node_modules/highlight.js/lib/languages/stylus.js | 453 |
1 files changed, 453 insertions, 0 deletions
diff --git a/node_modules/highlight.js/lib/languages/stylus.js b/node_modules/highlight.js/lib/languages/stylus.js new file mode 100644 index 000000000..e0e3d379a --- /dev/null +++ b/node_modules/highlight.js/lib/languages/stylus.js @@ -0,0 +1,453 @@ +module.exports = 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 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 { + 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_-]*' + TAG_END, + returnBegin: true, + contains: [ + {className: 'selector-class', begin: '\\.[a-zA-Z][a-zA-Z0-9_-]*'} + ] + }, + + // id tag + { + begin: '\\#[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END, + returnBegin: true, + contains: [ + {className: 'selector-id', begin: '\\#[a-zA-Z][a-zA-Z0-9_-]*'} + ] + }, + + // tags + { + begin: '\\b(' + TAGS.join('|') + ')' + TAG_END, + returnBegin: true, + contains: [ + {className: 'selector-tag', begin: '\\b[a-zA-Z][a-zA-Z0-9_-]*'} + ] + }, + + // psuedo selectors + { + begin: '&?:?:\\b(' + PSEUDO_SELECTORS.join('|') + ')' + 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 + } + } + ] + }; +};
\ No newline at end of file |