Module: Laurel
- Defined in:
- lib/laurel.rb,
lib/laurel/proxy.rb,
lib/laurel/version.rb,
lib/laurel/operator.rb,
lib/laurel/core_refine.rb
Defined Under Namespace
Modules: Operator, Refine
Classes: Proxy
Constant Summary
collapse
- VERSION =
"0.1.0"
Class Method Summary
collapse
Class Method Details
.and(a, b) ⇒ Object
8
9
10
11
12
13
|
# File 'lib/laurel.rb', line 8
def and a, b
Laurel.proxy([:==, :!=, :!]) { |name, *args, &block|
a.__send__(name, *args, &block) \
&& b.__send__(name, *args, &block)
}
end
|
.not(a) ⇒ Object
24
25
26
27
28
|
# File 'lib/laurel.rb', line 24
def not a
Laurel.proxy([:==, :!=, :!]) { |name, *args, &block|
!a.__send__(name, *args, &block)
}
end
|
.or(a, b) ⇒ Object
16
17
18
19
20
21
|
# File 'lib/laurel.rb', line 16
def or a, b
Laurel.proxy([:==, :!=, :!]) { |name, *args, &block|
a.__send__(name, *args, &block) \
|| b.__send__(name, *args, &block)
}
end
|
.proxy(ignores = [], &block) ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/laurel/proxy.rb', line 13
def proxy ignores = [], &block
Class.new(Laurel::Proxy) {
def initialize &block
super &block
end
ignores.each { |name|
define_method(name){ |*args, &block|
method_missing name, *args, &block
}
}
}.new(&block)
end
|
.proxy_all(&block) ⇒ Object
27
28
29
|
# File 'lib/laurel/proxy.rb', line 27
def proxy_all &block
Laurel.proxy BasicObject.instance_methods, &block
end
|