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 to determine if this lexer can handle it Returns a score from 0.0 to 1.0
config
Sourcerules
Source