Class: Pod::Specification::DSL::Attribute
- Inherits:
-
Object
- Object
- Pod::Specification::DSL::Attribute
- Defined in:
- lib/cocoapods-core/specification/dsl/attribute.rb
Overview
A Specification attribute stores the information of an attribute. It also provides logic to implement any required logic.
Options collapse
-
#container ⇒ Class
readonly
If defined it can be #Array or #Hash.
-
#default_value ⇒ Object
readonly
If the attribute follows configuration over convention it can specify a default value.
-
#ios_default ⇒ Object
readonly
Similar to ##default_value but for iOS.
-
#keys ⇒ Array, Hash
readonly
The list of the accepted keys for an attribute wrapped by a Hash.
-
#osx_default ⇒ Object
readonly
Similar to ##default_value but for OS X.
-
#types ⇒ Array<Class>
readonly
The list of the classes of the values supported by the attribute writer.
Instance Attribute Summary collapse
-
#name ⇒ Symbol
readonly
The name of the attribute.
Options collapse
-
#file_patterns? ⇒ Bool
Whether the attribute describes file patterns.
-
#inherited? ⇒ Bool
values with the parent.
-
#multi_platform? ⇒ Bool
Whether the attribute is multi-platform and should work in conjunction with #PlatformProxy.
-
#required? ⇒ Bool
Whether the specification should be considered invalid if a value for the attribute is not specified.
-
#root_only? ⇒ Bool
Whether the attribute should be specified only on the root specification.
-
#singularize? ⇒ Bool
Whether there should be a singular alias for the attribute writer.
-
#supported_types ⇒ Array<Class>
The list of the classes of the values supported by the attribute, including the container.
-
#test_only? ⇒ Bool
Whether the attribute should be specified only on test specifications.
Accessors support collapse
-
#default(platform = nil) ⇒ Object
Returns the default value for the attribute.
-
#writer_name ⇒ String
The name of the setter method for the attribute.
-
#writer_singular_form ⇒ String
An aliased attribute writer offered for convenience on the DSL.
Instance Method Summary collapse
-
#initialize(name, options) ⇒ Attribute
constructor
Returns a new attribute initialized with the given options.
-
#inspect ⇒ String
A string representation suitable for debugging.
-
#to_s ⇒ String
A string representation suitable for UI.
Constructor Details
#initialize(name, options) ⇒ Attribute
Returns a new attribute initialized with the given options.
Attributes by default are:
-
inherited
-
multi-platform
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 29 def initialize(name, ) @name = name @multi_platform = .delete(:multi_platform) { true } @root_only = .delete(:root_only) { false } @test_only = .delete(:test_only) { false } @inherited = .delete(:inherited) { @root_only } @required = .delete(:required) { false } @singularize = .delete(:singularize) { false } @file_patterns = .delete(:file_patterns) { false } @container = .delete(:container) { nil } @keys = .delete(:keys) { nil } @default_value = .delete(:default_value) { nil } @ios_default = .delete(:ios_default) { nil } @osx_default = .delete(:osx_default) { nil } @types = .delete(:types) { [String] } unless .empty? raise StandardError, "Unrecognized options: #{} for #{self}" end end |
Instance Attribute Details
#container ⇒ Class (readonly)
Returns if defined it can be #Array or #Hash. It is used as default initialization value and to automatically wrap other values to arrays.
85 86 87 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 85 def container @container end |
#default_value ⇒ Object (readonly)
The default value is not automatically wrapped and should be specified within the container if any.
Returns if the attribute follows configuration over convention it can specify a default value.
101 102 103 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 101 def default_value @default_value end |
#ios_default ⇒ Object (readonly)
Returns similar to ##default_value but for iOS.
105 106 107 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 105 def ios_default @ios_default end |
#keys ⇒ Array, Hash (readonly)
A hash is accepted to group the keys associated only with certain keys (see the source attribute of a Spec).
Returns the list of the accepted keys for an attribute wrapped by a Hash.
93 94 95 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 93 def keys @keys end |
#name ⇒ Symbol (readonly)
Returns the name of the attribute.
12 13 14 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 12 def name @name end |
#osx_default ⇒ Object (readonly)
Returns similar to ##default_value but for OS X.
109 110 111 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 109 def osx_default @osx_default end |
#types ⇒ Array<Class> (readonly)
Returns the list of the classes of the values supported by the attribute writer. If not specified defaults to #String.
72 73 74 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 72 def types @types end |
Instance Method Details
#default(platform = nil) ⇒ Object
Returns the default value for the attribute.
174 175 176 177 178 179 180 181 182 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 174 def default(platform = nil) if platform && multi_platform? platform_value = ios_default if platform == :ios platform_value = osx_default if platform == :osx platform_value || default_value else default_value end end |
#file_patterns? ⇒ Bool
This is mostly used by the linter.
Returns whether the attribute describes file patterns.
150 151 152 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 150 def file_patterns? @file_patterns end |
#inherited? ⇒ Bool
Attributes stored in wrappers are always inherited.
values with the parent.
159 160 161 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 159 def inherited? @inherited end |
#inspect ⇒ String
Returns A string representation suitable for debugging.
59 60 61 62 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 59 def inspect "<#{self.class} name=#{name} types=#{types} " \ "multi_platform=#{multi_platform?}>" end |
#multi_platform? ⇒ Bool
Returns whether the attribute is multi-platform and should work in conjunction with #PlatformProxy.
135 136 137 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 135 def multi_platform? @multi_platform end |
#required? ⇒ Bool
Returns whether the specification should be considered invalid if a value for the attribute is not specified.
114 115 116 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 114 def required? @required end |
#root_only? ⇒ Bool
Returns whether the attribute should be specified only on the root specification.
121 122 123 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 121 def root_only? @root_only end |
#singularize? ⇒ Bool
Returns whether there should be a singular alias for the attribute writer.
142 143 144 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 142 def singularize? @singularize end |
#supported_types ⇒ Array<Class>
Returns the list of the classes of the values supported by the attribute, including the container.
77 78 79 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 77 def supported_types @supported_types ||= @types.dup.push(container).compact end |
#test_only? ⇒ Bool
Returns whether the attribute should be specified only on test specifications.
128 129 130 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 128 def test_only? @test_only end |
#to_s ⇒ String
Returns A string representation suitable for UI.
53 54 55 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 53 def to_s "Specification attribute `#{name}`" end |
#writer_name ⇒ String
Returns the name of the setter method for the attribute.
186 187 188 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 186 def writer_name "#{name}=" end |
#writer_singular_form ⇒ String
Returns an aliased attribute writer offered for convenience on the DSL.
193 194 195 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 193 def writer_singular_form "#{name.to_s.singularize}=" if singularize? end |