class Ergo::FileState
This subclass of State
is specialized for file change conditions.
Attributes
pattern[R]
File glob or regular expression.
Public Class Methods
new(pattern)
click to toggle source
Initialize new instance of FileState
.
pattern - File glob or regular expression. [String,Regexp] digest - The system digest. [Digest]
# File lib/ergo/state.rb, line 54 def initialize(pattern) #, digest) @pattern = pattern #@digest = digest end
Public Instance Methods
call(digest)
click to toggle source
Process logic.
# File lib/ergo/state.rb, line 66 def call(digest) result = [] case pattern when Regexp list = Dir.glob('**/*', File::FNM_PATHNAME) list = digest.filter(list) # apply ignore list.each do |fname| if md = pattern.match(fname) if digest.current[fname] != digest.saved[fname] result << Match.new(fname, md) end end end # NOTE: The problem with using the digest list, is that if a rule # adds a new file to the project, then a subsequent rule needs # to be able to see it. #@digest.current.keys.each do |fname| # if md = pattern.match(fname) # if @digest.current[fname] != @digest.saved[fname] # result << Match.new(fname, md) # end # end #end else list = Dir.glob(pattern, File::FNM_PATHNAME) list = digest.filter(list) list.each do |fname| if digest.current[fname] != digest.saved[fname] result << fname end end #@digest.current.keys.each do |fname| # if md = File.fnmatch?(pattern, fname, File::FNM_PATHNAME | File::FNM_EXTGLOB) # if @digest.current[fname] != @digest.saved[fname] # result << Match.new(fname, md) # end # end #end end return result end