class Dependy::Graph::GraphReader

Attributes

excluded_folders[R]
pattern[R]
root_folder[R]

Public Class Methods

new(root_folder, excluded_folders = [], pattern = '*') click to toggle source
# File lib/dependy/graph/graph_reader.rb, line 6
def initialize(root_folder, excluded_folders = [], pattern = '*')
  @root_folder = root_folder
  @excluded_folders = excluded_folders
  @pattern = pattern
end

Public Instance Methods

read() click to toggle source
# File lib/dependy/graph/graph_reader.rb, line 12
def read
  Graph.new(objects_to_scan)
end

Private Instance Methods

all_imports_in_file(file) click to toggle source
# File lib/dependy/graph/graph_reader.rb, line 48
def all_imports_in_file(file)
  File.read(file).scan(/^#import "(.*)\.h"$/).flatten
end
filename(file) click to toggle source
# File lib/dependy/graph/graph_reader.rb, line 32
def filename(file)
  File.basename(file, '.*')
end
lookup_pattern(folder) click to toggle source
# File lib/dependy/graph/graph_reader.rb, line 44
def lookup_pattern(folder)
  "#{folder}/**/*.#{pattern}"
end
objects_to_exclude() click to toggle source
# File lib/dependy/graph/graph_reader.rb, line 36
def objects_to_exclude
  @objects_to_exclude ||= excluded_folders.map do |excluded_folder|
    Dir.glob(lookup_pattern(excluded_folder)).map do |file|
      File.basename(file, '.*')
    end
  end.flatten.uniq
end
objects_to_scan() click to toggle source
# File lib/dependy/graph/graph_reader.rb, line 19
def objects_to_scan
  Dir.glob(lookup_pattern(root_folder)).inject([]) do |result, file|
    scan_file(file).map do |import|
      result.push([filename(file), import]) unless import.empty?
    end
    result
  end
end
scan_file(file) click to toggle source
# File lib/dependy/graph/graph_reader.rb, line 28
def scan_file(file)
  all_imports_in_file(file) - [filename(file)] - objects_to_exclude
end