xcodeproject_swift 0.3.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +30 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +37 -0
  5. data/.travis.yml +13 -0
  6. data/.yardopts +7 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE +22 -0
  9. data/README.md +192 -0
  10. data/Rakefile +11 -0
  11. data/lib/xcodeproject.rb +2 -0
  12. data/lib/xcodeproject/build_phase_node.rb +111 -0
  13. data/lib/xcodeproject/data.rb +89 -0
  14. data/lib/xcodeproject/exceptions.rb +29 -0
  15. data/lib/xcodeproject/extend/array.rb +32 -0
  16. data/lib/xcodeproject/extend/hash.rb +35 -0
  17. data/lib/xcodeproject/extend/string.rb +31 -0
  18. data/lib/xcodeproject/file_node.rb +86 -0
  19. data/lib/xcodeproject/formatter.rb +47 -0
  20. data/lib/xcodeproject/node.rb +42 -0
  21. data/lib/xcodeproject/pbx_build_file.rb +63 -0
  22. data/lib/xcodeproject/pbx_file_reference.rb +82 -0
  23. data/lib/xcodeproject/pbx_group.rb +204 -0
  24. data/lib/xcodeproject/pbx_native_target.rb +94 -0
  25. data/lib/xcodeproject/pbx_project.rb +57 -0
  26. data/lib/xcodeproject/project.rb +72 -0
  27. data/lib/xcodeproject/root_node.rb +127 -0
  28. data/lib/xcodeproject/tasks/build_task.rb +59 -0
  29. data/lib/xcodeproject/uuid_generator.rb +37 -0
  30. data/lib/xcodeproject/version.rb +27 -0
  31. data/lib/xcodeproject/xc_build_configuration.rb +98 -0
  32. data/lib/xcodeproject/xc_configuration_list.rb +47 -0
  33. data/resources/example/dir1a/dir2a/dir3a/dir4a/file5a-a.h +1 -0
  34. data/resources/example/dir1a/dir2a/dir3a/dir4a/file5a-a.m +1 -0
  35. data/resources/example/dir1a/dir2a/dir3a/dir4a/file5a-r.h +1 -0
  36. data/resources/example/dir1a/dir2a/dir3a/dir4a/file5a-r.m +1 -0
  37. data/resources/example/dir1b/dir2b/file3b.m +0 -0
  38. data/resources/example/dir1b/file2b.m +0 -0
  39. data/resources/example/dir1c/file2c.h +0 -0
  40. data/resources/example/dir1c/file2c.m +0 -0
  41. data/resources/example/example.xcodeproj/project.pbxproj +324 -0
  42. data/resources/example/example/AppDelegate.h +7 -0
  43. data/resources/example/example/AppDelegate.m +49 -0
  44. data/resources/example/example/en.lproj/InfoPlist.strings +2 -0
  45. data/resources/example/example/example-Info.plist +45 -0
  46. data/resources/example/example/example-Prefix.pch +14 -0
  47. data/resources/example/example/main.m +10 -0
  48. data/spec/build_phase_node_spec.rb +103 -0
  49. data/spec/file_node_spec.rb +58 -0
  50. data/spec/pbx_build_file_spec.rb +26 -0
  51. data/spec/pbx_file_reference_spec.rb +42 -0
  52. data/spec/pbx_group_spec.rb +360 -0
  53. data/spec/pbx_native_target_spec.rb +62 -0
  54. data/spec/pbx_project_spec.rb +39 -0
  55. data/spec/project_spec.rb +86 -0
  56. data/spec/spec_helper.rb +67 -0
  57. data/spec/support/shared_examples/file_node_shared_examples.rb +27 -0
  58. data/spec/xc_build_configuration_spec.rb +114 -0
  59. data/spec/xc_configuration_list_spec.rb +23 -0
  60. data/xcodeproject.gemspec +29 -0
  61. metadata +233 -0
