Method: Doc::BaseTask.state_methods

Defined in:
lib/doc/base_task.rb

.state_methods(name, data_code_for_state) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/doc/base_task.rb', line 20

def self.state_methods(name, data_code_for_state)
  class_eval <<-RUBY, __FILE__, __LINE__
    def #{name}_state
      @#{name}_state ||= #{data_code_for_state}
    end
    def #{name}_state_path
      doc_dir / '.#{name}_state'
    end
    def #{name}_state_changed?
      !#{name}_state_path.exist? || YAML.load(#{name}_state_path.read) != #{name}_state
    rescue
      true
    end
    def write_#{name}_state
      #{name}_state_path.write(YAML.dump(#{name}_state))
    end
  RUBY
end