module Ariadne::Static::GenerateStructure
def find_fenced_code_ranges_in(str)
def find_fenced_code_ranges_in(str) doc = Kramdown::Document.new(str) line_starts = find_line_starts_in(str) [].tap do |code_ranges| each_codespan_in(doc.root) do |node| options = node.options delimiter = options[:codespan_delimiter] next unless delimiter.start_with?("```") start_pos = line_starts[options[:location]] end_pos = start_pos + node.value.size + delimiter.size end_pos = str.index("```", end_pos) + 3 code_ranges << (start_pos...end_pos) end end end