Class: GH::Wrapper
- Inherits:
-
Object
- Object
- GH::Wrapper
- Extended by:
- Forwardable
- Includes:
- Case
- Defined in:
- lib/gh/wrapper.rb
Overview
Public: Simple base class for low level layers. Handy if you want to manipulate resources coming in from Github.
Examples
class IndifferentAccess
def [](key) super.tap { |r| r.data.with_indifferent_access! } end
end
gh = IndifferentAccess.new
gh['users/rkh'][:name] # => "Konstantin Haase"
# easy to use in the low level stack
gh = Github.build do
use GH::Cache
use IndifferentAccess
use GH::Normalizer
end
Direct Known Subclasses
Cache, CustomLimit, Instrumentation, LazyLoader, LinkFollower, MergeCommit, NestedResources, Normalizer, Pagination, Parallel, Remote, TokenCheck
Instance Attribute Summary collapse
-
#backend ⇒ Object
Public: Get wrapped layer.
-
#options ⇒ Object
readonly
Public: …
Class Method Summary collapse
-
.[](key) ⇒ Object
Public: Retrieves resources from Github.
-
.wraps(klass = nil) ⇒ Object
Internal: Get/set default layer to wrap when creating a new instance.
Instance Method Summary collapse
-
#[](key) ⇒ Object
Public: Retrieves resources from Github.
-
#frontend ⇒ Object
Internal: …
-
#frontend=(value) ⇒ Object
Internal: …
-
#generate_response(key, resource) ⇒ Object
Internal: …
-
#initialize(backend = nil, options = {}) ⇒ Wrapper
constructor
Public: Initialize a new Wrapper.
-
#inspect ⇒ Object
Public: …
-
#load(data) ⇒ Object
Public: …
-
#prefixed(key) ⇒ Object
Internal: …
-
#reset ⇒ Object
Public: …
Constructor Details
#initialize(backend = nil, options = {}) ⇒ Wrapper
Public: Initialize a new Wrapper.
backend - layer to be wrapped options - config options
100 101 102 103 104 |
# File 'lib/gh/wrapper.rb', line 100 def initialize(backend = nil, = {}) backend, @options = (backend, ) @options.each_pair { |key, value| public_send("#{key}=", value) if respond_to? "#{key}=" } setup(backend, @options) end |
Instance Attribute Details
#backend ⇒ Object
Public: Get wrapped layer.
28 29 30 |
# File 'lib/gh/wrapper.rb', line 28 def backend @backend end |
#options ⇒ Object (readonly)
Public: …
31 32 33 |
# File 'lib/gh/wrapper.rb', line 31 def @options end |
Class Method Details
.[](key) ⇒ Object
Public: Retrieves resources from Github.
73 74 75 |
# File 'lib/gh/wrapper.rb', line 73 def self.[](key) new[key] end |
.wraps(klass = nil) ⇒ Object
Internal: Get/set default layer to wrap when creating a new instance.
91 92 93 94 |
# File 'lib/gh/wrapper.rb', line 91 def self.wraps(klass = nil) @wraps = klass if klass @wraps ||= Remote end |
Instance Method Details
#[](key) ⇒ Object
Public: Retrieves resources from Github.
By default, this method is delegated to the next layer on the stack and modify is called.
81 82 83 |
# File 'lib/gh/wrapper.rb', line 81 def [](key) generate_response key, fetch_resource(key) end |
#frontend ⇒ Object
Internal: …
119 120 121 |
# File 'lib/gh/wrapper.rb', line 119 def frontend @frontend ? @frontend.frontend : self end |
#frontend=(value) ⇒ Object
Internal: …
114 115 116 |
# File 'lib/gh/wrapper.rb', line 114 def frontend=(value) @frontend = value end |
#generate_response(key, resource) ⇒ Object
Internal: …
86 87 88 |
# File 'lib/gh/wrapper.rb', line 86 def generate_response(key, resource) modify backend.generate_response(key, resource) end |
#inspect ⇒ Object
Public: …
124 125 126 |
# File 'lib/gh/wrapper.rb', line 124 def inspect "#<#{self.class}: #{backend.inspect}>" end |
#load(data) ⇒ Object
Public: …
139 140 141 |
# File 'lib/gh/wrapper.rb', line 139 def load(data) modify backend.load(data) end |
#prefixed(key) ⇒ Object
Internal: …
129 130 131 |
# File 'lib/gh/wrapper.rb', line 129 def prefixed(key) prefix + "#" + identifier(key) end |
#reset ⇒ Object
Public: …
134 135 136 |
# File 'lib/gh/wrapper.rb', line 134 def reset backend.reset if backend end |