Skip to content

Instantly share code, notes, and snippets.

@ChangJoo-Park
Created February 5, 2018 15:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ChangJoo-Park/f508bbe11bed1a0d1327a8597078abcf to your computer and use it in GitHub Desktop.
Save ChangJoo-Park/f508bbe11bed1a0d1327a8597078abcf to your computer and use it in GitHub Desktop.
require "yaml"
class Todo
YAML.mapping(
message: { type: String, nilable: false },
project: { type: String, nilable: true },
created_at: { type: Time, nilable: false, default: Time.now },
updated_at: { type: Time, nilable: false, default: Time.now },
due_to: { type: Time, nilable: true },
done: { type: Bool, nilable: false, default: false }
)
def initialize(message : String, project : String?, due_to : Time? = nil)
@message = ""
@created_at = Time.now
@updated_at = Time.now
@done = false
self.message = message
self.project = project
self.due_to = due_to
end
def update(message : String, project : String? | Nil?, due_to : Time? | Nil?)
updateTime
@message = message
@project = project
@due_to = due_to
self
end
def update(message : String, project : String)
update message: message, project: @project, due_to: @due_to
end
def update(message : String, due_to : Time)
update message: message, project: @project, due_to: @due_to
end
def update(message : String)
update message: message, project: @project, due_to: @due_to
end
def toggleDone
updateTime
@done = !@done
end
private def updateTime
@updated_at = Time.now
end
end
class TodoList
end
module TodoApp
class Cli
def start
end
end
end
# Testing Todo class
todo = Todo.new message: "Message", project: "Home"
puts todo
todo.update message: "Hello"
todo.update message: "Hello2", project: "Work"
todo.update message: "Hello3", project: "Team"
todo.update message: "Hello3", project: "Team", due_to: Time.now
puts todo.due_to
sleep 5.seconds
todo.update message: "Hello3", due_to: Time.now
puts todo.due_to
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment