Module: DataProvider::Base::InstanceMethods

Defined in:
lib/data_provider/base.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



150
151
152
# File 'lib/data_provider/base.rb', line 150

def options
  @options
end

Instance Method Details

#add(_module) ⇒ Object



172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/data_provider/base.rb', line 172

def add _module
  if _module.is_a?(DataProvider::Container)
    _dpc = _module
  else
    _dpc = _module.dpc
    self.class.include _module # todo: make optional?
  end

  self.class.new(options.merge({
    :data => nil,
    :dpc => dpc.add(_dpc)
  }))
end

#add!(_module) ⇒ Object



207
208
209
210
211
212
213
214
215
216
# File 'lib/data_provider/base.rb', line 207

def add! _module
  if _module.is_a?(DataProvider::Container)
    dpc.add!(_module)
  else
    dpc.add!(_module.dpc)
    self.class.include _module
  end
  
  return self
end

#add_scoped(_module, options = {}) ⇒ Object



186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/data_provider/base.rb', line 186

def add_scoped _module, options = {}
  if _module.is_a?(DataProvider::Container)
    _dpc = _module
  else
    _dpc = _module.dpc
    self.class.include _module # todo: make optional?
  end

  self.class.new(options.merge({
    :data => nil,
    :dpc => dpc.add_scoped(_dpc, :scope => options[:scope])
  }))
end

#add_scoped!(_module, options = {}) ⇒ Object



218
219
220
221
222
223
224
225
226
227
# File 'lib/data_provider/base.rb', line 218

def add_scoped! _module, options = {}
  if _module.is_a?(DataProvider::Container)
    dpc.add_scoped!(_module, options) 
  else
    dpc.add_scoped! _module.dpc, options
    self.class.include _module
  end
  
  return self
end

#data_provider_containerObject Also known as: dpc



163
164
165
166
167
168
# File 'lib/data_provider/base.rb', line 163

def data_provider_container
  @data_provider_container ||= options[:dpc] || DataProvider::Container.new.tap do |c|
    # automatically adopt all class-level providers/provides/data
    c.add! self.class.dpc
  end
end

#give(*args) ⇒ Object Also known as: add_scope, add_data



200
201
202
# File 'lib/data_provider/base.rb', line 200

def give *args
  self.class.new(options.merge(:data => nil, :dpc => self.dpc.give(*args)))
end

#initialize(opts = {}) ⇒ Object



152
153
154
155
# File 'lib/data_provider/base.rb', line 152

def initialize(opts = {})
  @options = opts.is_a?(Hash) ? opts : {}
  dpc.give!(options[:data]) if options[:data].is_a?(Hash)
end

#loggerObject



157
158
159
160
161
# File 'lib/data_provider/base.rb', line 157

def logger
  @logger ||= options[:logger] || Logger.new(STDOUT).tap do |lger|
    lger.level = Logger::WARN
  end
end