Merge pull request #4215 from j3ko/master

twix.js definition
This commit is contained in:
Masahiro Wakame
2015-04-29 22:40:03 +09:00
2 changed files with 359 additions and 0 deletions
+225
View File
@@ -0,0 +1,225 @@
/// <reference path="twix.d.ts" />
var someMoment = moment("20111031", "YYYYMMDD");
var otherMoment = moment("20120620", "YYYYMMDD");
var startTime = moment('20120701');
var endTime = moment('20120801');
someMoment.twix(otherMoment);
someMoment.twix('2012-05-25');
someMoment.twix({ year: 2012, month: 5, day: 25 });
someMoment.twix("05/25/1982", "MM/DD/YYYY", { parseStrict: true });
someMoment.twix(otherMoment, "MM/DD/YYYY", { parseStrict: true });
var range = moment(someMoment).twix(otherMoment);
var range2 = moment.twix(someMoment, otherMoment);
var range3 = someMoment.twix(otherMoment);
moment('1982-05-25').twix('1982-05-26', { allDay: true });
moment('1982-05-25').twix('1982-05-26', true);
moment().twix(moment()).isValid(); //=> true
moment().twix(moment().add(1, "day")).isValid(); //=> true
moment().twix(moment().subtract(1, "day")).isValid(); //=> false
moment("1982-05-25T05:00").twix("1982-05-26T06:00").isSame("day"); //=> false
moment("1982-05-25T05:00").twix("1982-05-25T06:00").isSame("day"); //=> true
moment("1982-05-25T05:00").twix("1982-05-25T06:00").isSame("year"); //=> true
moment("1982-05-25").twix("1982-05-26").isPast(); //=> true
moment("2054-05-25").twix("2054-05-26").isFuture(); //=> true
moment("2054-05-25").twix(moment().add(1, "hour")).isCurrent(); //=> true
moment("1982-05-25").twix("1982-05-28").contains("1982-05-26"); //=> true
moment("1982-05-25T5:30").twix("1982-05-25T6:30").length("hours") //=> 1
moment("1982-05-25T5:00").twix("1982-05-30T6:00").length("days") //=> 6
moment("1982-05-25T5:00").twix("1982-05-25T6:00").count("days") //=> 1
moment("1982-05-25T5:00").twix("1982-05-26T6:00").count("days") //=> 2
moment("1982-05-25T5:00").twix("1982-05-25T6:00").countInner("days") //=> 0
moment("1982-05-24T5:00").twix("1982-05-26T6:00").countInner("days") //=> 1
var iter = moment("1982-05-25T5:00").twix("1982-05-26T6:00").iterate("days");
iter.hasNext(); //=> true
iter.next(); //=> moment("1982-05-25")
iter.next(); //=> moment("1982-05-26")
iter.hasNext(); //=> false
iter.next(); //=> null
var iter = moment("16", "hh").twix("1982-05-26T6:00").iterate(2, 'hours');
iter.next().format('LT'); //=> '4:00 PM'
iter.next().format('LT'); //=> '6:00 PM'
var duration = moment.duration({ hours: 2, minutes: 30, seconds: 20 });
var iter = moment("16", "hh").twix(someMoment).iterate(duration);
iter.next().format('LT'); //=> '4:00 PM'
iter.next().format('LT'); //=> '6:30 PM'
iter.next().format('LT'); //=> '9:00 PM'
var iter2 = moment("1982-05-24T5:00").twix("1982-05-27T6:00").iterateInner("days");
iter.hasNext(); //=> true
iter.next(); //=> moment("1982-05-25")
iter.next(); //=> moment("1982-05-26")
iter.hasNext(); //=> false
iter.next(); //=> null
var range1 = moment("1982-05-25").twix("1982-05-30");
var range2 = moment("1982-05-27").twix("1982-06-13");
range1.overlaps(range2); //=> true
var range1 = moment("1982-05-25").twix("1982-08-30");
var range2 = moment("1982-05-27").twix("1982-06-13");
range1.engulfs(range2); //=> true
range2.engulfs(range1); //=> false
var range1 = moment("1982-05-25").twix("1982-08-30");
var range2 = moment("1982-05-25").twix("1982-08-30");
range1.equals(range2); //=> true
range2.equals(range1); //=> true
var range1 = moment("1982-05-25").twix("1982-05-30");
var range2 = moment("1982-05-27").twix("1982-06-13");
range1.union(range2); //=> 5/25/82 - 6/13/1982
var range1 = moment("1982-05-25").twix("1982-05-30");
var range2 = moment("1982-05-27").twix("1982-06-13");
range1.intersection(range2); //=> 5/27/82 - 5/30/1982
var range1 = moment("1982-05-24").twix("1982-05-28", true);
var range2 = moment("1982-05-22").twix("1982-05-26", true);
var xorred = range1.xor(range2);
xorred[0].format() //=> 'May 22 - 23, 1982'
xorred[1].format() //=> 'May 27 - 28, 1982'
var range1 = moment("1982-05-23").twix("1982-05-28", true);
var range2 = moment("1982-05-25").twix("1982-05-26", true);
var diff = range1.difference(range2);
diff[0].format(); //=> 'May 23 - 24, 1982'
diff[1].format(); //=> 'May 27 - 28, 1982'
var range = moment("1982-05-25T05:01").twix("1982-05-25T07:30");
var splits = range.split(1, "hour");
splits[0].format({ showDate: false }); //=> '5:01 - 6:01 AM'
splits[1].format({ showDate: false }); //=> '6:01 - 7:01 AM'
splits[2].format({ showDate: false }); //=> '7:01 - 7:30 AM'
//other signatures
range.split(moment.duration({ "h": 1 })).length; //=> 3
range.split(moment("1982-05-25T06:00")).length; //=> 2
range.split(moment("1982-05-25T06:00"), moment("1982-05-25T07:00")).length; //=> 3
var d = moment.duration(2, "days");
var range4 = d.afterMoment("1982-05-25"); //=> 5/25/1982 - 5/27/1982
var d = moment.duration(2, "days");
d.beforeMoment("1982-05-25"); //=> 5/23/1982 - 5/25/1982
var range = moment("1982-05-25").twix("1982-05-28");
range.asDuration("days"); //=> duration object with {days: 3}
var range = moment("1982-05-25T8:00").twix("1982-05-25T10:00");
range.humanizeLength(); //=> "2 hours"
range = moment("1982-05-25").twix("2013-01-01");
range.humanizeLength(); //=> 31 years
var range = moment("1982-05-25T9:00").twix("1982-05-25T12:00");
range.simpleFormat(); //=> '1982-05-25T09:00:00-04:00 - 1982-05-25T12:00:00-04:00'
range.simpleFormat("ddd, hA"); //=> 'Tue, 9AM - Tue, 12PM'
var range = moment("1982-05-25").twix("1982-05-26", { allDay: true });
range.simpleFormat(); //=> '1982-05-25T00:00:00-04:00 - 1982-05-26T00:00:00-04:00 (all day)'
range.simpleFormat("YYYY - MM - DD"); //=> '1982-05-25 - 1982-05-26 (all day)'
range.simpleFormat(null, { allDay: "-- all day! --" }); //=> '1982-05-25T00:00:00-04:00 - 1982-05-26T00:00:00-04:00 -- all day! --'
range.simpleFormat(null, { allDay: null }); //=> '1982-05-25T00:00:00-04:00 - 1982-05-26T00:00:00-04:00'
range.simpleFormat("HH:mm", { template: function (left, right) { return left + " | " + right; } }); //=> '16:21 | 17:21'
moment.twixClass.formatTemplate = function (left, right) { return left + " | " + right; };
range.simpleFormat("HH:mm"); //=> '16:29 | 17:29'
moment("1982-01-25T09:00").twix("1982-01-25T11:00").format(); //=> 'Jan 25, 1982, 9 - 11 AM'
moment("1982-01-25T9:00").twix("1982-01-26T13:00").format(); //=> 'Jan 25, 9 AM - Jan 26, 1 PM, 1982'
moment("2012-01-25").twix("2012-01-25", { allDay: true }).format(); //=> Jan 25
moment("1982-01-25").twix("1982-01-25", { allDay: true }).format(); //=> Jan 25, 1982
moment("2012-01-25").twix("2012-01-26", { allDay: true }).format(); //=> Jan 25 - 26
moment("1982-01-25").twix("1982-02-25", { allDay: true }).format(); //=> Jan 25 - Feb 25, 1982
moment("1982-01-25").twix(new Date(), { allDay: true }).format(); //=> Jan 25, 1982 - Jan 9, 2012
moment("1982-01-25T9:30").twix("1/25/1982 1:30 PM").format(); //=> Jan 25, 1982, 9:30 AM - 1:30 PM
moment("1982-01-25T9:30").twix(new Date()).format(); //=> Jan 25, 1982, 9:30 AM - Jan 9, 2012, 3:05 AM
moment("1982-01-25").twix("1982-01-27").format(); //=> Jan 25, 12 AM - Jan 27, 12 AM, 1982
var twix = moment("2012-05-25T9:00").twix("2012-05-25T10:00");
twix.format(); //=> May 25, 9 - 10 AM
twix.format({ implicitMinutes: false, groupMeridiems: false }); //=> May 25, 9:00 AM - 10:00 AM
var twix = moment().twix(moment().add('days', 1));
twix.format({ implicitYear: false }); //=> Mar 28, 1:13 AM - Mar 29, 1:13 AM, 2013
moment("2012-05-25T16:00").twix("2012-05-25T17:00").format({ twentyFourHour: true }); //=> May 25, 16:00 - 17:00
moment("2012-01-25T8:00").twix("2012-01-25T17:00").format({
monthFormat: "MMMM",
dayFormat: "Do"
});
moment("2012-05-25T8:00").twix("2012-05-25T17:00").format({ spaceBeforeMeridiem: false }); //=> May 25, 8AM - 5PM
moment("2012-05-25T8:00").twix("2012-05-25T17:00").format({ showDate: false }); //=> 8 AM - 5 PM
moment("2012-01-25").twix("2012-01-25", { allDay: true }).format({ showDate: false }); //=> All day
moment.lang("fr");
moment().twix(moment().add(3, "month")).simpleFormat("MMMM"); //=> 'juillet - octobre'
moment("1982-05-25").twix(moment("1982-05-27")).format(); //=> '25 mai, 0:00 - 27 mai, 0:00, 1982'
moment("1982-05-25").twix(moment("1982-05-27")).format({
groupMeridiems: true,
spaceBeforeMeridiem: true,
showDate: true,
showDayOfWeek: false,
twentyFourHour: false,
implicitMinutes: true,
implicitYear: true,
yearFormat: "YYYY",
monthFormat: "MMM",
weekdayFormat: "ddd",
dayFormat: "D",
meridiemFormat: "A",
hourFormat: "h",
minuteFormat: "mm",
allDay: "all day",
explicitAllDay: false,
lastNightEndsAt: 0
}); //=> '25 mai, 0:00 - 27 mai, 0:00, 1982'
var t = moment("1982-01-25T09:30").twix("1982-01-25T13:30");
t.format(); //=> Jan 25, 1982, 9:30 AM - 1:30 PM
t.isSame("day"); //=> true
t.humanizeLength(); //=> "4 hours"
t.count("days"); //=> 1
+134
View File
@@ -0,0 +1,134 @@
// Type definitions for twix.js 0.6.3
// Project: https://github.com/icambron/twix.js
// Definitions by: j3ko <https://github.com/j3ko>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../moment/moment.d.ts" />
declare module moment {
interface Moment {
twix(date: Date): Twix;
twix(date: Date, allDay: boolean): Twix;
twix(date: Date, options: TwixFormatOptions): Twix;
twix(date: Date, format: string, options: TwixFormatOptions): Twix;
twix(date: Moment): Twix;
twix(date: Moment, allDay: boolean): Twix;
twix(date: Moment, options: TwixFormatOptions): Twix;
twix(date: Moment, format: string, options: TwixFormatOptions): Twix;
twix(date: MomentInput): Twix;
twix(date: MomentInput, allDay: boolean): Twix;
twix(date: MomentInput, options: TwixFormatOptions): Twix;
twix(date: MomentInput, format: string, options: TwixFormatOptions): Twix;
twix(date: number): Twix;
twix(date: number, allDay: boolean): Twix;
twix(date: number, options: TwixFormatOptions): Twix;
twix(date: number, format: string, options: TwixFormatOptions): Twix;
twix(date: number[]): Twix;
twix(date: number[], allDay: boolean): Twix;
twix(date: number[], options: TwixFormatOptions): Twix;
twix(date: number[], format: string, options: TwixFormatOptions): Twix;
twix(date: string): Twix;
twix(date: string, allDay: boolean): Twix;
twix(date: string, options: TwixFormatOptions): Twix;
twix(date: string, format: string, options: TwixFormatOptions): Twix;
}
interface MomentStatic {
twix(start: Moment, end: Moment): Twix;
twixClass: TwixStatic;
}
interface TwixFormatOptions {
groupMeridiems?: boolean;
spaceBeforeMeridiem?: boolean;
showDate?: boolean;
showDayOfWeek?: boolean;
twentyFourHour?: boolean;
implicitMinutes?: boolean;
implicitYear?: boolean;
yearFormat?: string;
monthFormat?: string;
weekdayFormat?: string;
dayFormat?: string;
meridiemFormat?: string;
hourFormat?: string;
minuteFormat?: string;
allDay?: any; // boolean | string
explicitAllDay?: boolean;
lastNightEndsAt?: number;
}
interface TwixSimpleFormatOptions {
allDay?: string;
template?: (left: any, right: any) => any;
}
interface TwixIter {
hasNext(): boolean;
next(): Twix;
}
interface Duration {
afterMoment(date: string): string;
beforeMoment(date: string): string;
}
interface Twix {
isPast(): boolean;
isFuture(): boolean;
isCurrent(): boolean;
isSame(period: string): boolean;
contains(date: string): boolean;
contains(date: Date): boolean;
contains(date: Moment): boolean;
length(period: string): number;
count(period: string): number;
countInner(period: string): number;
iterate(period: string): TwixIter;
iterate(num: number, period: string): TwixIter;
iterate(duration: Duration): TwixIter;
iterateInner(period: string): TwixIter;
iterateInner(num: number, period: string): TwixIter;
overlaps(other: Twix): boolean;
engulfs(other: Twix): boolean;
equals(other: Twix): boolean;
union(other: Twix): string;
intersection(other: Twix): string;
xor(other: Twix): Twix[];
difference(other: Twix): Twix[];
split(num: number, period: string): Twix[];
split(other: Moment): Twix[];
split(start: Moment, end: Moment): Twix[];
split(duration: Duration): Twix[];
humanizeLength(): string;
simpleFormat(): string;
simpleFormat(format: string): string;
simpleFormat(format: string, options: TwixSimpleFormatOptions): string;
format(): string;
format(options: TwixFormatOptions): string;
asDuration(period: string): Duration;
isValid(): boolean;
}
interface TwixStatic {
formatTemplate?: (left: any, right: any) => any;
}
}
declare module 'twix' {
var _tmp: moment.MomentStatic;
export = _tmp;
}