Sha256: a0edaaf2296923d2379fb623dba583d1eab7813e0bcaed3e1b5cbd420a43d1f8

Contents?: true

Size: 866 Bytes

Versions: 3

Compression:

Stored size: 866 Bytes

Contents

module TaskManager
  class NewTaskFile < TaskFile
    def pick(id)
      node = find_node(id)
      task = Task.new_from_node(node)
      yield(task) if block_given?
      handle_xml { node.remove }
      task
    end

    def delete(id)
      node = find_node(id)
      task = Task.new_from_node(node)
      handle_xml { node.remove }
      task
    end

    protected

    def find_node(id)
      node = root_node.css('task').find { |t| t['id'].to_i == id.to_i }
      raise 'ID not exists'.colorize(:light_red) unless node
      node
    end

    def root_node
      @root_node ||= begin
        xml.css(NEW_NODE).first || begin
          node = xml.create_element(NEW_NODE)
          super.add_child(node)
          node
        end
      end
    end

    def create_node(task)
      node = super
      node['created_at'] = time_now
      node
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
task_manager2-0.0.16 lib/task_manager/new_task_file.rb
task_manager2-0.0.15 lib/task_manager/new_task_file.rb
task_manager2-0.0.14 lib/task_manager/new_task_file.rb