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