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.
Constant Summary collapse
- SUPPORTED_SPEC_TYPES =
Spec types currently supported.
[:library, :app, :test].freeze
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? ⇒ Boolean
Whether the attribute describes file patterns.
-
#inherited? ⇒ Boolean
values with the parent.
-
#multi_platform? ⇒ Boolean
Whether the attribute is multi-platform and should work in conjunction with #PlatformProxy.
-
#required? ⇒ Boolean
Whether the specification should be considered invalid if a value for the attribute is not specified.
-
#root_only? ⇒ Boolean
Whether the attribute should be specified only on the root specification.
-
#singularize? ⇒ Boolean
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? ⇒ Boolean
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
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 33 def initialize(name, ) @name = name @multi_platform = .delete(:multi_platform) { true } @root_only = .delete(:root_only) { false } @spec_types = .delete(:spec_types) { SUPPORTED_SPEC_TYPES } @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 unless (@spec_types - SUPPORTED_SPEC_TYPES).empty? raise StandardError, "Unrecognized spec type option: #{@spec_types} 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.
92 93 94 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 92 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.
108 109 110 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 108 def default_value @default_value end |
#ios_default ⇒ Object (readonly)
Returns similar to ##default_value but for iOS.
112 113 114 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 112 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.
100 101 102 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 100 def keys @keys end |
#name ⇒ Symbol (readonly)
Returns the name of the attribute.
16 17 18 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 16 def name @name end |
#osx_default ⇒ Object (readonly)
Returns similar to ##default_value but for OS X.
116 117 118 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 116 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.
79 80 81 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 79 def types @types end |
Instance Method Details
#default(platform = nil) ⇒ Object
Returns the default value for the attribute.
181 182 183 184 185 186 187 188 189 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 181 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? ⇒ Boolean
This is mostly used by the linter.
Returns whether the attribute describes file patterns.
157 158 159 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 157 def file_patterns? @file_patterns end |
#inherited? ⇒ Boolean
Attributes stored in wrappers are always inherited.
values with the parent.
166 167 168 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 166 def inherited? @inherited end |
#inspect ⇒ String
Returns A string representation suitable for debugging.
66 67 68 69 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 66 def inspect "<#{self.class} name=#{name} types=#{types} " \ "multi_platform=#{multi_platform?}>" end |
#multi_platform? ⇒ Boolean
Returns whether the attribute is multi-platform and should work in conjunction with #PlatformProxy.
142 143 144 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 142 def multi_platform? @multi_platform end |
#required? ⇒ Boolean
Returns whether the specification should be considered invalid if a value for the attribute is not specified.
121 122 123 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 121 def required? @required end |
#root_only? ⇒ Boolean
Returns whether the attribute should be specified only on the root specification.
128 129 130 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 128 def root_only? @root_only end |
#singularize? ⇒ Boolean
Returns whether there should be a singular alias for the attribute writer.
149 150 151 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 149 def singularize? @singularize end |
#supported_types ⇒ Array<Class>
Returns the list of the classes of the values supported by the attribute, including the container.
84 85 86 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 84 def supported_types @supported_types ||= @types.dup.push(container).compact end |
#test_only? ⇒ Boolean
Returns whether the attribute should be specified only on test specifications.
135 136 137 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 135 def test_only? @spec_types == [:test] end |
#to_s ⇒ String
Returns A string representation suitable for UI.
60 61 62 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 60 def to_s "Specification attribute `#{name}`" end |
#writer_name ⇒ String
Returns the name of the setter method for the attribute.
193 194 195 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 193 def writer_name "#{name}=" end |
#writer_singular_form ⇒ String
Returns an aliased attribute writer offered for convenience on the DSL.
200 201 202 |
# File 'lib/cocoapods-core/specification/dsl/attribute.rb', line 200 def writer_singular_form "#{name.to_s.singularize}=" if singularize? end |