time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

date.js (3562B)


      1 import { REOther } from "../errors/messages.js";
      2 import { makeDefinition } from "../library/registry/fnDefinition.js";
      3 import { frDate, frNumber, frTimeDuration, } from "../library/registry/frTypes.js";
      4 import { FnFactory } from "../library/registry/helpers.js";
      5 import * as DateTime from "../utility/DateTime.js";
      6 import { vDate, vNumber, vTimeDuration } from "../value/index.js";
      7 const maker = new FnFactory({
      8     nameSpace: "",
      9     requiresNamespace: false,
     10 });
     11 const makeNumberToDurationFn = (name, fn) => maker.make({
     12     name,
     13     definitions: [makeDefinition([frNumber], ([t]) => vTimeDuration(fn(t)))],
     14 });
     15 const makeDurationToNumberFn = (name, fn) => maker.make({
     16     name,
     17     definitions: [makeDefinition([frTimeDuration], ([t]) => vNumber(fn(t)))],
     18 });
     19 export const library = [
     20     maker.fromDefinition("makeDateFromYear", makeDefinition([frNumber], ([year]) => {
     21         const result = DateTime.Date.makeFromYear(year);
     22         if (!result.ok) {
     23             throw new REOther(result.value);
     24         }
     25         return vDate(result.value);
     26     })),
     27     maker.fromDefinition("dateFromNumber", makeDefinition([frNumber], ([f]) => vDate(new Date(f)))),
     28     maker.fromDefinition("toNumber", makeDefinition([frDate], ([f]) => vNumber(f.getTime()))),
     29     maker.make({
     30         name: "subtract",
     31         definitions: [
     32             makeDefinition([frDate, frTimeDuration], ([d1, d2]) => vDate(DateTime.Date.subtractDuration(d1, d2))),
     33             makeDefinition([frDate, frDate], ([d1, d2]) => {
     34                 const result = DateTime.Date.subtract(d1, d2);
     35                 if (!result.ok) {
     36                     throw new REOther(result.value);
     37                 }
     38                 return vTimeDuration(result.value);
     39             }),
     40             makeDefinition([frTimeDuration, frTimeDuration], ([d1, d2]) => vTimeDuration(DateTime.Duration.subtract(d1, d2))),
     41         ],
     42     }),
     43     maker.make({
     44         name: "add",
     45         definitions: [
     46             makeDefinition([frDate, frTimeDuration], ([d1, d2]) => vDate(DateTime.Date.addDuration(d1, d2))),
     47             makeDefinition([frTimeDuration, frTimeDuration], ([d1, d2]) => vTimeDuration(DateTime.Duration.add(d1, d2))),
     48         ],
     49     }),
     50     maker.make({
     51         name: "multiply",
     52         definitions: [
     53             makeDefinition([frTimeDuration, frNumber], ([d1, d2]) => vTimeDuration(DateTime.Duration.multiply(d1, d2))),
     54         ],
     55     }),
     56     maker.make({
     57         name: "divide",
     58         definitions: [
     59             makeDefinition([frTimeDuration, frNumber], ([d1, d2]) => vTimeDuration(DateTime.Duration.divide(d1, d2))),
     60             makeDefinition([frTimeDuration, frTimeDuration], ([d1, d2]) => vNumber(d1 / d2)),
     61         ],
     62     }),
     63     makeNumberToDurationFn("minutes", DateTime.Duration.fromMinutes),
     64     makeNumberToDurationFn("fromUnit_minutes", DateTime.Duration.fromMinutes),
     65     makeNumberToDurationFn("hours", DateTime.Duration.fromHours),
     66     makeNumberToDurationFn("fromUnit_hours", DateTime.Duration.fromHours),
     67     makeNumberToDurationFn("days", DateTime.Duration.fromDays),
     68     makeNumberToDurationFn("fromUnit_days", DateTime.Duration.fromDays),
     69     makeNumberToDurationFn("years", DateTime.Duration.fromYears),
     70     makeNumberToDurationFn("fromUnit_years", DateTime.Duration.fromYears),
     71     makeDurationToNumberFn("toMinutes", DateTime.Duration.toMinutes),
     72     makeDurationToNumberFn("toHours", DateTime.Duration.toHours),
     73     makeDurationToNumberFn("toDays", DateTime.Duration.toDays),
     74     makeDurationToNumberFn("toYears", DateTime.Duration.toYears),
     75 ];
     76 //# sourceMappingURL=date.js.map