class

Obelisk::Lexers::CSS

Inherits Obelisk::RegexLexer < Obelisk::Lexer < Reference < Object

CSS language lexer Optimized for performance using Chroma-like simple patterns

Constants

AT_RULES = /@(charset|namespace|import|font-face|page|media|keyframes|supports|document|viewport|font-feature-values|counter-style|layer|container|scope|starting-style)\b/

At-rules

ATTR_OP = /[~|^$*]?=/

Attribute operators

CLASS_SELECTOR = /\.[a-zA-Z][\w-]*/
COLOR_FUNCTION_CALL = /\b(rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color)\(/

Color functions (matched in root, before generic functions)

COLOR_KEYWORDS = /\b(?:transparent|black|white|red|green|blue|yellow|cyan|magenta|gray|grey|orange|purple|pink|brown|beige|gold|indigo|lime|maroon|navy|olive|teal|violet|turquoise|silver)\b/

Simplified color keywords (most common ones, not all 150+)

COMBINATORS = /[>+~]/

Combinators

COMMA = /,/
COMMENT_END = /\*\//
COMMENT_START = /\/\*/
CSS_KEYWORDS = /\b(?:inherit|initial|unset|auto|none|normal|hidden|visible|scroll|block|inline|flex|grid|absolute|relative|fixed|static|bold|italic|left|right|center|top|bottom)\b/

Common CSS keywords

DOUBLE_QUOTE = /"/

String delimiters

ESCAPE_SEQUENCE = /\\[\\"]|\\./

Escape sequences (shared across string states)

FUNCTION_NAME = /[a-zA-Z-]+(?=\()/

Functions

HEX_COLOR = /#[0-9a-fA-F]{3}(?:[0-9a-fA-F]{3})?(?:[0-9a-fA-F]{2})?\b/

Colors

ID_SELECTOR = /#[a-zA-Z][\w-]*/

Selectors

IMPORTANT_FLAG = /!\s*important\b/

Property values

NUMBER = /-?\d+\.?\d*/

Numbers (simplified - unit is handled separately)

OPERATORS = /[+\-*\/~|^$]?=/

Operators

PROPERTY_NAME = /[a-zA-Z-]+/

Property names

PSEUDO_SELECTOR = /::?[a-zA-Z-]+(?:\([^)]*\))?/
PUNCTUATION = /[;,(){}\[\]]/

Punctuation

SINGLE_QUOTE = /'/
STRING_DOUBLE_CONTENT = /[^"\\]+/

String content patterns

STRING_SINGLE_CONTENT = /[^'\\]+/
TAG_SELECTOR = /[a-zA-Z][\w-]*/
UNIT = /(?:px|em|rem|%|vh|vw|pt|cm|mm|in|pc|ex|ch|vmin|vmax|fr|deg|rad|grad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\b/

Units

UNIVERSAL_SELECTOR = /\*/
URL_FUNCTION = /url\(/
WHITESPACE = /\s+/

Whitespace and comments

Instance methods

analyze(text : String) : Float32

Analyze text to determine if this lexer can handle it Returns a score from 0.0 to 1.0

Source
config
Source
rules
Source