runOperation method

  1. @override
dynamic runOperation(
  1. String operator,
  2. dynamic rhs
)
override

Implementation

@override
runOperation(String operator, dynamic rhs) {
  int left = dateTime.millisecondsSinceEpoch;
  int right = 0;
  if (rhs is Date) {
    right = rhs.dateTime.millisecondsSinceEpoch;
  } else if (rhs is num) {
    right = rhs.toInt();
  } else if (rhs is String) {
    right = DateTime.parse(rhs).millisecondsSinceEpoch;
  }
  dynamic rtn;
  switch (operator) {
    case '==':
      rtn = left == right;
      break;
    case '!=':
      rtn = left != right;
      break;
    case '<':
      rtn = left < right;
      break;
    case '<=':
      rtn = left <= right;
      break;
    case '>':
      rtn = left > right;
      break;
    case '>=':
      rtn = left >= right;
      break;
    case '-':
      rtn = left - right;
      break;
    case '+':
      rtn = left + right;
      break;
    case '/':
      rtn = left / right;
      break;
    case '*':
      rtn = left * right;
      break;
    case '%':
      rtn = left % right;
      break;
    case '|':
      rtn = left | right;
      break;
    case '^':
      rtn = left ^ right;
      break;
    case '<<':
      rtn = left << right;
      break;
    case '>>':
      rtn = left >> right;
      break;
    case '&':
      rtn = left & right;
      break;
    default:
      throw ArgumentError('Unrecognized operator ${operator}');
  }
  return rtn;
}