@@ -0,0 +1,89 @@
1
+ #--
2
+ # The MIT License
3
+ #
4
+ # Copyright (c) 2012-2014 Andrei Nesterov <ae.nesterov@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to
8
+ # deal in the Software without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
+ # sell copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #++
24
+
25
+ require 'xcodeproject/root_node'
26
+
27
+ module XcodeProject
28
+ class Data
29
+ def initialize(data, wd)
30
+ @root = RootNode.new(data, wd)
31
+ end
32
+
33
+ def project
34
+ @root.project
35
+ end
36
+
37
+ def targets
38
+ project.targets
39
+ end
40
+
41
+ def target(name)
42
+ project.target(name)
43
+ end
44
+
45
+ def main_group
46
+ project.main_group
47
+ end
48
+
49
+ def group(gpath)
50
+ main_group.group(gpath)
51
+ end
52
+
53
+ def add_group(gpath)
54
+ main_group.add_group(gpath)
55
+ end
56
+
57
+ def add_dir(parent_gpath, path)
58
+ main_group.add_group(parent_gpath).add_dir(path)
59
+ end
60
+
61
+ def remove_group(gpath)
62
+ main_group.remove_group(gpath)
63
+ end
64
+
65
+ def file(gpath)
66
+ main_group.file(gpath)
67
+ end
68
+
69
+ def add_file(parent_gpath, path)
70
+ main_group.add_group(parent_gpath).add_file(path)
71
+ end
72
+
73
+ def remove_file(gpath)
74
+ main_group.remove_file(gpath)
75
+ end
76
+
77
+ def doctor
78
+ targets.each(&:doctor)
79
+ end
80
+
81
+ def to_plist(_fmtr = Formatter.new)
82
+ @root.to_plist
83
+ end
84
+
85
+ private
86
+
87
+ attr_accessor :root
88
+ end
89
+ end
@@ -0,0 +1,29 @@
1
+ #--
2
+ # The MIT License
3
+ #
4
+ # Copyright (c) 2012-2014 Andrei Nesterov <ae.nesterov@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to
8
+ # deal in the Software without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
+ # sell copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #++
24
+
25
+ module XcodeProject
26
+ class ParseError < StandardError; end
27
+ class FilePathError < StandardError; end
28
+ class GroupPathError < StandardError; end
29
+ end
@@ -0,0 +1,32 @@
1
+ #--
2
+ # The MIT License
3
+ #
4
+ # Copyright (c) 2012-2014 Andrei Nesterov <ae.nesterov@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to
8
+ # deal in the Software without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
+ # sell copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #++
24
+
25
+ require 'xcodeproject/formatter'
26
+
27
+ class Array
28
+ def to_plist(fmtr = XcodeProject::Formatter.new)
29
+ items = map { |item| item.to_plist(fmtr).to_s }
30
+ %{(#{fmtr.t2}#{items.join(",#{fmtr.t2}")}#{fmtr.t1})}
31
+ end
32
+ end
@@ -0,0 +1,35 @@
1
+ #--
2
+ # The MIT License
3
+ #
4
+ # Copyright (c) 2012-2014 Andrei Nesterov <ae.nesterov@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to
8
+ # deal in the Software without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
+ # sell copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #++
24
+
25
+ require 'xcodeproject/formatter'
26
+
27
+ class Hash
28
+ def to_plist(fmtr = XcodeProject::Formatter.new)
29
+ fmtr.inc
30
+ items = map { |key, value| "#{key.to_plist(fmtr)} = #{value.to_plist(fmtr)};" }
31
+ fmtr.dec
32
+
33
+ %({#{fmtr.t2}#{items.join(fmtr.t2.to_s)}#{fmtr.t1}})
34
+ end
35
+ end
@@ -0,0 +1,31 @@
1
+ #--
2
+ # The MIT License
3
+ #
4
+ # Copyright (c) 2012-2014 Andrei Nesterov <ae.nesterov@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to
8
+ # deal in the Software without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
+ # sell copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #++
24
+
25
+ require 'json'
26
+
27
+ class String
28
+ def to_plist(_fmtr = nil)
29
+ to_json
30
+ end
31
+ end
@@ -0,0 +1,86 @@
1
+ #--
2
+ # The MIT License
3
+ #
4
+ # Copyright (c) 2012-2014 Andrei Nesterov <ae.nesterov@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to
8
+ # deal in the Software without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
+ # sell copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #++
24
+
25
+ require 'xcodeproject/node'
26
+ require 'pathname'
27
+
28
+ module XcodeProject
29
+ class FileNode < Node
30
+ attr_reader :name
31
+ attr_reader :path
32
+ attr_reader :source_tree
33
+
34
+ def initialize(root, uuid, data)
35
+ super(root, uuid, data)
36
+
37
+ @source_tree = data['sourceTree']
38
+ @name ||= data['name']
39
+ @path ||= data['path']
40
+
41
+ @name ||= File.basename(@path) unless @path.nil?
42
+ end
43
+
44
+ def source_tree
45
+ SourceTreeMap[@source_tree]
46
+ end
47
+
48
+ def parent
49
+ root.select_objects { |_uuid, data|
50
+ (data['children'].include?(uuid) if data['isa'] == 'PBXGroup') ? true : false
51
+ }.first
52
+ end
53
+
54
+ def group_path
55
+ obj = self
56
+ res = ''
57
+ loop do
58
+ pn = obj.name ? obj.name : ''
59
+ res = Pathname.new(pn).join(res)
60
+ break unless (obj = obj.parent)
61
+ end
62
+ res.cleanpath
63
+ end
64
+
65
+ def total_path
66
+ res = ''
67
+ case source_tree
68
+ when :source_root
69
+ res = path
70
+ when :group
71
+ pn = path.nil? ? '' : path
72
+ res = parent.total_path.join(pn) unless parent.nil?
73
+ else
74
+ raise ParseError, "No such '#{source_tree}' source tree type."
75
+ end
76
+ root.absolute_path(res)
77
+ end
78
+
79
+ private_class_method
80
+
81
+ SourceTreeMap = {
82
+ 'SOURCE_ROOT' => :source_root,
83
+ '<group>' => :group
84
+ }.freeze
85
+ end
86
+ end
@@ -0,0 +1,47 @@
1
+ #--
2
+ # The MIT License
3
+ #
4
+ # Copyright (c) 2012-2014 Andrei Nesterov <ae.nesterov@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to
8
+ # deal in the Software without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
+ # sell copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #++
24
+
25
+ module XcodeProject
26
+ class Formatter
27
+ def initialize
28
+ @counter = 0
29
+ end
30
+
31
+ def inc
32
+ @counter += 1
33
+ end
34
+
35
+ def dec
36
+ @counter -= 1
37
+ end
38
+
39
+ def t1
40
+ "\n" + "\t" * @counter
41
+ end
42
+
43
+ def t2
44
+ "\n" + "\t" * (@counter + 1)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,42 @@
1
+ #--
2
+ # The MIT License
3
+ #
4
+ # Copyright (c) 2012-2014 Andrei Nesterov <ae.nesterov@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to
8
+ # deal in the Software without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
+ # sell copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #++
24
+
25
+ module XcodeProject
26
+ class Node
27
+ attr_reader :uuid
28
+ attr_reader :isa
29
+
30
+ def initialize(root, uuid, data)
31
+ @root = root
32
+ @uuid = uuid
33
+ @data = data
34
+ @isa = data['isa']
35
+ end
36
+
37
+ protected
38
+
39
+ attr_accessor :root
40
+ attr_accessor :data
41
+ end
42
+ end
@@ -0,0 +1,63 @@
1
+ #--
2
+ # The MIT License
3
+ #
4
+ # Copyright (c) 2012-2014 Andrei Nesterov <ae.nesterov@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to
8
+ # deal in the Software without restriction, including without limitation the
9
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
+ # sell copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #++
24
+
25
+ require 'xcodeproject/node'
26
+
27
+ module XcodeProject
28
+ class PBXBuildFile < Node
29
+ attr_reader :file_ref
30
+
31
+ def initialize(root, uuid, data)
32
+ super(root, uuid, data)
33
+
34
+ @file_ref = data['fileRef']
35
+ end
36
+
37
+ def file_ref
38
+ root.object!(@file_ref)
39
+ end
40
+
41
+ def remove!
42
+ root.project.targets.each do |target|
43
+ target.remove_source(self)
44
+ end
45
+ root.remove_object(uuid)
46
+ end
47
+
48
+ def self.add(root, file_ref_uuid)
49
+ uuid, data = root.add_object(create_object_hash(file_ref_uuid))
50
+ new(root, uuid, data)
51
+ end
52
+
53
+ private_class_method
54
+
55
+ def self.create_object_hash(file_ref_uuid)
56
+ data = []
57
+ data << %w[isa PBXBuildFile]
58
+ data << ['fileRef', file_ref_uuid]
59
+
60
+ Hash[data]
61
+ end
62
+ end
63
+ end