Class: Xcodeproj::Project::Object::PBXFileReference

Inherits:
AbstractObject show all
Defined in:
lib/xcodeproj/project/object/file_reference.rb

Overview

This class represents a reference to a file in the file system.

Attributes collapse

Attributes inherited from AbstractObject

#isa, #project, #uuid

Helpers collapse

Methods inherited from AbstractObject

#<=>, #==, #inspect, isa, #pretty_print, #sort, #sort_recursively, #to_hash

Instance Attribute Details

#commentsString

Note:

This is apparently no longer used by Xcode.

Returns Comments associated with this file.

Returns:

  • (String)

    Comments associated with this file.



114
# File 'lib/xcodeproj/project/object/file_reference.rb', line 114

attribute :comments, String

#explicit_file_typeString

Returns the file type (apparently) used for products generated by Xcode (i.e. applications, libraries).

Returns:

  • (String)

    the file type (apparently) used for products generated by Xcode (i.e. applications, libraries).



36
# File 'lib/xcodeproj/project/object/file_reference.rb', line 36

attribute :explicit_file_type, String

#fileEncodingString

Returns a string containing a number which represents the encoding format of the file.

Returns:

  • (String)

    a string containing a number which represents the encoding format of the file.



56
# File 'lib/xcodeproj/project/object/file_reference.rb', line 56

attribute :fileEncoding, String

#include_in_indexString

Note:

Apparently present only for products generated by Xcode with a value of ‘0`.

Returns whether this file should be indexed. It can be either ‘0` or `1`.

Returns:

  • (String)

    whether this file should be indexed. It can be either ‘0` or `1`.



51
# File 'lib/xcodeproj/project/object/file_reference.rb', line 51

attribute :include_in_index, String, '1'

#indent_widthString

Returns The width of the indent.

Examples:

`2`

Returns:

  • (String)

    The width of the indent.



86
# File 'lib/xcodeproj/project/object/file_reference.rb', line 86

attribute :indent_width, String

#last_known_file_typeString

Note:

This attribute is not present if there is an ‘explicit_file_type`.

Returns the file type guessed by Xcode.

Returns:

  • (String)

    the file type guessed by Xcode.



43
# File 'lib/xcodeproj/project/object/file_reference.rb', line 43

attribute :last_known_file_type, String

#line_endingString

Returns Apparently whether Xcode should add, if needed, a new line feed before saving the file.

Examples:

`0`

Returns:

  • (String)

    Apparently whether Xcode should add, if needed, a new line feed before saving the file.



108
# File 'lib/xcodeproj/project/object/file_reference.rb', line 108

attribute :line_ending, String

#nameString

Returns the name of the reference, often not present.

Returns:

  • (String)

    the name of the reference, often not present.



13
# File 'lib/xcodeproj/project/object/file_reference.rb', line 13

attribute :name, String

#pathString

Returns the path to the file relative to the source tree.

Returns:

  • (String)

    the path to the file relative to the source tree



17
# File 'lib/xcodeproj/project/object/file_reference.rb', line 17

attribute :path, String

#plist_structure_definition_identifierString

Returns a string that specifies the UTI for the structure of a plist file.

Examples:

`com.apple.xcode.plist.structure-definition.iphone.info-plist`

Returns:

  • (String)

    a string that specifies the UTI for the structure of a plist file.



72
# File 'lib/xcodeproj/project/object/file_reference.rb', line 72

attribute :plist_structure_definition_identifier, String

#source_treeString

Note:

The accepted values are:

  • ‘<absolute>` for absolute paths

  • ‘<group>` for paths relative to the group

  • ‘SOURCE_ROOT` for paths relative to the project

  • ‘DEVELOPER_DIR` for paths relative to the developer directory.

  • ‘BUILT_PRODUCTS_DIR` for paths relative to the build products directory.

  • ‘SDKROOT` for paths relative to the SDK directory.

Returns the directory to which the path is relative.

Returns:

  • (String)

    the directory to which the path is relative.



31
# File 'lib/xcodeproj/project/object/file_reference.rb', line 31

