Class: SimpleMasker
- Inherits:
-
Object
- Object
- SimpleMasker
- Extended by:
- Forwardable
- Defined in:
- lib/simple-masker.rb
Overview
A simple implementation of a presenter / masker pattern. Acts like a SimpleDelegator implementing a decorator pattern except that it hides the object’s methods instead of delegating them by default. Useful for hiding the ugly beast behind the mask.
Usage:
require "simple-masker"
class Beast
def presentable
puts "eyes, nose, mouth"
end
def ugly
puts "furry face"
end
end
class MaskedMan < SimpleMasker
masks :beast
reveal_method :presentable
def decoration
puts "sparkles"
end
end
beast = Beast.new
masked_man = MaskedMan.new( beast )
beast.respond_to? :presentable # => true
beast.respond_to? :ugly # => true
masked_man.respond_to? :presentable # => true
masked_man.respond_to? :ugly # => false
masked_man.respond_to? :decoration # => true
Class Method Summary collapse
-
.masks(masked_name) ⇒ Object
Names the beast behind the mask.
-
.reveal_method(*method_names) ⇒ Object
Reveals the specified method(s).
Instance Method Summary collapse
-
#initialize(object) ⇒ SimpleMasker
constructor
A new instance of SimpleMasker.
Constructor Details
#initialize(object) ⇒ SimpleMasker
Returns a new instance of SimpleMasker.
44 45 46 |
# File 'lib/simple-masker.rb', line 44 def initialize(object) _set_masked_object object end |
Class Method Details
.masks(masked_name) ⇒ Object
Names the beast behind the mask
49 50 51 |
# File 'lib/simple-masker.rb', line 49 def self.masks(masked_name) define_method(masked_name){ _get_masked_object } end |
.reveal_method(*method_names) ⇒ Object
Reveals the specified method(s)
54 55 56 |
# File 'lib/simple-masker.rb', line 54 def self.reveal_method(*method_names) def_delegators :_get_masked_object, *method_names end |