Sha256: e81c9a3b9b9aeae1c937091d4c473336d2f597e1099f918cd53061aa1c975cef

Contents?: true

Size: 1.18 KB

Versions: 255

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) {
  time %= maxValue;
  time += maxValue;
  return time;
}

function at(hours, minutes) {
  minutes = minutes || 0;
  hours = makePositive(hours, HOURS_IN_A_DAY);
  minutes = makePositive(minutes, MINUTES_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 (minutes) {
    value += minutes * MILLIS_IN_A_MINUTE;
    return clock;
  };

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

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

  return Object.create(clock);
};

Version data entries

255 entries across 255 versions & 1 rubygems

Version Path
trackler-2.1.0.19 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.18 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.17 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.16 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.15 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.14 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.13 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.12 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.11 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.10 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.9 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.8 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.7 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.6 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.5 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.4 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.3 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.2 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.1 tracks/javascript/exercises/clock/example.js
trackler-2.1.0.0 tracks/javascript/exercises/clock/example.js