class HtmlToHaml::Erb::BasicConversionUseCase

Public Class Methods

new(erb) click to toggle source
# File lib/html_to_haml/use_cases/erb/basic_conversion_use_case.rb, line 9
def initialize(erb)
  @erb = erb
end

Public Instance Methods

convert() click to toggle source
# File lib/html_to_haml/use_cases/erb/basic_conversion_use_case.rb, line 13
def convert
  sanitized_erb = remove_newlines_within_erb_statements(erb: @erb)
  erb = convert_syntax(erb: sanitized_erb)
  haml = convert_indentation(erb: erb)
  remove_haml_whitespace(haml: haml)
end

Private Instance Methods

convert_indentation(erb:) click to toggle source
# File lib/html_to_haml/use_cases/erb/basic_conversion_use_case.rb, line 35
def convert_indentation(erb:)
  IndentationConversionUseCase.instance.convert_indentation(erb: erb)
end
convert_syntax(erb:) click to toggle source
# File lib/html_to_haml/use_cases/erb/basic_conversion_use_case.rb, line 28
def convert_syntax(erb:)
  erb.gsub(/\s*?\n?(<%=|<%-|<%)\s?/) do |erb_selector|
    erb_selector_index = erb_selector =~ /-|=/
    erb_selector_index ? "\n#{erb_selector[erb_selector_index]} " : "\n- "
  end.gsub(/\s?(-%>|%>)/, "\n")
end
remove_newlines_within_erb_statements(erb:) click to toggle source
# File lib/html_to_haml/use_cases/erb/basic_conversion_use_case.rb, line 22
def remove_newlines_within_erb_statements(erb:)
  erb.gsub(/<%(.*?)\n(.*?)%>/) do |erb_statement|
    erb_statement.gsub("\n", " ")
  end
end