Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

64
LINES

< > BotCompany Repo | #1028541 // DateStructures

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (3370L/21K).

1  
sclass DateStructures {
2  
  asclass SomeDate {}
3  
  asclass SomeDateDate > SomeDate {} // day or higher granularity
4  
  asclass SomeTime > SomeDate {}
5  
  asclass SomeWeek > SomeDateDate {}
6  
  asclass DateProp > SomeDate {} // proposition on a date, e.g. a date range
7  
8  
  // years
9  
  static transformable record Year(int year) > SomeDateDate {}
10  
  static transformable record CurrentYearPlus(int nYears) > SomeDateDate {}
11  
  
12  
  // months
13  
  static transformable record Month(int month, Year year) > SomeDateDate {
14  
    Month(int month) { this(month, null); }
15  
  }
16  
  static transformable record CurrentMonthPlus(int nMonths) > SomeDateDate {}
17  
  
18  
  // weeks
19  
  static transformable record Week(int week, Year year) > SomeWeek {}
20  
  static transformable record CurrentWeekPlus(int nWeeks) > SomeWeek {}
21  
22  
  // days
23  
  static transformable record Day(int day, Month month) > SomeDate {}
24  
  static transformable record TodayPlus(int nDays) > SomeDate {}
25  
26  
  // weekdays
27  
  static transformable record Weekday(int weekday, SomeWeek week) > SomeDateDate {
28  
    // weekday is in Java count (1=Sunday)
29  
    Weekday(int weekday) { this.weekday = weekday; }
30  
  }
31  
32  
  // hours
33  
  static transformable record Hour(int hour, Bool isPM, Day day) > SomeTime {
34  
    Hour(int hour, Bool isPM) { this(hour, isPM, null); }
35  
  }
36  
  static transformable record CurrentHourPlus(int nHours) > SomeTime {}
37  
38  
  // minutes
39  
  static transformable record Minute(int minute, Hour hour) > SomeTime {}
40  
  static transformable record CurrentMinutePlus(int nMinutes) > SomeTime {}
41  
  
42  
  // seconds
43  
  static transformable record Second(int second, Minute minute) > SomeTime {}
44  
  
45  
  // special stuff
46  
  static transformable record BeginningOfTime > SomeDate {}
47  
  static transformable record EndOfTime > SomeDate {}
48  
  
49  
  // date ranges & boolean operations
50  
  static transformable record Between(SomeDate from, SomeDate to) > DateProp {}
51  
  static transformable record Or(DateProp a, DateProp b) > DateProp {}
52  
  static transformable record And(DateProp a, DateProp b) > DateProp {}
53  
  static transformable record Not(DateProp a) > DateProp {}
54  
  
55  
  // some utility functions
56  
  
57  
  sbool containsTimes(SomeDate d) {
58  
    ret defaultMetaTransformer().any(o -> o instanceof SomeTime, d);
59  
  }
60  
  
61  
  sbool containsDateDates(SomeDate d) {
62  
    ret defaultMetaTransformer().any(o -> o instanceof SomeDateDate, d);
63  
  }
64  
}

download  show line numbers  debug dex  old transpilations   

Travelled to 7 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv

No comments. add comment

Snippet ID: #1028541
Snippet name: DateStructures
Eternal ID of this version: #1028541/19
Text MD5: 0a3212893f26c40e0db407a48c6d70af
Transpilation MD5: 5f234156447a4495cb75747eb17374a5
Author: stefan
Category:
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2020-06-28 16:52:54
Source code size: 2397 bytes / 64 lines
Pitched / IR pitched: No / No
Views / Downloads: 287 / 671
Version history: 18 change(s)
Referenced in: [show references]