class RubyLex
def calc_indent_level(opens)
def calc_indent_level(opens) indent_level = 0 opens.each_with_index do |t, index| case t.event when :on_heredoc_beg if opens[index + 1]&.event != :on_heredoc_beg if t.tok.match?(/^<<[~-]/) indent_level += 1 else indent_level = 0 end end when :on_tstring_beg, :on_regexp_beg, :on_symbeg, :on_backtick # can be indented if t.tok starts with `%` when :on_words_beg, :on_qwords_beg, :on_symbols_beg, :on_qsymbols_beg, :on_embexpr_beg # can be indented but not indented in current implementation when :on_embdoc_beg indent_level = 0 else indent_level += 1 end end indent_level end