attribute :source_tree, String, 'SOURCE_ROOT'

#tab_widthString

Returns The width of the tabs.

Examples:

`2`

Returns:

  • (String)

    The width of the tabs.



93
# File 'lib/xcodeproj/project/object/file_reference.rb', line 93

attribute :tab_width, String

#uses_tabsString

Returns Whether Xcode should use tabs for text alignment.

Examples:

`1`

Returns:

  • (String)

    Whether Xcode should use tabs for text alignment.



79
# File 'lib/xcodeproj/project/object/file_reference.rb', line 79

attribute :uses_tabs, String

#wraps_linesString

Returns Whether Xcode should wrap lines.

Examples:

`1`

Returns:

  • (String)

    Whether Xcode should wrap lines.



100
# File 'lib/xcodeproj/project/object/file_reference.rb', line 100

attribute :wraps_lines, String

#xc_language_specification_identifierString

Returns a string that specifies the UTI for the syntax highlighting.

Examples:

`xcode.lang.ruby`

Returns:

  • (String)

    a string that specifies the UTI for the syntax highlighting.



64
# File 'lib/xcodeproj/project/object/file_reference.rb', line 64

attribute :xc_language_specification_identifier, String

Instance Method Details

#build_filesArray<PBXBuildFile>

Returns the build files associated with the current file reference.

Returns:

  • (Array<PBXBuildFile>)

    the build files associated with the current file reference.



194
195
196
# File 'lib/xcodeproj/project/object/file_reference.rb', line 194

def build_files
  referrers.grep(PBXBuildFile)
end

#display_nameString

Returns the name of the file taking into account the path if needed.

Returns:

  • (String)

    the name of the file taking into account the path if needed.



125
126
127
# File 'lib/xcodeproj/project/object/file_reference.rb', line 125

def display_name
  name || (File.basename(path) if path)
end

#file_reference_proxiesArray<PBXReferenceProxy>

If this file reference represents an external Xcode project reference then this will return proxies for file references contained in the external Xcode project.

Returns:

  • (Array<PBXReferenceProxy>)

    The file reference proxies for items located in the external Xcode project.



271
272
273
274
275
276
277
278
279
280
281
# File 'lib/xcodeproj/project/object/file_reference.rb', line 271

def file_reference_proxies
  containers = proxy_containers
  if containers.empty?
    []
  else
    project.objects.select do |object|
      object.isa == 'PBXReferenceProxy' &&
        containers.include?(object.remote_ref)
    end
  end
end

#hierarchy_pathString

Returns A representation of the reference hierarchy.

Returns:

  • (String)

    A representation of the reference hierarchy.



144
145
146
# File 'lib/xcodeproj/project/object/file_reference.rb', line 144

def hierarchy_path
  GroupableHelper.hierarchy_path(self)
end

#move(new_parent) ⇒ void

This method returns an undefined value.

Moves the reference to a new parent.

Parameters:

  • new_parent (PBXGroup)

    The new parent.



155
156
157
# File 'lib/xcodeproj/project/object/file_reference.rb', line 155

def move(new_parent)
  GroupableHelper.move(self, new_parent)
end

#parentPBXGroup, PBXProject

Returns the parent of the file.

Returns:



131
132
133
# File 'lib/xcodeproj/project/object/file_reference.rb', line 131

def parent
  GroupableHelper.parent(self)
end

#parentsArray<PBXGroup, PBXProject>

Returns The list of the parents of the reference.

Returns:



138
139
140
# File 'lib/xcodeproj/project/object/file_reference.rb', line 138

def parents
  GroupableHelper.parents(self)
end

#project_reference_metadataObjectDictionary?

If this file reference represents an external Xcode project reference then this will return metadata about it which includes the reference to the ‘Products’ group that’s created in this project (the project that includes the external project).

