Method: Ergo::FileState#call

Defined in:
lib/ergo/state.rb

#call(digest) ⇒ Object

Process logic.



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# 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