lib/xcodeproj/workspace/group_reference.rb
require 'xcodeproj/workspace/reference' module Xcodeproj class Workspace # Describes a group reference of a Workspace. # class GroupReference < Reference # @return [String] the name of the group # attr_reader :name # @return [String] the location of the group on disk # attr_reader :location # @param [#to_s] name @see name # @param [#to_s] type @see type # @param [#to_s] location @see location # def initialize(name, type = 'container', location = '') @name = name.to_s @type = type.to_s @location = location.to_s end # @return [Bool] Whether a group reference is equal to another. # def ==(other) name == other.name && type == other.type && location == other.location end alias_method :eql?, :== # @return [Fixnum] A hash identical for equals objects. # def hash [name, type, location].hash end # Returns a group reference given XML representation. # # @param [REXML::Element] xml_node # the XML representation. # # @return [GroupReference] The new group reference instance. # def self.from_node(xml_node) location_array = xml_node.attribute('location').value.split(':', 2) type = location_array.first location = location_array[1] || '' if type == 'group' location = prepend_parent_path(xml_node, location) end name = xml_node.attribute('name').value new(name, type, location) end # @return [REXML::Element] the XML representation of the group reference. # def to_node REXML::Element.new('Group').tap do |element| element.add_attribute('location', "#{type}:#{location}") element.add_attribute('name', "#{name}") end end end end end