Skip to content

Commit

Permalink
Showing 1 changed file with 36 additions and 9 deletions.
45 changes: 36 additions & 9 deletions src/compiler/crystal/tools/doc/highlighter.cr
Original file line number Diff line number Diff line change
@@ -42,6 +42,8 @@ module Crystal::Doc::Highlighter
highlight token, "t", io
when :DELIMITER_START
highlight_delimiter_state lexer, token, io
when :STRING_ARRAY_START, :SYMBOL_ARRAY_START
highlight_string_array lexer, token, io
when :EOF
break
when :IDENT
@@ -83,7 +85,7 @@ module Crystal::Doc::Highlighter
end

private def highlight_delimiter_state(lexer, token, io)
start_highlight_klass "s", io
start_highlight_class "s", io

HTML.escape(token.raw, io)

@@ -92,14 +94,14 @@ module Crystal::Doc::Highlighter
case token.type
when :DELIMITER_END
HTML.escape(token.raw, io)
end_highlight_klass io
end_highlight_class io
break
when :INTERPOLATION_START
end_highlight_klass io
end_highlight_class io
highlight "\#{", "i", io
end_highlight_klass io
end_highlight_class io
highlight_normal_state lexer, io, break_on_rcurly: true
start_highlight_klass "s", io
start_highlight_class "s", io
highlight "}", "i", io
when :EOF
break
@@ -109,19 +111,44 @@ module Crystal::Doc::Highlighter
end
end

private def highlight_string_array(lexer, token, io)
start_highlight_class "s", io
if token.type == :STRING_ARRAY_START
io << "%w("
else
io << "%i("
end
first = true
while true
lexer.next_string_array_token
case token.type
when :STRING
io << " " unless first
io << token.value
first = false
when :STRING_ARRAY_END
io << ")"
end_highlight_class io
break
when :EOF
raise "Unterminated symbol array literal"
end
end
end

private def highlight(token, klass, io)
start_highlight_klass klass, io
start_highlight_class klass, io
io << token
end_highlight_klass io
end_highlight_class io
end

private def start_highlight_klass(klass, io)
private def start_highlight_class(klass, io)
io << %(<span class=")
io << klass
io << %(">)
end

private def end_highlight_klass(io)
private def end_highlight_class(io)
io << %(</span>)
end
end

0 comments on commit b7e792e

Please sign in to comment.