Sha256: 13dc81f6435adfcd9ae7151b754c7c612c7c6c245e4960d312b2fd3feebe5dae

Contents?: true

Size: 1.18 KB

Versions: 94

Compression:

Stored size: 1.18 KB

Contents

exports.at = at;

var HOURS_IN_A_DAY = 24;
var MINUTES_IN_AN_HOUR = 60;
var MINUTES_IN_A_DAY = HOURS_IN_A_DAY * MINUTES_IN_AN_HOUR;
var MILLIS_IN_A_MINUTE = 60 * 1000;
var MILLIS_IN_AN_HOUR = MINUTES_IN_AN_HOUR * MILLIS_IN_A_MINUTE;
var MILLIS_IN_A_DAY = HOURS_IN_A_DAY * MILLIS_IN_AN_HOUR;

function makePositive(time, maxValue) {
  return time % maxValue + maxValue;
}

function at(inputHours, inputMinutes) {
  var minutes = makePositive(inputMinutes || 0, MINUTES_IN_A_DAY);
  var hours = makePositive(inputHours, HOURS_IN_A_DAY);

  var clock = {};
  var value = (hours * MILLIS_IN_AN_HOUR) + (minutes * MILLIS_IN_A_MINUTE);
  value = makePositive(value, MILLIS_IN_A_DAY);

  clock.valueOf = function () {
    return value;
  };

  clock.toString = function () {
    var time = new Date(value).toISOString().split('T')[1].split(':');
    return time[0] + ':' + time[1];
  };

  clock.plus = function (addMinutes) {
    value += addMinutes * MILLIS_IN_A_MINUTE;
    return clock;
  };

  clock.minus = function (subMinutes) {
    value -= subMinutes * MILLIS_IN_A_MINUTE;
    return clock;
  };

  clock.equals = function (other) {
    return +clock === +other;
  };

  return Object.create(clock);
}

Version data entries

94 entries across 94 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.179 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.178 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.177 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.176 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.175 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.174 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.173 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.172 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.171 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.170 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.169 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.167 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.166 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.165 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.164 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.163 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.162 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.161 tracks/javascript/exercises/clock/example.js
trackler-2.2.1.160 tracks/javascript/exercises/clock/example.js