module

Obelisk::Lexers::HTMLPatterns

========================================================================== HTML Lexer Pattern Constants All patterns are defined as constants to avoid recompilation and enable reuse

Constants

ATTR_DOUBLE_AMP = /[&]/
ATTR_DOUBLE_CONTENT = /[^"&]+/

Attribute value content

ATTR_DOUBLE_QUOTE = /"/
ATTR_NAME = /[a-zA-Z][a-zA-Z0-9:\-]*/

Attribute patterns

ATTR_NAME_WITH_VALUE = /([a-zA-Z][a-zA-Z0-9:\-]*)(\s*)(=)/
ATTR_SINGLE_AMP = /[&]/
ATTR_SINGLE_CONTENT = /[^'&]+/
ATTR_SINGLE_QUOTE = /'/
ATTR_UNQUOTED_VALUE = /[^\s>]+/
BODY_TAG = /<body[^>]*>/i
CDATA_BRACKET = /\]/
CDATA_CONTENT = /[^\]]+/
CDATA_END = /\]\]>/
CDATA_START = /<!\[CDATA\[/
COMMENT_CONTENT = /[^-]+/
COMMENT_END = /-->/
COMMENT_HYPHEN = /-/
COMMENT_HYPHENS = /-+(?!->)/
COMMENT_START = /<!--/
COMMON_TAGS = /<(div|span|p|a|img|h[1-6]|ul|ol|li|table|tr|td|th)[^>]*>/i
DOCTYPE = /<!DOCTYPE[^>]+>/
DOCTYPE_ANALYSIS = /<!DOCTYPE\s+html/i

Analysis patterns

ENTITY_DECIMAL = /#\d+;/
ENTITY_HEXADECIMAL = /#x[0-9a-fA-F]+;/
ENTITY_NAMED = /[a-zA-Z]+;/

HTML entities (used across multiple states)

ENTITY_PREFIX = /&/
HEAD_TAG = /<head[^>]*>/i
HTML_TAG_OPEN = /<html[^>]*>/i
META_TAG = /<meta[^>]*>/i
PROCESSING_INSTRUCTION = /<\?.*?\?>/
SCRIPT_SRC_ATTR = /\ssrc\s*=/
SCRIPT_TAG_END = /<\/script\s*>/i
SCRIPT_TAG_START = /<script[^>]*>/i
STYLE_TAG_END = /<\/style\s*>/i
STYLE_TAG_START = /<style[^>]*>/i

Region detector patterns

TAG_CLOSE = /<\/([a-zA-Z][a-zA-Z0-9:\-]*)(\s*)(>)/

Tags

TAG_END = />/
TAG_OPEN = /<([a-zA-Z][a-zA-Z0-9:\-]*)/
TAG_SELF_CLOSE = /\/>/
TEXT_CONTENT = /[^<&]+/

Content patterns

TEXT_SPECIAL = /[<&]/
TITLE_TAG = /<title[^>]*>/i
WHITESPACE = /\s+/

Common patterns