Class: Github::API::Config::PropertySet
- Inherits:
-
Object
- Object
- Github::API::Config::PropertySet
- Includes:
- Enumerable
- Defined in:
- lib/github_api2/api/config/property_set.rb
Overview
Class responsible for storing configuration properties
Instance Attribute Summary collapse
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#properties ⇒ Object
readonly
Returns the value of attribute properties.
Instance Method Summary collapse
-
#<<(property) ⇒ self
Adds property to the set.
-
#[](name) ⇒ Object
(also: #fetch)
Access property by name.
-
#[]=(name, property) ⇒ Object
Set property value by name.
- #define_reader_method(property, method_name, visibility) ⇒ Object private
- #define_writer_method(property, method_name, visibility) ⇒ Object private
-
#each {|property| ... } ⇒ self
Iterate over properties.
-
#empty? ⇒ Boolean
Check if properties exist.
-
#initialize(parent = nil, properties = Set.new) ⇒ undefined
constructor
private
Initialize an PropertySet.
-
#to_hash ⇒ Object
Convert properties to a hash of property names and corresponding values.
-
#update_map(name, property) ⇒ Object
private
Update map with index.
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
24 25 26 27 28 |
# File 'lib/github_api2/api/config/property_set.rb', line 24 def initialize(parent = nil, properties = Set.new) @parent = parent @properties = properties @map = {} end |
Instance Attribute Details
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
12 13 14 |
# File 'lib/github_api2/api/config/property_set.rb', line 12 def parent @parent end |
#properties ⇒ Object (readonly)
Returns the value of attribute properties.
14 15 16 |
# File 'lib/github_api2/api/config/property_set.rb', line 14 def properties @properties end |
Instance Method Details
#<<(property) ⇒ self
Adds property to the set
55 56 57 58 59 60 |
# File 'lib/github_api2/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_api2/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_api2/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_api2/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_api2/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
39 40 41 42 43 |
# File 'lib/github_api2/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
98 99 100 |
# File 'lib/github_api2/api/config/property_set.rb', line 98 def empty? @map.empty? end |
#to_hash ⇒ Object
Convert properties to a hash of property names and corresponding values
88 89 90 91 92 93 |
# File 'lib/github_api2/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_api2/api/config/property_set.rb', line 80 def update_map(name, property) @map[name.to_sym] = @map[name.to_s.freeze] = property end |