Returns:

  • (ObjectDictionary, nil)

    The external project metadata for this file reference or ‘nil` if it’s not an external project.



244
245
246
247
248
# File 'lib/xcodeproj/project/object/file_reference.rb', line 244

def 
  project.root_object.project_references.find do |project_reference|
    project_reference[:project_ref] == self
  end
end

#proxy?Bool

Checks whether the reference is a proxy.

Returns:

  • (Bool)

    always false for this ISA.



232
233
234
# File 'lib/xcodeproj/project/object/file_reference.rb', line 232

def proxy?
  false
end

#proxy_containersArray<PBXContainerItemProxy>

If this file reference represents an external Xcode project reference then this will return the objects that are ‘containers’ for items contained in the external Xcode project.

Returns:



257
258
259
260
261
262
# File 'lib/xcodeproj/project/object/file_reference.rb', line 257

def proxy_containers
  project.objects.select do |object|
    object.isa == 'PBXContainerItemProxy' &&
      object.container_portal == uuid
  end
end

#real_pathPathname

source tree.

Returns:

  • (Pathname)

    the absolute path of the file resolving the



162
163
164
# File 'lib/xcodeproj/project/object/file_reference.rb', line 162

def real_path
  GroupableHelper.real_path(self)
end

#remove_from_projectvoid

This method returns an undefined value.

In addition to removing the file reference, this will also remove any items related to this reference in case it represents an external Xcode project.



310
311
312
313
314
315
316
317
318
# File 'lib/xcodeproj/project/object/file_reference.rb', line 310

def remove_from_project
  if project_reference = 
    file_reference_proxies.each(&:remove_from_project)
    target_dependency_proxies.each(&:remove_from_project)
    project_reference[:product_group].remove_from_project
    project.root_object.project_references.delete(project_reference)
  end
  super
end

#set_explicit_file_type(type = nil) ⇒ void

This method returns an undefined value.

Sets the explicit file type according to the extension of the path, and clears the last known file type.



216
217
218
219
220
221
222
223
224
# File 'lib/xcodeproj/project/object/file_reference.rb', line 216

def set_explicit_file_type(type = nil)
  self.last_known_file_type = nil
  if type
    self.explicit_file_type = type
  elsif path
    extension = Pathname(path).extname[1..-1]
    self.explicit_file_type = Constants::FILE_TYPES_BY_EXTENSION[extension]
  end
end

#set_last_known_file_type(type = nil) ⇒ void

This method returns an undefined value.

Sets the last known file type according to the extension of the path.



202
203
204
205
206
207
208
209
# File 'lib/xcodeproj/project/object/file_reference.rb', line 202

def set_last_known_file_type(type = nil)
  if type
    self.last_known_file_type = type
  elsif path
    extension = Pathname(path).extname[1..-1]
    self.last_known_file_type = Constants::FILE_TYPES_BY_EXTENSION[extension]
  end
end

#set_path(path) ⇒ void

This method returns an undefined value.

Allows to set the path according to the source tree of the reference.

Parameters:

  • the (#to_s)

    path for the reference.



183
184
185
186
187
188
189
# File 'lib/xcodeproj/project/object/file_reference.rb', line 183

def set_path(path)
  if path
    GroupableHelper.set_path_with_source_tree(self, path, source_tree)
  else
    self.path = nil
  end
end

#set_source_tree(source_tree) ⇒ void

This method returns an undefined value.

Sets the source tree of the reference.

Parameters:

  • source_tree (Symbol, String)

    The source tree, either a string or a symbol.



173
174
175
# File 'lib/xcodeproj/project/object/file_reference.rb', line 173

def set_source_tree(source_tree)
  GroupableHelper.set_source_tree(self, source_tree)
end

#target_dependency_proxiesArray<PBXTargetDependency>

If this file reference represents an external Xcode project reference then this will return dependencies on targets contained in the external Xcode project.

Returns:

  • (Array<PBXTargetDependency>)

    The dependencies on targets located in the external Xcode project.



290
291
292
293
294
295
296
297
298
299
300
# File 'lib/xcodeproj/project/object/file_reference.rb', line 290

def target_dependency_proxies
  containers = proxy_containers
  if containers.empty?
    []
  else
    project.objects.select do |object|
      object.isa == 'PBXTargetDependency' &&
        containers.include?(object.target_proxy)
    end
  end
end