class Pod::Specification::DSL::PlatformProxy

The PlatformProxy works in conjunction with Specification#_on_platform. It provides support for a syntax like ‘spec.ios.source_files = ’file’‘.

Attributes

platform[R]

@return [Symbol] the platform described by this proxy. Can be either

`:ios` or `:osx`.
spec[RW]

@return [Specification] the specification for this platform proxy.

Public Class Methods

new(spec, platform) click to toggle source

@param [Specification] spec @see spec @param [Symbol] platform @see platform

# File lib/cocoapods-core/specification/dsl/platform_proxy.rb, line 20
def initialize(spec, platform)
  @spec = spec
  @platform = platform
end

Public Instance Methods

dependency(*args) click to toggle source

Allows to add dependency for the platform.

@return [void]

# File lib/cocoapods-core/specification/dsl/platform_proxy.rb, line 48
def dependency(*args)
  name, *version_requirements = args
  platform_name = platform.to_s
  platform_hash = spec.attributes_hash[platform_name] || {}
  platform_hash['dependencies'] ||= {}
  platform_hash['dependencies'][name] = version_requirements
  spec.attributes_hash[platform_name] = platform_hash
end
deployment_target=(value) click to toggle source

Allows to set the deployment target for the platform.

@return [void]

# File lib/cocoapods-core/specification/dsl/platform_proxy.rb, line 61
def deployment_target=(value)
  platform_name = platform.to_s
  spec.attributes_hash['platforms'] ||= {}
  spec.attributes_hash['platforms'][platform_name] = value
end
method_missing(meth, *args, &block) click to toggle source

Defines a setter method for each attribute of the specification class, that forwards the message to the {#specification} using the {Specification#on_platform} method.

@return [void]

Calls superclass method
# File lib/cocoapods-core/specification/dsl/platform_proxy.rb, line 31
def method_missing(meth, *args, &block)
  return super unless attribute = attribute_for_method(meth)
  raise NoMethodError, "#{attribute} cannot be set per-platform" unless attribute.multi_platform?
  spec.store_attribute(attribute.name, args.first, platform)
end
respond_to_missing?(method, include_all) click to toggle source

@!visibility private

Calls superclass method
# File lib/cocoapods-core/specification/dsl/platform_proxy.rb, line 39
def respond_to_missing?(method, include_all)
  attribute = attribute_for_method(method)
  (attribute && attribute.multi_platform?) || super
end

Private Instance Methods

attribute_for_method(method) click to toggle source
# File lib/cocoapods-core/specification/dsl/platform_proxy.rb, line 69
def attribute_for_method(method)
  method = method.to_sym
  Specification::DSL.attributes.values.find do |attribute|
    if attribute.writer_name.to_sym == method
      true
    elsif attribute.writer_singular_form
      attribute.writer_singular_form.to_sym == method
    end
  end
end