Class: Github::API::Config::PropertySet

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

Overview

Class responsible for storing configuration properties

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent = nil, properties = Set.new) ⇒ undefined

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.

Initialize an PropertySet

Parameters:

  • parent (Object) (defaults to: nil)
  • properties (Set) (defaults to: Set.new)


24
25
26
27
28
# File 'lib/github_api/api/config/property_set.rb', line 24

def initialize(parent = nil, properties = Set.new)
  @parent = parent
  @properties = properties
  @map = {}
end

Instance Attribute Details

#parentObject (readonly)

Returns the value of attribute parent.



12
13
14
# File 'lib/github_api/api/config/property_set.rb', line 12

def parent
  @parent
end

#propertiesObject (readonly)

Returns the value of attribute properties.



14
15
16
# File 'lib/github_api/api/config/property_set.rb', line 14

def properties
  @properties
end

Instance Method Details

#<<(property) ⇒ self

Adds property to the set

Examples:

properties_set << property

Parameters:

Returns:

  • (self)


55
56
57
58
59
60
# File 'lib/github_api/api/config/property_set.rb', line 55

def <<(property)
  properties << property
  update_map(property.name, property.default)
  property.define_accessor_methods(self)
  self
end

#[](name) ⇒ Object Also known as: fetch

Access property by name



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

def [](name)
  @map[name]
end

#[]=(name, property) ⇒ Object

Set property value by name



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

def []=(name, property)
  update_map(name, property)
end

#define_reader_method(property, method_name, visibility) ⇒ Object

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.



103
104
105
106
107
# File 'lib/github_api/api/config/property_set.rb', line 103

def define_reader_method(property, method_name, visibility)
  property_set = self
  parent.send(:define_method, method_name) { property_set[property.name] }
  parent.send(visibility, method_name)
end

#define_writer_method(property, method_name, visibility) ⇒ Object

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.



110
111
112
113
114
115
116
# File 'lib/github_api/api/config/property_set.rb', line 110

def define_writer_method(property, method_name, visibility)
  property_set = self
  parent.send(:define_method, method_name) do |value|
    property_set[property.name]= value
  end
  parent.send(visibility, method_name)
end

#each {|property| ... } ⇒ self

Iterate over properties

Yields:

Yield Parameters:

Returns:

  • (self)


39
40
41
42
43
# File 'lib/github_api/api/config/property_set.rb', line 39

def each
  return to_enum unless block_given?
  @map.each { |name, property| yield property if name.is_a?(Symbol) }
  self
end

#empty?Boolean

Check if properties exist

Returns:

  • (Boolean)


98
99
100
# File 'lib/github_api/api/config/property_set.rb', line 98

def empty?
  @map.empty?
end

#to_hashObject

Convert properties to a hash of property names and corresponding values



88
89
90
91
92
93
# File 'lib/github_api/api/config/property_set.rb', line 88

def to_hash
  properties.each_with_object({}) do |property, props|
    name = property.name
    props[name] = self[name]
  end
end

#update_map(name, property) ⇒ Object

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.

Update map with index



80
81
82
# File 'lib/github_api/api/config/property_set.rb', line 80

def update_map(name, property)
  @map[name.to_sym] = @map[name.to_s.freeze] = property
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