class Elm::Dependencies
Get files in dependencies from an Elm
file or code
Public Class Methods
from_content(content)
click to toggle source
# File lib/elm/dependencies.rb, line 42 def self.from_content(content) dep = new.init content only_existing_files dep.dependencies end
from_file(file)
click to toggle source
# File lib/elm/dependencies.rb, line 35 def self.from_file(file) # Error if not exists dep = new.init File.read(file), [File.dirname(file)] only_existing_files dep.dependencies end
new()
click to toggle source
# File lib/elm/dependencies.rb, line 77 def initialize self end
only_existing_files(dependencies)
click to toggle source
# File lib/elm/dependencies.rb, line 48 def self.only_existing_files(dependencies) dependencies end
Public Instance Methods
dependencies()
click to toggle source
# File lib/elm/dependencies.rb, line 70 def dependencies extract_dependencies(@content).uniq end
init(content)
click to toggle source
# File lib/elm/dependencies.rb, line 53 def init(content) init content, find_dirs self end
Private Instance Methods
extract_dependencies(src)
click to toggle source
# File lib/elm/dependencies.rb, line 97 def extract_dependencies(src) deps = [] src.each_line do |l| next unless l =~ /^import[[:blank:]]+([\w.]+)/ file = import_to_file Regexp.last_match(1) if file.is_a? DependencyFound deps << file.path deps.concat extract_dependencies(file.content) end end deps end
find_dirs()
click to toggle source
# File lib/elm/dependencies.rb, line 82 def find_dirs if File.exist? 'elm-package.json' read_elm_package_source_dirs else [''] end end
import_to_file(directive)
click to toggle source
# File lib/elm/dependencies.rb, line 111 def import_to_file(directive) relatives = @dirs.map { |dir| to_relative_file(dir, to_path(directive)) } files = relatives.select { |path| File.exist? path } if files.empty? DependencyNotFound.new else DependencyFound.new files.first end end
read_elm_package_source_dirs()
click to toggle source
# File lib/elm/dependencies.rb, line 91 def read_elm_package_source_dirs config = JSON.parse(File.read('elm-package.json')) config['source-directories'] end
to_path(directive)
click to toggle source
# File lib/elm/dependencies.rb, line 122 def to_path(directive) directive.tr('.', '/') + '.elm' end
to_relative_file(dir, directive)
click to toggle source
# File lib/elm/dependencies.rb, line 127 def to_relative_file(dir, directive) File.join(dir, directive).gsub(%r{^/}, '') end