Module: Rewrite::With
- Included in:
- Rewrite
- Defined in:
- lib/rewrite/with.rb
Defined Under Namespace
Modules: ClassMethods, InstanceMethods
Class Method Summary
collapse
Class Method Details
.expand(*sexp_processors, &body) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/rewrite/with.rb', line 15
def self.expand(*sexp_processors, &body)
rewritten = sexp_processors.flatten.inject(body.to_sexp.last) { |sexp, sexp_processor_parameter|
if sexp_processor_parameter.respond_to?(:new) && sexp_processor_parameter.kind_of?(Class)
sexp_processor = sexp_processor_parameter.new
else
sexp_processor = sexp_processor_parameter
end
sexp_processor.process(sexp)
}
rewritten = eval(rewritten.to_s) Ruby2Ruby.new.process(rewritten)
end
|
.included(receiver) ⇒ Object
48
49
50
51
|
# File 'lib/rewrite/with.rb', line 48
def self.included(receiver)
receiver.extend ClassMethods
receiver.send :include, InstanceMethods
end
|
.with(*sexp_processors, &body) ⇒ Object
10
11
12
13
|
# File 'lib/rewrite/with.rb', line 10
def self.with(*sexp_processors, &body)
ruby = expand(*sexp_processors, &body)
eval(ruby, body.binding())
end
|