Module: Musashi::Retriever::VisitorStrategist
Instance Attribute Summary
Attributes included from Connection
#endpoint, #format
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Strategist
define, #define, define_by_behavior, define_by_name, retrievers_by_behavior, retrievers_by_behavior=, retrievers_by_name, retrievers_by_name=
Methods included from Base
#retrieve, #retrieved?
Methods included from Connection
#accept, #connection, #options
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/musashi/retriever.rb', line 109
def method_missing(sym,*args,&block)
super unless args.empty?
super unless has_key?(sym)
value = self.fetch(sym.to_s) rescue self.fetch(sym) rescue nil
return value if value.nil?
define value, sym
value
end
|
Class Method Details
.extend?(receiver) ⇒ Boolean
82
83
84
85
|
# File 'lib/musashi/retriever.rb', line 82
def self.extend?(receiver)
!receiver.nil? && receiver.respond_to?(:keys) && \
receiver.respond_to?(:fetch) && !receiver.is_a?(VisitorStrategist)
end
|
.extend_object(receiver) ⇒ Object
87
88
89
90
91
|
# File 'lib/musashi/retriever.rb', line 87
def self.extend_object(receiver)
return if receiver.is_a?(VisitorStrategist)
raise RuntimeError.new unless VisitorStrategist.extend? receiver
super
end
|
Instance Method Details
#[](key) ⇒ Object
93
94
95
96
97
98
99
|
# File 'lib/musashi/retriever.rb', line 93
def [](key)
return nil unless self.has_key?(key)
value = self.fetch(key.to_s) rescue self.fetch(key) rescue nil
return value if value.nil?
define value,key.to_sym
value
end
|
#has_key?(key) ⇒ Boolean
101
102
103
|
# File 'lib/musashi/retriever.rb', line 101
def has_key?(key)
self.key?(key.to_s) || self.key?(key)
end
|
#respond_to?(method) ⇒ Boolean
105
106
107
|
# File 'lib/musashi/retriever.rb', line 105
def respond_to?(method)
self.has_key?(method) ? true : super
end
|