Class: Github::API::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/github_api/api/config.rb,
lib/github_api/api/config/property.rb,
lib/github_api/api/config/property_set.rb

Overview

A base class for constructing api configuration

Direct Known Subclasses

Configuration

Defined Under Namespace

Classes: Property, PropertySet

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ Config

Returns a new instance of Config.



64
65
66
# File 'lib/github_api/api/config.rb', line 64

def initialize(&block)
  super(&block)
end

Class Attribute Details

.property_setObject (readonly)

Returns the value of attribute property_set.



52
53
54
# File 'lib/github_api/api/config.rb', line 52

def property_set
  @property_set
end

Class Method Details

.inherited(descendant) ⇒ Object



57
58
59
60
61
62
# 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

.property(name, options = {}) ⇒ self

Defines a property on an object’s class or instance

Examples:

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

Parameters:

  • name (Symbol)

    the name of a property

  • options (#to_hash) (defaults to: {})

    the extra options

Returns:

  • (self)


27
28
29
30
31
# 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) ⇒ Boolean

Check if property is defined

Parameters:

  • name (Symbol)

    the name to check

Returns:

  • (Boolean)


47
48
49
# File 'lib/github_api/api/config.rb', line 47

def self.property?(name)
  property_set.include?(name)
end

.property_namesObject



72
73
74
# File 'lib/github_api/api/config.rb', line 72

def self.property_names
  property_set.properties.map(&:name)
end

.update_subclasses(name, options) ⇒ Object



33
34
35
36
37
# 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

Instance Method Details

#call(&block) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Provide access to properties

Examples:

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

Returns:

  • (self)


99
100
101
102
# File 'lib/github_api/api/config.rb', line 99

def call(&block)
  block.call(self) if block_given?
  self
end

#fetch(value = nil) ⇒ Hash[Symbol]

Fetch all the properties and their values

Returns:



81
82
83
84
85
86
87
# 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_namesObject



68
69
70
# File 'lib/github_api/api/config.rb', line 68

def property_names
  self.class.property_set.properties.map(&:name)
end
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy