def to_s
      description = []
      if block_name
        block_name = self.block_name.to_s
        if block_name.include?(" ")
          block_name = ":\"#{block_name}\""
        else
          block_name = ":#{block_name}"
        end
        description << "Block Name: #{block_name}"
      end

      if render_item.is_a?(String)
        description << "Renders with partial \"#{render_item}\""
      elsif render_item.is_a?(Proc)
        description << "Renders with block defined at #{render_item.source_location}"
      end


      CONTROL_VARIABLES.each do |control_variable, *|
        if value = send(control_variable)
          description << "#{control_variable}: #{value} [#{callers[control_variable]}]"
        end
      end

      description << super
      description.join("\n")
    end
def to_s
      description = []
      if block_name
        block_name = self.block_name.to_s
        if block_name.include?(" ")
          block_name = ":\"#{block_name}\""
        else
          block_name = ":#{block_name}"
        end
        description << "Block Name: #{block_name}"
      end

      if render_item.is_a?(String)
        description << "Renders with partial \"#{render_item}\""
      elsif render_item.is_a?(Proc)
        description << "Renders with block defined at #{render_item.source_location}"
      end


      CONTROL_VARIABLES.each do |control_variable, *|
        if value = send(control_variable)
          description << "#{control_variable}: #{value} [#{callers[control_variable]}]"
        end
      end

      description << super
      description.join("\n")
    end
TODO: this method needs to be rewritten to output a proper hash