class Phoenx::Target::HeaderBuilder

Attributes

project[R]
target[R]
target_spec[R]
umbrella_headers[R]

Public Class Methods

new(project, target, target_spec) click to toggle source
# 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

Public Instance Methods

add_header(header, attributes) click to toggle source
# 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) click to toggle source
# 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() click to toggle source
# 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() click to toggle source
# 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() click to toggle source
# 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() click to toggle source
# 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() click to toggle source
# 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