Class: Transpec::BaseRewriter
- Inherits:
-
Object
- Object
- Transpec::BaseRewriter
show all
- Defined in:
- lib/transpec/base_rewriter.rb
Defined Under Namespace
Classes: OverlappedRewriteError
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.create_source_rewriter(processed_source) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/transpec/base_rewriter.rb', line 7
def self.create_source_rewriter(processed_source)
source_rewriter = Parser::Source::TreeRewriter.new(
processed_source.buffer,
different_replacements: :warn,
swallowed_insertions: :warn
)
source_rewriter.diagnostics.consumer = proc do |diagnostic|
fail OverlappedRewriteError, diagnostic.render.join("\n")
end
source_rewriter
end
|
Instance Method Details
#rewrite(processed_source) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/transpec/base_rewriter.rb', line 43
def rewrite(processed_source)
fail processed_source.error if processed_source.error
source_rewriter = self.class.create_source_rewriter(processed_source)
incomplete = false
begin
process(processed_source.ast, source_rewriter)
rescue OverlappedRewriteError
incomplete = true
end
rewritten_source = source_rewriter.process
rewritten_source = rewrite_source(rewritten_source, processed_source.path) if incomplete
rewritten_source
end
|
#rewrite_file!(arg) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/transpec/base_rewriter.rb', line 24
def rewrite_file!(arg)
processed_source = case arg
when String then ProcessedSource.from_file(arg)
when ProcessedSource then arg
else fail "Invalid argument: #{arg}"
end
fail 'ProcessedSource must be derived from a file' unless processed_source.path
rewritten_source = rewrite(processed_source)
return if processed_source.to_s == rewritten_source
File.write(processed_source.path, rewritten_source)
end
|
#rewrite_source(source, path = nil) ⇒ Object
38
39
40
41
|
# File 'lib/transpec/base_rewriter.rb', line 38
def rewrite_source(source, path = nil)
processed_source = ProcessedSource.new(source, path)
rewrite(processed_source)
end
|