class Umbrellify::SwiftSourceFile
Public Class Methods
new(file_path)
click to toggle source
# File lib/umbrellify/models/swift_source_file.rb, line 3 def initialize(file_path) @file_path = file_path end
Public Instance Methods
substitute_imports_if_needed(configuration)
click to toggle source
# File lib/umbrellify/models/swift_source_file.rb, line 50 def substitute_imports_if_needed(configuration) umbrella_name = configuration.umbrella_name file_text = get_file_text() imports = imports_list(strip_comments(file_text)) managed_imports = configuration.managed_imports if needs_to_substitute_imports?(imports, managed_imports, configuration) managed_imports_copy = managed_imports + [umbrella_name] umbrella_import = "import #{umbrella_name}" imports_list = imports.select { |value| managed_imports.include?(value) } imports_list.each_with_index do |value, index| regexp = /^import\s{1,}\b#{value}\b[^\n]*\n/ substitution = index == imports_list.count - 1 ? "#{umbrella_import}\n" : "" file_text = file_text.gsub regexp, substitution end end return file_text end
substitute_imports_if_needed!(configuration)
click to toggle source
# File lib/umbrellify/models/swift_source_file.rb, line 73 def substitute_imports_if_needed!(configuration) override_file! substitute_imports_if_needed(configuration) end
Private Instance Methods
get_file_text()
click to toggle source
# File lib/umbrellify/models/swift_source_file.rb, line 7 def get_file_text File.readlines(@file_path).join end
imports_list(file_text)
click to toggle source
# File lib/umbrellify/models/swift_source_file.rb, line 28 def imports_list(file_text) import_search_regexp = /^import\s*(\w*).*$/ file_text.scan(import_search_regexp).flatten end
needs_to_substitute_imports?(imports, managed_imports, configuration)
click to toggle source
# File lib/umbrellify/models/swift_source_file.rb, line 35 def needs_to_substitute_imports?(imports, managed_imports, configuration) return true unless configuration.substitute_managed_imports_only return true if imports.include? configuration.umbrella_name (managed_imports - imports).empty? end
override_file!(file_text)
click to toggle source
# File lib/umbrellify/models/swift_source_file.rb, line 44 def override_file!(file_text) File.write(@file_path, file_text) end
strip_comments(file_text)
click to toggle source
# File lib/umbrellify/models/swift_source_file.rb, line 13 def strip_comments(file_text) comment_types = [ /\/\/.*$/, # one-line /\/\*.*\*\//m, # multiline ] result = file_text comment_types.each do |regexp| result = result.gsub regexp, "" end result end