coffeescript-testing-tutorial/src/task.coffee
2012-07-10 23:48:29 +02:00

42 lines
973 B
CoffeeScript

class Task
constructor: (@name) ->
@status = 'incomplete'
complete: ->
if @parent? and @parent.status isnt 'complete'
throw "Dependent task '#{@parent.name}' is not completed."
@status = 'complete'
true
dependsOn: (@parent) ->
@parent.child = @
@status = 'dependent'
class TaskList
constructor: () ->
@tasks = []
@length = 0
add: (@name) ->
if typeof @name is 'string'
task = new Task 'take out garbage'
@tasks.push task
else
@tasks.push @name
@length++
remove: (task) ->
i = @tasks.indexOf task
@tasks = @tasks[0...i].concat @tasks[i+1..] if i > -1
@length = @tasks.length
print: ->
str = "Tasks\n\n"
for task in @tasks
str += "- #{task.name}"
str += " (depends on '#{task.parent.name}')" if task.parent?
str += " (completed)" if task.status is 'complete'
str += "\n"
str
root = exports ? window
root.Task = Task
root.TaskList = TaskList