Module: Kramdown::Converter::SyntaxHighlighter::TreeSitter

Defined in:
lib/kramdown/converter/syntax_highlighter/tree_sitter.rb,
lib/kramdown/syntax_tree_sitter/version.rb

Overview

This highlighter is not yet fully configured to highlight code.

Currently it merely escapes the code so that it can be safely inserted into HTML text.

Constant Summary collapse

VERSION =

Version of kramdown-syntax_tree_sitter gem

'0.2.0'
DEFAULT_PARSERS_DIR =
'~/tree_sitter_parsers'

Class Method Summary collapse

Class Method Details

.call(converter, raw_text, language, type, _) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/kramdown/converter/syntax_highlighter/tree_sitter.rb', line 16

def self.call(converter, raw_text, language, type, _)
  return nil unless language

  rendered_text = TreeSitterAdapter.highlight(
    raw_text,
    get_parsers_dir(converter),
    language,
    get_use_css_classes(converter)
  )
  # Code blocks are additionally wrapped in HTML code tags
  type == :block ? "<pre><code>#{rendered_text}</code></pre>" : rendered_text
end

.get_option(converter, name) ⇒ Object



39
40
41
# File 'lib/kramdown/converter/syntax_highlighter/tree_sitter.rb', line 39

def self.get_option(converter, name)
  converter.options[:syntax_highlighter_opts][name]
end

.get_parsers_dir(converter) ⇒ Object



29
30
31
32
33
# File 'lib/kramdown/converter/syntax_highlighter/tree_sitter.rb', line 29

def self.get_parsers_dir(converter)
  File.expand_path(
    get_option(converter, :tree_sitter_parsers_dir) || DEFAULT_PARSERS_DIR
  )
end

.get_use_css_classes(converter) ⇒ Object



35
36
37
# File 'lib/kramdown/converter/syntax_highlighter/tree_sitter.rb', line 35

def self.get_use_css_classes(converter)
  get_option(converter, :css_classes) || false
end