Class: Ruboty::Todo::Item

Inherits:
Object
  • Object
show all
Defined in:
lib/ruboty/todo/item.rb

Constant Summary collapse

ATTRIBUTES =
[:id, :title, :status, :deadline_at].freeze
STATUSES =
[:not_yet, :doing, :done, :deleted].freeze
EMOTICONS =
{
  new:     'new',
  not_yet: 'memo',
  doing:   'rocket',
  done:    'tada',
  deleted: 'x',
}

Instance Method Summary collapse

Constructor Details

#initialize(id, params) ⇒ Item

Returns a new instance of Item.



16
17
18
19
20
21
22
# File 'lib/ruboty/todo/item.rb', line 16

def initialize(id, params)
  self.id = id
  self.status = :not_yet
  ATTRIBUTES.each do |attr|
    self.send("#{attr}=".to_sym, params[attr]) if params.key?(attr)
  end
end

Instance Method Details

#deadline=(deadline) ⇒ Object



48
49
50
# File 'lib/ruboty/todo/item.rb', line 48

def deadline=(deadline)
  self.deadline_at = Time.parse(deadline) rescue nil
end

#deleteObject



40
41
42
# File 'lib/ruboty/todo/item.rb', line 40

def delete
  self.status = :deleted
end

#deleted?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/ruboty/todo/item.rb', line 44

def deleted?
  self.status == :deleted
end

#doing?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/ruboty/todo/item.rb', line 28

def doing?
  self.status == :doing
end

#done?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/ruboty/todo/item.rb', line 36

def done?
  self.status == :done
end

#finishObject



32
33
34
# File 'lib/ruboty/todo/item.rb', line 32

def finish
  self.status = :done
end

#format(new_item: false) ⇒ Object



52
53
54
55
56
# File 'lib/ruboty/todo/item.rb', line 52

def format(new_item: false)
  emoticon_state = new_item ? :new : status

  "[#{sprintf('%2d', id)}] :#{EMOTICONS[emoticon_state]}: #{title}"
end

#startObject



24
25
26
# File 'lib/ruboty/todo/item.rb', line 24

def start
  self.status = :doing
end