moment-hijri icon indicating copy to clipboard operation
moment-hijri copied to clipboard

Export as high order function

Open lutherism opened this issue 7 years ago • 1 comments

Hello. I'm concerned using this library has implicit conflicts with other plugins. By adding methods to the singleton moment object at import time, it's possible to have conflicts at a distance in an app.

I'd advocate for exporting a "High Order Function" instead, so that the consumer can decide when/where to apply the plugin, and that will leave the original module unmodified.

ie:

require('moment');
var moment = require('moment-hijri');

becomes

var moment = require('moment-hijri')(require('moment'));

or in es6

import moment from 'moment';
import hijriify from 'moment-hijri';

const hijriMoment = hijiriify(moment);

Also remove need for AMD export in repo, as AMD projects could do:

define(['moment', 'moment-hijri'], function(moment, hijriify) {
  var hijriMoment = hijriify(moment);
});

lutherism avatar Mar 02 '17 00:03 lutherism

were you able to get moment/moment-hijri working in your project? I get an error: Uncaught TypeError: moment.localeData is not a function from this line extend(getPrototypeOf(moment.localeData()), { of line 274 in moment-hijri.js when I try to use it below. When I go and examine moment at this line, i see image

I am using parceljs to bundle my application though.

import moment from "moment";
import momenti from "moment-hijri";

console.log("moment:", moment());
console.log("momenti:", momenti);

cmttan avatar May 02 '18 17:05 cmttan