def push_script(text, opts = {})
      return if @options.suppress_eval?

      no_format = !(opts[:preserve_script] || opts[:preserve_tag] || opts[:escape_html])

      unless block_given?
        push_generated_script(no_format ? "(#{text}\n).to_s" : build_script_formatter("(#{text}\n)", opts))
        push_text("\n") unless opts[:in_tag] || opts[:nuke_inner_whitespace]
        return
      end

      flush_merged_text
      push_silent "haml_temp = #{text}"
      yield
      push_silent('end', :can_suppress) unless @node.value[:dont_push_end]
      @temple << [:dynamic, no_format ? 'haml_temp.to_s;' : build_script_formatter('haml_temp', opts)]
    end
def push_script(text, opts = {})
      return if @options.suppress_eval?

      no_format = !(opts[:preserve_script] || opts[:preserve_tag] || opts[:escape_html])

      unless block_given?
        push_generated_script(no_format ? "(#{text}\n).to_s" : build_script_formatter("(#{text}\n)", opts))
        push_text("\n") unless opts[:in_tag] || opts[:nuke_inner_whitespace]
        return
      end

      flush_merged_text
      push_silent "haml_temp = #{text}"
      yield
      push_silent('end', :can_suppress) unless @node.value[:dont_push_end]
      @temple << [:dynamic, no_format ? 'haml_temp.to_s;' : build_script_formatter('haml_temp', opts)]
    end
Causes `text` to be evaluated in the context of
 the scope object and the result to be added to `@buffer`.

 If `opts[:preserve_script]` is true, Haml::Helpers#find_and_preserve is run on
 the result before it is added to `@buffer`