Skip to content

Commit

Permalink
Merge pull request #87 from brockpetrie/4.0.0-bili
Browse files Browse the repository at this point in the history
4.0.0 bili
  • Loading branch information
BrockReece committed Jun 21, 2018
2 parents e8aafd9 + 60915cd commit dcea8dc
Show file tree
Hide file tree
Showing 10 changed files with 7,392 additions and 34 deletions.
1 change: 1 addition & 0 deletions .eslintignore
@@ -0,0 +1 @@
/dist
1 change: 1 addition & 0 deletions .eslintrc
Expand Up @@ -8,5 +8,6 @@
"prefer-destructuring": 0,
"no-shadow": 0,
"no-console": 0,
"global-require": 0
}
}
274 changes: 274 additions & 0 deletions dist/vue-moment.cjs.js
@@ -0,0 +1,274 @@
'use strict';

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};

function _toConsumableArray(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i];
}return arr2;
} else {
return Array.from(arr);
}
}

module.exports = {
install: function install(Vue, options) {
var moment = options && options.moment ? options.moment : require('moment');

Object.defineProperties(Vue.prototype, {
$moment: {
get: function get() {
return moment;
}
}
});

Vue.moment = moment;

Vue.filter('moment', function () {
var arguments$1 = arguments;

for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments$1[_key];
}

args = Array.prototype.slice.call(args);
var input = args.shift();
var date = void 0;

if (Array.isArray(input) && typeof input[0] === 'string') {
// If input is array, assume we're being passed a format pattern to parse against.
// Format pattern will accept an array of potential formats to parse against.
// Date string should be at [0], format pattern(s) should be at [1]
date = moment(input[0], input[1], true);
} else if (typeof input === 'number') {
if (input.toString().length < 12) {
// If input is an integer with fewer than 12 digits, assume Unix seconds...
date = moment.unix(input);
} else {
// ..otherwise, assume milliseconds.
date = moment(input);
}
} else {
// Otherwise, throw the input at moment and see what happens...
date = moment(input);
}

if (!input || !date.isValid()) {
// Log a warning if moment couldn't reconcile the input. Better than throwing an error?
console.warn('Could not build a valid `moment` object from input.');
return input;
}

function parse() {
var arguments$1 = arguments;

for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments$1[_key2];
}

args = Array.prototype.slice.call(args);
var method = args.shift();

switch (method) {
case 'add':
{
/*
* Mutates the original moment by adding time.
* http://momentjs.com/docs/#/manipulating/add/
*/

var addends = args.shift().split(',').map(Function.prototype.call, String.prototype.trim);
var obj = {};

for (var n = 0; n < addends.length; n++) {
var addend = addends[n].split(' ');
obj[addend[1]] = addend[0];
}
date.add(obj);
break;
}

case 'subtract':
{
/*
* Mutates the original moment by subtracting time.
* http://momentjs.com/docs/#/manipulating/subtract/
*/

var subtrahends = args.shift().split(',').map(Function.prototype.call, String.prototype.trim);
var _obj = {};

for (var _n = 0; _n < subtrahends.length; _n++) {
var subtrahend = subtrahends[_n].split(' ');
_obj[subtrahend[1]] = subtrahend[0];
}
date.subtract(_obj);
break;
}

case 'from':
{
/*
* Display a moment in relative time, either from now or from a specified date.
* http://momentjs.com/docs/#/displaying/fromnow/
*/

var from = 'now';
var removeSuffix = false;

if (args[0] === 'now') { args.shift(); }
// If valid, assume it is a date we want the output computed against.
if (moment(args[0]).isValid()) { from = moment(args.shift()); }

if (args[0] === true) {
args.shift();
removeSuffix = true;
}

if (from !== 'now') {
date = date.from(from, removeSuffix);
} else {
date = date.fromNow(removeSuffix);
}
break;
}

case 'diff':
{
/*
* Mutates the original moment by doing a difference with another date.
* http://momentjs.com/docs/#/displaying/difference/
*/

var referenceTime = moment();
var units = '';
var float = false;

if (moment(args[0]).isValid()) {
// If valid, assume it is a date we want the output computed against.
referenceTime = moment(args.shift());
} else if (args[0] === null || args[0] === 'now') {
// If null or 'now', remove argument and proceed with default referenceTime.
args.shift();
}

if (args[0]) { units = args.shift(); }

if (args[0] === true) { float = args.shift(); }

date = date.diff(referenceTime, units, float);
break;
}

case 'calendar':
{
/*
* Formats a date with different strings depending on how close
* to a certain date (today by default) the date is.
* http://momentjs.com/docs/#/displaying/calendar-time/
*/

var _referenceTime = moment();
var formats = {};

if (moment(args[0]).isValid()) {
// If valid, assume it is a date we want the output computed against.
_referenceTime = moment(args.shift());
} else if (args[0] === null || args[0] === 'now') {
// If null or 'now', remove argument and proceed with default referenceTime.
args.shift();
}

if (_typeof(args[0]) === 'object') { formats = args.shift(); }

date = date.calendar(_referenceTime, formats);
break;
}

case 'utc':
{
/*
* Mutates the original moment by converting to UTC
* https://momentjs.com/docs/#/manipulating/utc/
*/
date.utc();
break;
}

case 'timezone':
{
/*
* Mutates the original moment by converting to a new timezone.
* https://momentjs.com/timezone/docs/#/using-timezones/converting-to-zone/
*/
date.tz(args.shift());
break;
}

default:
{
/*
* Formats a date by taking a string of tokens and replacing
* them with their corresponding values.
* http://momentjs.com/docs/#/displaying/format/
*/

var format = method;
date = date.format(format);
}
}

if (args.length) { parse.apply(parse, args); }
}

parse.apply(parse, args);

return date;
});

Vue.filter('duration', function () {
var arguments$1 = arguments;

for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments$1[_key3];
}

/*
* Basic pass-through filter for leveraging moment.js's ability
* to manipulate and display durations.
* https://momentjs.com/docs/#/durations/
*/
args = Array.prototype.slice.call(args);
var input = args.shift();
var method = args.shift();

function createDuration(time) {
if (!Array.isArray(time)) { time = [time]; }
var result = moment.duration.apply(moment, _toConsumableArray(time));
if (!result.isValid()) { console.warn('Could not build a valid `duration` object from input.'); }
return result;
}
var duration = createDuration(input);

if (method === 'add' || method === 'subtract') {
// Generates a duration object and either adds or subtracts it
// from our original duration.
var durationChange = createDuration(args);
duration[method](durationChange);
} else if (duration && duration[method]) {
var _duration;

// This gives a full proxy to moment.duration functions.
duration = (_duration = duration)[method].apply(_duration, _toConsumableArray(args));
}

return duration;
});
}
};

0 comments on commit dcea8dc

Please sign in to comment.