class Mini::Guard::XFile

Attributes

associations[R]
last_modified[R]
path[R]
size[R]

Public Class Methods

new(path, code:, specs:, views:, factories:) click to toggle source
# File lib/mini/guard.rb, line 55
def initialize(path, code:, specs:, views:, factories:)
  @path          = path
  stat           = File.stat(path)
  @size          = stat.size
  @last_modified = stat.ctime
  @associations  = find_associations(code: code, specs: specs, views: views, factories: factories)
end

Public Instance Methods

eql?(xfile) click to toggle source
# File lib/mini/guard.rb, line 65
def eql?(xfile); self.path == xfile.path && self.last_modified == xfile.last_modified; end
hash() click to toggle source
# File lib/mini/guard.rb, line 64
def hash; "#{self.path}:#{self.last_modified}".hash; end
to_s() click to toggle source
# File lib/mini/guard.rb, line 63
def to_s; "file: #{path} size: #{size} last modified: #{last_modified} associations: #{associations}"; end

Private Instance Methods

basename() click to toggle source
# File lib/mini/guard.rb, line 73
def basename;    File.basename(path, ".*"); end
find_associations(code:, specs:, views:, factories:) click to toggle source
# File lib/mini/guard.rb, line 76
def find_associations(code:, specs:, views:, factories:)
  if is_view?
    specs.select{|e| e =~ /^spec\/controllers\/#{view_path}/}
  elsif is_code?
    if is_model?
      specs.select{|e| e.split('/')[-1] =~ /#{basename}/}
    else
      specs.select{|e| e =~ /#{basename}_spec/}
    end
  else
    if is_factory?
      specs.select{|e| e =~ /spec\/models\/(#{basename}|#{basename.singularize})_spec/}
    else
      [path]
    end
  end
end
is_code?() click to toggle source
# File lib/mini/guard.rb, line 70
def is_code?;    path =~ /^app\//; end
is_factory?() click to toggle source
# File lib/mini/guard.rb, line 69
def is_factory?; path =~ /^spec\/factories/; end
is_model?() click to toggle source
# File lib/mini/guard.rb, line 71
def is_model?;   path =~ /^app\/models/; end
is_view?() click to toggle source
# File lib/mini/guard.rb, line 72
def is_view?;    path =~ /^app\/views/; end
view_path() click to toggle source
# File lib/mini/guard.rb, line 74
def view_path;   path.split('/')[2..-2].join('/'); end