package seedu.typed.schedule;

import seedu.typed.model.task.DateTime;
//@@author A0139379M
/**
 * TimeExpression is an expression that specifies
 * a recurring date. All TimeExpression has an individual
 * instance method to work out whether a day lies in the
 * expression.
 * @author: YIM CHIA HUI
 **/
public interface TimeExpression {

    /**
     * Checks if date falls within TimeExpression
     * i.e if 12/12/2017 falls within every Monday
     * or second tuesday of every month etc
     * @params date
     * @return True if TimeExpression includes date
     **/
    public boolean includes(DateTime date);

    /**
     * Returns the next DateTime
     * where it falls within the TimeExpression
     * @param date
     * @return the next occurring DateTime object where
     * includes return true
     */
    public DateTime nextOccurrence(DateTime date);

}

@@ -133,16 +133,17 @@
 hat 
-specifie
+represent
 s%0A *
@@ -155,126 +155,130 @@
 curr
-ing date. All TimeExpression has an individual%0A * instance method to work out whether a day lies in the%0A * expression.
+ence rule. It is very powerful and is%0A * supported with set expressions to come up with more%0A * expressive recurrences.%0A *
 %0A * 
@@ -492,16 +492,23 @@
 nth etc%0A
+     *%0A
      * @
@@ -666,16 +666,16 @@
 ateTime%0A
-
      * w
@@ -710,24 +710,31 @@
 eExpression%0A
+     *%0A
      * @para

Tidy up code