module HtmlToHaml module Erb class IndentationTracker attr_accessor :indentation_level attr_reader :indentation_amount, :case_statement_level def initialize(indentation_level:, indentation_amount:) @indentation_level = indentation_level @indentation_amount = indentation_amount @case_statement_level = [] end def begin_case_statement self.indentation_level += indentation_amount * 2 case_statement_level << indentation_level end def add_indentation self.indentation_level += indentation_amount end def end_block if indentation_level == @case_statement_level.last case_statement_level.pop self.indentation_level -= indentation_amount * 2 else self.indentation_level -= indentation_amount end end # I may allow people to use this for nested case statements, # but reserve the right to be snarky about it when they do. def nested_case_statement? case_statement_level.length > 1 end end end end