lib/xcodeproj/project/object/reference_proxy.rb
module Xcodeproj
class Project
module Object
# Apparently a proxy for a reference object which might belong another
# project contained in the same workspace of the project document.
#
# This class is used for referencing the products of another project.
#
class PBXReferenceProxy < AbstractObject
# @!group Attributes
# @return [String] the name of the reference.
#
attribute :name, String
# @return [String] the path of the referenced filed.
#
attribute :path, String
# @return [String] the file type of the referenced filed.
#
attribute :file_type, String
# @return [PBXContainerItemProxy] the proxy to the project that
# contains the object.
#
has_one :remote_ref, PBXContainerItemProxy
# @return [String] the source tree for the path of the reference.
#
# @example
# "BUILT_PRODUCTS_DIR"
#
attribute :source_tree, String
#---------------------------------------------------------------------#
public
# @!group Helpers
# Checks whether the reference is a proxy.
#
# @return [Bool] always true for this ISA.
#
def proxy?
true
end
#---------------------------------------------------------------------#
def ascii_plist_annotation
" #{name || path && File.basename(path)} "
end
# @return [String] A name suitable for displaying the object to the
# user.
#
def display_name
return name if name
return path if path
super
end
# @return [Array<PBXBuildFile>] the build files associated with the
# current reference proxy.
#
def build_files
referrers.grep(PBXBuildFile)
end
# In addition to removing the reference proxy, this will also remove any
# items related to this reference.
#
# @see AbstractObject#remove_from_project
#
# @return [void]
#
def remove_from_project
build_files.each(&:remove_from_project)
super
end
end
end
end
end