module Files::Dependencies
Public Class Methods
get_dependencies(file)
click to toggle source
Takes in a file and returns all files that are dependents as an array of files without extension
# File lib/specss/files.rb, line 33 def self.get_dependencies(file) dependents = [] # Get file name without extension and convert to camel case basename = File.basename(file, ".*") basename = basename.gsub(/(?:^|_)([a-z])/) do $1.upcase end # Get rubrowser output and parse for the relation data output = %x|rubrowser &| data = output.match(/var\s+data\s+=\s+(.*?);/m)[1].split('</script>')[0] data_hash = JSON.parse(data) relations = data_hash['relations'] # Return dependents of input file dependents_data = relations.select { |i| i['resolved_namespace'] == basename } dependents_data.each do |d| filename = d['file'] basename = File.basename(filename, ".*") next if basename.include? '_spec' dependents.push(basename) unless dependents.include? basename end dependents end