Class: XcodeProject::RootNode
- Inherits:
-
Object
- Object
- XcodeProject::RootNode
- Defined in:
- lib/xcodeproject/root_node.rb
Instance Method Summary collapse
- #absolute_path(path) ⇒ Object
- #add_object(data) ⇒ Object
- #build_files(file_ref_uuid) ⇒ Object
- #find_object(isa, hash = {}) ⇒ Object
- #find_object!(isa, hash = {}) ⇒ Object
- #find_object2(isa, h1 = {}, h2 = {}) ⇒ Object
- #find_object2!(isa, h1 = {}, h2 = {}) ⇒ Object
- #find_objects(isa, hash = {}) ⇒ Object
- #find_objects!(isa, hash = {}) ⇒ Object
- #generate_object_uuid ⇒ Object
-
#initialize(data, wd) ⇒ RootNode
constructor
A new instance of RootNode.
- #object(uuid) ⇒ Object
- #object!(uuid) ⇒ Object
- #project ⇒ Object
- #remove_object(uuid) ⇒ Object
- #select_objects ⇒ Object
- #to_plist(_fmtr = Formatter.new) ⇒ Object
Constructor Details
#initialize(data, wd) ⇒ RootNode
Returns a new instance of RootNode.
38 39 40 41 42 43 44 45 46 |
# File 'lib/xcodeproject/root_node.rb', line 38 def initialize(data, wd) @data = data @wd = Pathname.new(wd) @wd = Pathname.new(ENV['PWD']).join(@wd) if @wd.relative? @objects = data['objects'] @uuid_generator = UUIDGenerator.new end |
Instance Method Details
#absolute_path(path) ⇒ Object
113 114 115 116 117 |
# File 'lib/xcodeproject/root_node.rb', line 113 def absolute_path(path) path = Pathname.new(path) path = path.absolute? ? path : @wd.join(path) path.cleanpath end |
#add_object(data) ⇒ Object
104 105 106 107 |
# File 'lib/xcodeproject/root_node.rb', line 104 def add_object(data) @objects.merge!(Hash[uuid = generate_object_uuid, data]) [uuid, data] end |
#build_files(file_ref_uuid) ⇒ Object
52 53 54 |
# File 'lib/xcodeproject/root_node.rb', line 52 def build_files(file_ref_uuid) find_objects('PBXBuildFile', 'fileRef' => file_ref_uuid) end |
#find_object(isa, hash = {}) ⇒ Object
83 84 85 |
# File 'lib/xcodeproject/root_node.rb', line 83 def find_object(isa, hash = {}) find_objects(isa, hash).first end |
#find_object!(isa, hash = {}) ⇒ Object
87 88 89 90 91 |
# File 'lib/xcodeproject/root_node.rb', line 87 def find_object!(isa, hash = {}) obj = find_object(isa, hash) raise ParseError if obj.nil? obj end |
#find_object2(isa, h1 = {}, h2 = {}) ⇒ Object
93 94 95 96 |
# File 'lib/xcodeproject/root_node.rb', line 93 def find_object2(isa, h1 = {}, h2 = {}) obj = find_object(isa, h1) obj.nil? ? find_object(isa, h2) : obj end |
#find_object2!(isa, h1 = {}, h2 = {}) ⇒ Object
98 99 100 101 102 |
# File 'lib/xcodeproject/root_node.rb', line 98 def find_object2!(isa, h1 = {}, h2 = {}) obj = find_object2(isa, h1, h2) raise ParseError if obj.nil? obj end |
#find_objects(isa, hash = {}) ⇒ Object
72 73 74 75 |
# File 'lib/xcodeproject/root_node.rb', line 72 def find_objects(isa, hash = {}) hash.merge!(Hash['isa', isa]) select_objects { |_uuid, data| data.values_at(*hash.keys) == hash.values } end |
#find_objects!(isa, hash = {}) ⇒ Object
77 78 79 80 81 |
# File 'lib/xcodeproject/root_node.rb', line 77 def find_objects!(isa, hash = {}) objs = find_objects(isa, hash) raise ParseError, "Object with isa = #{isa} and #{hash} not found." if objs.empty? objs end |
#generate_object_uuid ⇒ Object
119 120 121 |
# File 'lib/xcodeproject/root_node.rb', line 119 def generate_object_uuid @uuid_generator.generate end |
#object(uuid) ⇒ Object
56 57 58 59 |
# File 'lib/xcodeproject/root_node.rb', line 56 def object(uuid) data = @objects[uuid] XcodeProject.const_get(data['isa']).new(self, uuid, data) unless data.nil? end |
#object!(uuid) ⇒ Object
61 62 63 64 65 |
# File 'lib/xcodeproject/root_node.rb', line 61 def object!(uuid) obj = object(uuid) raise ParseError, "Object with uuid = #{uuid} not found." if obj.nil? obj end |
#project ⇒ Object
48 49 50 |
# File 'lib/xcodeproject/root_node.rb', line 48 def project find_object!('PBXProject') end |
#remove_object(uuid) ⇒ Object
109 110 111 |
# File 'lib/xcodeproject/root_node.rb', line 109 def remove_object(uuid) @objects.delete(uuid) end |
#select_objects ⇒ Object
67 68 69 70 |
# File 'lib/xcodeproject/root_node.rb', line 67 def select_objects objs = @objects.select { |uuid, data| yield uuid, data } objs.map { |uuid, _data| object(uuid) } end |