Class: ZombieKiller
- Inherits:
-
Object
- Object
- ZombieKiller
- Defined in:
- lib/zombie_killer/killer.rb,
lib/zombie_killer/version.rb
Overview
The main class called from the CLI
Constant Summary collapse
- VERSION =
"0.4".freeze
Instance Attribute Summary collapse
-
#eager ⇒ Boolean
readonly
Use the EagerRewriter.
Instance Method Summary collapse
-
#initialize(eager: false) ⇒ ZombieKiller
constructor
A new instance of ZombieKiller.
- #kill_file(filename, new_filename, unsafe: false) ⇒ Object
- #kill_string(code, filename = "(inline code)", unsafe: false) ⇒ Object (also: #kill)
Constructor Details
#initialize(eager: false) ⇒ ZombieKiller
Returns a new instance of ZombieKiller.
12 13 14 |
# File 'lib/zombie_killer/killer.rb', line 12 def initialize(eager: false) @eager = eager end |
Instance Attribute Details
#eager ⇒ Boolean (readonly)
Returns use the EagerRewriter.
10 11 12 |
# File 'lib/zombie_killer/killer.rb', line 10 def eager @eager end |
Instance Method Details
#kill_file(filename, new_filename, unsafe: false) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/zombie_killer/killer.rb', line 37 def kill_file(filename, new_filename, unsafe: false) new_string = kill_string(File.read(filename), filename, unsafe: unsafe) File.write(new_filename, new_string) rescue puts "While processing #{filename}" raise end |
#kill_string(code, filename = "(inline code)", unsafe: false) ⇒ Object Also known as: kill
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/zombie_killer/killer.rb', line 19 def kill_string(code, filename = "(inline code)", unsafe: false) fixed_point(code) do |c| parser = Parser::CurrentRuby.new rewriter = eager ? EagerRewriter.new : ZombieKillerRewriter.new(unsafe: unsafe) buffer = Parser::Source::Buffer.new(filename) buffer.source = c ast = parser.parse(buffer) if ast rewriter.rewrite(buffer, ast) else puts "Parse error for '#{filename}', returning it unchanged" return code end end end |