Class: Arrolio::AssetResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/arrolio/asset_resolver.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_dirs:) ⇒ AssetResolver

Returns a new instance of AssetResolver.



7
8
9
10
# File 'lib/arrolio/asset_resolver.rb', line 7

def initialize(base_dirs:)
  @base_dirs = Array(base_dirs).map { |directory| File.expand_path(directory.to_s) }.freeze
  freeze
end

Instance Attribute Details

#base_dirsObject (readonly)

Returns the value of attribute base_dirs.



5
6
7
# File 'lib/arrolio/asset_resolver.rb', line 5

def base_dirs
  @base_dirs
end

Class Method Details

.from_input_path(input_path, extra: []) ⇒ Object



23
24
25
26
27
28
# File 'lib/arrolio/asset_resolver.rb', line 23

def self.from_input_path(input_path, extra: [])
  directories = []
  directories << File.dirname(File.expand_path(input_path)) if input_path
  directories.concat(Array(extra))
  new(base_dirs: directories)
end

Instance Method Details

#resolve(source) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/arrolio/asset_resolver.rb', line 12

def resolve(source)
  return source if source.nil? || source.empty?
  return source if absolute?(source)

  @base_dirs.each do |base_dir|
    candidate = File.join(base_dir, source)
    return candidate if File.exist?(candidate)
  end
  source
end