Class: Phoenx::Target::HeaderBuilder
- Inherits:
-
Object
- Object
- Phoenx::Target::HeaderBuilder
- Defined in:
- lib/phoenx/use_cases/target/add_header.rb
Instance Attribute Summary collapse
-
#project ⇒ Object
readonly
Returns the value of attribute project.
-
#target ⇒ Object
readonly
Returns the value of attribute target.
-
#target_spec ⇒ Object
readonly
Returns the value of attribute target_spec.
-
#umbrella_headers ⇒ Object
readonly
Returns the value of attribute umbrella_headers.
Instance Method Summary collapse
- #add_header(header, attributes) ⇒ Object
- #add_headers(header_files, attributes, add_to_umbrella_header) ⇒ Object
- #add_private_headers ⇒ Object
- #add_project_headers ⇒ Object
- #add_public_headers ⇒ Object
- #build ⇒ Object
- #generate_umbrella_header ⇒ Object
-
#initialize(project, target, target_spec) ⇒ HeaderBuilder
constructor
A new instance of HeaderBuilder.
Constructor Details
#initialize(project, target, target_spec) ⇒ HeaderBuilder
Returns a new instance of HeaderBuilder.
11 12 13 14 15 16 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 11 def initialize(project, target, target_spec) @project = project @target = target @target_spec = target_spec @umbrella_headers = [] end |
Instance Attribute Details
#project ⇒ Object (readonly)
Returns the value of attribute project.
6 7 8 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 6 def project @project end |
#target ⇒ Object (readonly)
Returns the value of attribute target.
7 8 9 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 7 def target @target end |
#target_spec ⇒ Object (readonly)
Returns the value of attribute target_spec.
8 9 10 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 8 def target_spec @target_spec end |
#umbrella_headers ⇒ Object (readonly)
Returns the value of attribute umbrella_headers.
9 10 11 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 9 def umbrella_headers @umbrella_headers end |
Instance Method Details
#add_header(header, attributes) ⇒ Object
70 71 72 73 74 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 70 def add_header(header, attributes) file = Phoenx.get_or_add_file(@project, header) build_file = @target.headers_build_phase.add_file_reference(file, true) build_file.settings = attributes end |
#add_headers(header_files, attributes, add_to_umbrella_header) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 54 def add_headers(header_files, attributes, add_to_umbrella_header) headers = Phoenx.merge_files_array(header_files) unless !header_files || header_files.empty? || !headers.empty? puts "No #{attributes["ATTRIBUTES"].first} headers found".yellow end Phoenx.add_groups_for_files(@project, headers) headers.each do |header| self.add_header(header, attributes) end if add_to_umbrella_header @umbrella_headers += headers else @umbrella_headers -= headers end end |
#add_private_headers ⇒ Object
33 34 35 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 33 def add_private_headers self.add_headers(@target_spec.private_headers, ATTRIBUTES_PRIVATE_HEADERS, false) end |
#add_project_headers ⇒ Object
29 30 31 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 29 def add_project_headers self.add_headers(@target_spec.project_headers, ATTRIBUTES_PROJECT_HEADERS, true) end |
#add_public_headers ⇒ Object
25 26 27 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 25 def add_public_headers self.add_headers(@target_spec.public_headers, ATTRIBUTES_PUBLIC_HEADERS, true) end |
#build ⇒ Object
18 19 20 21 22 23 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 18 def build self.add_public_headers self.add_project_headers self.add_private_headers self.generate_umbrella_header end |
#generate_umbrella_header ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/phoenx/use_cases/target/add_header.rb', line 37 def generate_umbrella_header unless @target_spec.umbrella_header == nil entries = @umbrella_headers.map{ |header| unless @target_spec.module_name == nil import = '<' + @target_spec.module_name + '/' + File.basename(header) + '>' else import = '"' + File.basename(header) + '"' end '#import ' + import }.sort open(@target_spec.umbrella_header, "w") { |file| entries.each { |header| file.puts header } } self.add_header(@target_spec.umbrella_header, ATTRIBUTES_PUBLIC_HEADERS) end end |