module DeadCodeTerminator

Constants

VERSION

Public Class Methods

on_node(node) { |node| ... } click to toggle source
# File lib/dead_code_terminator.rb, line 31
def self.on_node(node, &block)
  Array(yield(node)) + node.children.flat_map do |elem|
    on_node(elem, &block) if elem.is_a?(Parser::AST::Node)
  end.compact
end
rewrite(buffer, replaces) click to toggle source
# File lib/dead_code_terminator.rb, line 23
def self.rewrite(buffer, replaces)
  Parser::Source::TreeRewriter.new(buffer).tap do |rewriter|
    replaces.each do |replace|
      rewriter.replace(*replace)
    end
  end.process
end
strip(io, env: {}) click to toggle source
# File lib/dead_code_terminator.rb, line 15
def self.strip(io, env: {})
  replaces = on_node(Parser::CurrentRuby.parse(io)) do |ast|
    Ast.new(env: env, ast: ast).process if ast.type == :if
  end

  rewrite(Parser::Source::Buffer.new("buffer-or-filename", source: io), replaces)
end