Class: Sourcerer::MarkDownGrade::CustomPre
- Inherits:
-
ReverseMarkdown::Converters::Pre
- Object
- ReverseMarkdown::Converters::Pre
- Sourcerer::MarkDownGrade::CustomPre
- Defined in:
- lib/sourcerer/mark_down_grade.rb
Overview
Enhanced Pre converter to handle additional code block language patterns
Constant Summary collapse
- MAP =
{ 'rb' => 'ruby', 'yml' => 'yaml', 'js' => 'javascript', 'ts' => 'typescript', 'sh' => 'bash', 'zsh' => 'bash', 'bash' => 'bash', 'json' => 'json', 'yaml' => 'yaml', 'md' => 'markdown' }.freeze
Instance Method Summary collapse
Instance Method Details
#language(node) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/sourcerer/mark_down_grade.rb', line 67 def language node # Parent handles highlight-*, brush:, etc. lang = super return normalize(lang) if lang candidates = [] # 1) Inspect this <pre> and its <code> child code_child = node.at_css('code') [node, code_child].compact.each do |ele| collect_lang_hints(ele, candidates) end # 2) Inspect ancestors up to two levels (e.g., listingblock containers) node.ancestors.take(3).each do |anc| collect_lang_hints(anc, candidates) end candidates.compact! candidates.map! { |c| normalize(c) } candidates.find { |c| c } # first normalized non-nil end |