diff --git a/lib/ruby_ast_gen/erb_to_ruby_transformer.rb b/lib/ruby_ast_gen/erb_to_ruby_transformer.rb index 7d35189..4d20d83 100644 --- a/lib/ruby_ast_gen/erb_to_ruby_transformer.rb +++ b/lib/ruby_ast_gen/erb_to_ruby_transformer.rb @@ -5,10 +5,12 @@ class ErbToRubyTransformer def initialize @parser = Temple::ERB::Parser.new @in_control_block = false - @output_tmp_var = "self.joern__buffer" - @output_tmp_append_func = "self.joern__buffer_append" + @output_tmp_var = "self.joernBuffer" + @output_tmp_append_func = "self.joernBufferAppend" + @joern_template_out_raw = "joernTemplateOutRaw" + @joern_template_out_escape = "joernTemplateOutEscape" @in_do_block = false - @inner_buffer = "joern__inner_buffer" + @inner_buffer = "joernInnerBuffer" @current_counter = 0 @current_lambda_vars = "" @output = [] @@ -59,9 +61,9 @@ def visit(node) when :if if code.strip.start_with?("if") || code.strip.start_with?("unless") template_call = if escape_enabled - "joern__template_out_raw" + @joern_template_out_raw else - "joern__template_out_escape" + @joern_template_out_escape end if_cond = extract_code_snippet(ast.children[0].location, code) @@ -81,18 +83,18 @@ def visit(node) @output << "unless #{if_cond}" end template_call = if escape_enabled - "joern__template_out_raw" + @joern_template_out_raw else - "joern__template_out_escape" + @joern_template_out_escape end @output << "#{@output_tmp_append_func}(#{@output_tmp_var}, #{template_call}(#{call}))" end @output << "end" else template_call = if escape_enabled then - "joern__template_out_raw" + @joern_template_out_raw else - "joern__template_out_escape" + @joern_template_out_escape end @output << "#{@output_tmp_append_func}(#{@inner_buffer}, #{template_call}(#{code}))" end @@ -102,16 +104,16 @@ def visit(node) lower_do_block(code) elsif @in_do_block template_call = if escape_enabled then - "joern__template_out_raw" + @joern_template_out_raw else - "joern__template_out_escape" + @joern_template_out_escape end @output << "#{@output_tmp_append_func}(#{@inner_buffer}, #{template_call}(#{code}))" else template_call = if escape_enabled then - "joern__template_out_raw" + @joern_template_out_raw else - "joern__template_out_escape" + @joern_template_out_escape end @output << "#{@output_tmp_append_func}(#{@output_tmp_var}, #{template_call}(#{code}))" end diff --git a/spec/ruby_ast_gen_spec.rb b/spec/ruby_ast_gen_spec.rb index 0b2beb6..f10e915 100644 --- a/spec/ruby_ast_gen_spec.rb +++ b/spec/ruby_ast_gen_spec.rb @@ -162,14 +162,14 @@ def foo(a, bar: "default") file_content = File.read(temp_erb_file.path) code = RubyAstGen::get_erb_content(file_content) expected = <<-HEREDOC -self.joern__buffer = "" -self.joern__buffer_append(self.joern__buffer, form_with(url: some_url)) +self.joernBuffer = "" +self.joernBufferAppend(self.joernBuffer, form_with(url: some_url)) rails_lambda_0 = lambda do |form| -joern__inner_buffer = "" -self.joern__buffer_append(joern__inner_buffer, joern__template_out_escape( form.text_field :name )) -joern__inner_buffer +joernInnerBuffer = "" +self.joernBufferAppend(joernInnerBuffer, joernTemplateOutEscape( form.text_field :name )) +joernInnerBuffer end -self.joern__buffer_append(self.joern__buffer, rails_lambda_0.call(form)) +self.joernBufferAppend(self.joernBuffer, rails_lambda_0.call(form)) HEREDOC expect(code).to eq(expected) end