class Opal::Rewriter

def delete(rewriter)

def delete(rewriter)
  list.delete(rewriter)
end

def disable(except: nil)

def disable(except: nil)
  old_disabled = @disabled
  @disabled = except || true
  yield
ensure
  @disabled = old_disabled
end

def disabled?

def disabled?
  @disabled == true
end

def initialize(sexp)

def initialize(sexp)
  @sexp = sexp
end

def list

def list
  @list ||= []
end

def process

def process
  return @sexp if self.class.disabled?
  self.class.list.each do |rewriter_class|
    next if self.class.rewritter_disabled?(rewriter_class)
    rewriter = rewriter_class.new
    @sexp = rewriter.process(@sexp)
  end
  @sexp
end

def rewritter_disabled?(rewriter)

def rewritter_disabled?(rewriter)
  return false if @disabled == false
  @disabled != rewriter
end

def use(rewriter)

def use(rewriter)
  list << rewriter
end