Class: PPL::Header
- Inherits:
-
Object
- Object
- PPL::Header
- Defined in:
- lib/pod-pipeline/util/header.rb
Overview
PPL::Header
Class Method Summary collapse
- .combine(output, inputs, include_list = [], exclude_list = []) ⇒ Object
- .combine_base(output) ⇒ Object
- .combine_check(path, pattern_list = []) ⇒ Object
- .combine_check_skip(path, queue, include_list = [], exclude_list = []) ⇒ Object
- .combine_collect(inputs, include_list = [], exclude_list = []) ⇒ Object
- .combine_reset(header, inputs) ⇒ Object
Class Method Details
.combine(output, inputs, include_list = [], exclude_list = []) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/pod-pipeline/util/header.rb', line 72 def self.combine(output, inputs, include_list = [], exclude_list = []) puts "\n目标文件:#{output}\n" combine_collect(inputs, include_list, exclude_list).each do |input| Dir["#{input}/Headers/*.h"].each do |header| next if header.include?('-umbrella.h') FileUtils.cp(header, output, 'preserve': true) end end Dir["#{output}/*.h"].each { |header| combine_reset(header, inputs) } combine_base(output) end |
.combine_base(output) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/pod-pipeline/util/header.rb', line 59 def self.combine_base(output) base_name = PPL::Scanner.name base_header = "#{output}/#{base_name}.h" base_macro = "#{base_name.upcase}_HEADER" base_content = [] base_file = File.open(base_header, 'w') base_content << "#ifndef #{base_macro}" base_content << "#define #{base_macro}" Dir["#{output}/*.h"].each { |header| base_content << "#import <#{base_name}/#{File.basename(header)}>" } base_content << "#endif //#{base_macro}" base_content.each { |base_line| base_file.puts(base_line) } end |
.combine_check(path, pattern_list = []) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/pod-pipeline/util/header.rb', line 4 def self.combine_check(path, pattern_list = []) return false if pattern_list.empty? path_basename = File.basename(path) pattern_list.each do |pattern| pattern_basename = File.basename(pattern) return true if path_basename == "#{pattern_basename}.framework" end false end |
.combine_check_skip(path, queue, include_list = [], exclude_list = []) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/pod-pipeline/util/header.rb', line 17 def self.combine_check_skip(path, queue, include_list = [], exclude_list = []) # 若 path 非目录 则跳过 return true unless File.directory?(path) # 若 path 非被include标记的文件 则跳过 return true unless combine_check(path, include_list) # 若 path 为被exclude标记的文件 则跳过 return true if combine_check(path, exclude_list) # 若 path 为序列中已存在的文件 则跳过 return true if queue.include? path false end |
.combine_collect(inputs, include_list = [], exclude_list = []) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/pod-pipeline/util/header.rb', line 30 def self.combine_collect(inputs, include_list = [], exclude_list = []) # 获取合并文件的路径序列 input_queue = [] inputs.each do |input| puts "\n合并路径:#{input}" Dir[input].each do |input_path| next if combine_check_skip(input_path, input_queue, include_list, exclude_list) # 合并 puts "=> #{input_path}" input_queue << input_path end end input_queue end |
.combine_reset(header, inputs) ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/pod-pipeline/util/header.rb', line 48 def self.combine_reset(header, inputs) content = File.read(header) replace = PPL::Scanner.name inputs.each do |input| Dir[input].each do |input_path| content = content.gsub("#import <#{File.basename(input_path, '.framework')}", "#import <#{replace}") end end File.write(header, content) end |