Sha256: 5ee39359521fe387d28a9d0107360dae857153931f9a51ca73be1cd4c9353237

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
html-to-haml-0.0.6 lib/html_to_haml/tools/erb/indentation_tracker.rb
html-to-haml-0.0.5 lib/html_to_haml/tools/erb/indentation_tracker.rb