Module: Motion::Dependencies

Defined in:
lib/motion-dependencies.rb,
lib/motion-dependencies/version.rb

Constant Summary collapse

DEPENDENCY_LINE =
"# depends "
DEPENDENCY_LINE_LENGTH =
DEPENDENCY_LINE.length
VERSION =
"0.0.2"

Class Method Summary collapse

Class Method Details

.dependencies_for_file(file) ⇒ Object



13
14
15
16
# File 'lib/motion-dependencies.rb', line 13

def self.dependencies_for_file(file)
  File.open(file).each.map(&lambda {|line| dependency_for_line(line)})
  .select(&lambda {|x| x })
end

.dependency_for_line(line) ⇒ Object



6
7
8
9
10
11
# File 'lib/motion-dependencies.rb', line 6

def self.dependency_for_line(line)
  if line.start_with? DEPENDENCY_LINE
    return line.slice(DEPENDENCY_LINE_LENGTH, line.length - DEPENDENCY_LINE_LENGTH).strip
  end
  nil
end

.find_dependencies(files) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/motion-dependencies.rb', line 27

def self.find_dependencies(files)
  dependencies = {}
  files.each do |file|
    unresolved_dependencies = dependencies_for_file(file)
    if(unresolved_dependencies.length > 0)
      dependencies[file] = resolve_dependencies files, unresolved_dependencies
    end
  end
  dependencies
end

.resolve_dependencies(files, dependencies) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/motion-dependencies.rb', line 18

def self.resolve_dependencies files, dependencies
  files = files.select do |file|
    dependencies.select do |dependency|
      file.include? dependency
    end.length > 0
  end
  files.uniq
end