class Github::API::Config

A base class for constructing api configuration

Attributes

property_set[R]

Public Class Methods

inherited(descendant) click to toggle source
Calls superclass method
# File lib/github_api/api/config.rb, line 57
def self.inherited(descendant)
  super
  (@subclasses ||= Set.new) << descendant
  descendant.instance_variable_set('@property_set',
    PropertySet.new(descendant, self.property_set.properties.dup))
end
new(&block) click to toggle source
Calls superclass method
# File lib/github_api/api/config.rb, line 64
def initialize(&block)
  super(&block)
end
property(name, options = {}) click to toggle source

Defines a property on an object's class or instance

@example

class Configuration < Api::Config
  property :adapter, default: :net_http
  property :user, required: true
end

@param [Symbol] name

the name of a property

@param [#to_hash] options

the extra options

@return [self]

@api public

# File lib/github_api/api/config.rb, line 27
def self.property(name, options = {})
  self.property_set << Property.new(name, options)
  update_subclasses(name, options)
  self
end
property?(name) click to toggle source

Check if property is defined

@param [Symbol] name

the name to check

@return [Boolean]

@api public

# File lib/github_api/api/config.rb, line 47
def self.property?(name)
  property_set.include?(name)
end
property_names() click to toggle source
# File lib/github_api/api/config.rb, line 72
def self.property_names
  property_set.properties.map(&:name)
end
update_subclasses(name, options) click to toggle source
# File lib/github_api/api/config.rb, line 33
def self.update_subclasses(name, options)
  if defined?(@subclasses) && @subclasses
    @subclasses.each { |klass| klass.property(name, options) }
  end
end

Public Instance Methods

call(&block) click to toggle source

Provide access to properties

@example

config.call do |config|
  config.adapter = :net_http
end

@return [self]

@api private

# File lib/github_api/api/config.rb, line 99
def call(&block)
  block.call(self) if block_given?
  self
end
fetch(value = nil) click to toggle source

Fetach all the properties and their values

@return [Hash]

@api public

# File lib/github_api/api/config.rb, line 81
def fetch(value = nil)
  if value
    self.class.property_set[value]
  else
    self.class.property_set.to_hash
  end
end
property_names() click to toggle source
# File lib/github_api/api/config.rb, line 68
def property_names
  self.class.property_set.properties.map(&:name)
end