Class: Transpec::BaseRewriter

Inherits:
Object
  • Object
show all
Defined in:
lib/transpec/base_rewriter.rb

Direct Known Subclasses

Converter, DynamicAnalyzer::Rewriter

Defined Under Namespace

Classes: OverlappedRewriteError

Instance Method Summary collapse

Instance Method Details

#rewrite(processed_source) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/transpec/base_rewriter.rb', line 26

def rewrite(processed_source)
  fail processed_source.error if processed_source.error

  source_rewriter = 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



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/transpec/base_rewriter.rb', line 7

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



21
22
23
24
# File 'lib/transpec/base_rewriter.rb', line 21

def rewrite_source(source, path = nil)
  processed_source = ProcessedSource.new(source, path)
  rewrite(processed_source)
end