class SprocketsFS::SprocketsDir

Attributes

mount_dir[RW]
parent_dirs[RW]

Public Instance Methods

can_write?(path) click to toggle source
# File lib/sprockets_fs.rb, line 130
def can_write?(path)
  #base = convert_to_absolute("#{path[1..-1]}.coffee",false) || convert_to_absolute("#{path[1..-1]}.erb",false)
  base = unprocessed_parent_relative_file(path[1..-1])
  if base
    false
  else
    true
  end
end
contents(path) click to toggle source
# File lib/sprockets_fs.rb, line 82
def contents(path)
  all = files
  res = if path == '/'
    all.select { |x| x.split("/").size == 1 } + dirs.select { |x| x.split("/").size == 1 }
  else
    all.select do |f|
      f.starts_with?(path[1..-1])
    end.map { |f| f.gsub("#{path[1..-1]}/","") }
  end.uniq

  res = res.map do |f|
    if f =~ /\.coffee$/
      [f,f.gsub(/\.coffee$/,"")]
    elsif f =~ /\.erb$/
      [f,f.gsub(/\.erb$/,"")]
    else
      f
    end
  end.flatten

  puts "contents #{res.size}"

  res
end
convert_to_absolute(file,safe=true) click to toggle source
# File lib/sprockets_fs.rb, line 42
def convert_to_absolute(file,safe=true)
  file = file.to_s if file
  parent_dirs.each do |dir|
    base = "#{dir}/#{file}"
    return base if FileTest.exist?(base)
  end
  raise "can't convert #{file} to absolute" if safe
  nil
end
convert_to_relative(file) click to toggle source
# File lib/sprockets_fs.rb, line 32
def convert_to_relative(file)
  file = file.to_s if file
  parent_dirs.each do |dir|
    if file.starts_with?(dir)
      return file.gsub("#{dir}/","")
    end
  end
  raise "can't convert #{file} to relative, dirs are\n"+parent_dirs.join("\n")
  nil
end
directory?(path) click to toggle source
# File lib/sprockets_fs.rb, line 78
def directory?(path)
  path == "/" || dirs.include?(path[1..-1])
end
dirs() click to toggle source
# File lib/sprockets_fs.rb, line 58
def dirs
  res = []
  files.each do |f|
    if f.split("/").size > 1
      res << File.dirname(f)
    end
  end
  res
end
file?(path) click to toggle source
# File lib/sprockets_fs.rb, line 68
def file?(path)
  files.each do |f|
    return true if f == path[1..-1]
    if f.split(".").size > 2
      short = f.split(".")[0..-2].join(".")
      return true if short == path[1..-1]
    end
  end
  false
end
files() click to toggle source
# File lib/sprockets_fs.rb, line 51
def files
  res = []
  env.each_file do |f|
    res << convert_to_relative(f)
  end
  res - ["rails.png"]
end
parent_dir=(dir) click to toggle source
# File lib/sprockets_fs.rb, line 20
def parent_dir=(dir)
  self.parent_dirs = [dir]
end
read_file(path) click to toggle source
# File lib/sprockets_fs.rb, line 116
def read_file(path)
  ML.log("path #{path}") do
    base = convert_to_absolute(path[1..-1],false)
    if base
      File.read(base).strip
    else
      env.find_asset(path[1..-1]).to_s.strip
    end
  end
end
size(path) click to toggle source
# File lib/sprockets_fs.rb, line 126
def size(path)
  read_file(path).size
end
unprocessed_parent_relative_file(file) click to toggle source
# File lib/sprockets_fs.rb, line 107
def unprocessed_parent_relative_file(file)
  files.each do |possible_parent|
    if possible_parent.starts_with?(file) && possible_parent.length > file.length
      return possible_parent
    end
  end
  nil
end
write_to(path,contents) click to toggle source
# File lib/sprockets_fs.rb, line 140
def write_to(path,contents)
  full = convert_to_absolute(path[1..-1],false)
  if !full
    if parent_dirs.size == 1
      full = "#{parent_dirs.first}#{path}"
    else
      raise "can't write"
    end
  end

  File.create full, contents
end