UNPKG

@functional-lib/kalendar

Version:

kalendar fp

44 lines (33 loc) 985 B
import {tagged} from 'daggy'; const date = tagged('date', ['value']); date.prototype.equals = function(that) { return this.value.getTime() === that.getTime(); }; date.prototype.lte = function (that) { return this.value.getTime() < that.getTime(); }; date.prototype.map = function (f) { return date(f(this.value)); }; date.prototype.chain = function(f) { return date(this.map(f)).value; } date.of = function (x) { return date(new Date(x)); }; date.prototype.setMinutes = function (m) { return date.of(new Date(this.value).setMinutes(m)); }; date.prototype.setHours = function (h) { return date.of(new Date(this.value).setHours(h)); }; const diff = tagged('diff', ['f']); diff.prototype.contramap = function(g) { return diff((x,y)=> this.f(g(x), g(y))); } const weeks = tagged('kalendar', ['f']); //TODO: need to made the IO interfaz pattern weeks.prototype.contramap = function (g) { return weeks(x => this.f(g(x))); }; module.exports = {date, diff, weeks};