Libraryless. Click here for Pure Java version (3111L/18K).
1 | sclass GazellePost {
|
2 | long id; |
3 | long created, modified, bumped; // timestamps |
4 | GazelleUser creator; |
5 | S text, title, type, botInfo; |
6 | bool creating, hidden; |
7 | L<Long> postRefs; |
8 | LS postRefTags; |
9 | O importedFrom; |
10 | |
11 | *() {}
|
12 | *(Map map) {
|
13 | id = toLong(map.get("id"));
|
14 | created = toLong(map.get("created"));
|
15 | modified = toLong(map.get("_modified"));
|
16 | bumped = toLong(map.get("bumped"));
|
17 | text = (S) map.get("text");
|
18 | title = (S) map.get("title");
|
19 | type = (S) map.get("type");
|
20 | botInfo = (S) map.get("botInfo");
|
21 | creating = isTrue(map.get("creating"));
|
22 | hidden = isTrue(map.get("hidden"));
|
23 | postRefs = allToLong((L) map.get("postRefs"));
|
24 | postRefTags = checkedListCast S(map.get("postRefTags"));
|
25 | long creatorID = toLong(map.get("creatorID"));
|
26 | S creatorName = cast map.get("creatorName");
|
27 | if (creatorID != 0 || nempty(creatorName)) {
|
28 | creator = new GazelleUser(creatorID, creatorName); |
29 | creator.isMaster = isTrue(map.get("creatorIsMaster"));
|
30 | } |
31 | } |
32 | |
33 | LPair<Long, S> taggedRefs() { ret zipTwoListsToPairs_lengthOfFirst(postRefs, postRefTags); }
|
34 | |
35 | // extended to length |
36 | LS postRefTags() {
|
37 | ret padList(postRefTags, l(postRefs)); |
38 | } |
39 | |
40 | long refWithTag(S tag) { ret unnull(first(refsWithTag(tag))); }
|
41 | |
42 | long refWithTagOrFail(S tag) {
|
43 | long ref = refWithTag(tag); |
44 | if (ref == 0) fail("Need " + quote(ref) + " reference");
|
45 | ret ref; |
46 | } |
47 | |
48 | L<Long> refsWithTag(S tag) {
|
49 | ret pairsAWhereB(taggedRefs(), t -> eqic_unnull(t, tag)); |
50 | } |
51 | |
52 | long parentID() { ret refWithTag(""); }
|
53 | |
54 | toString {
|
55 | S content = nempty(title) ? shorten(title) : escapeNewLines(shorten(text)); |
56 | ret content + " [by " + author() + "]"; |
57 | } |
58 | |
59 | S author() {
|
60 | S author = or2(strOrNull(creator), "unknown"); |
61 | if (isBotPost()) author += "'s bot " + quote(botInfo); |
62 | ret author; |
63 | } |
64 | |
65 | bool isReply() { ret nempty(postRefs); }
|
66 | bool isBotPost() { ret nempty(botInfo); }
|
67 | bool isJavaXCode() { ret eqicOrSwicPlusSpace(type, "JavaX Code"); }
|
68 | bool isPythonCode() { ret eqicOrSwicPlusSpace(type, "Python Code") && !ewic(type, " Checker"); }
|
69 | bool isAutoBotMade() { ret swic(botInfo, "Auto-Bot "); }
|
70 | bool isMasterMade() { ret creator != null && creator.isMaster; }
|
71 | |
72 | long modifiedOrBumped() { ret max(modified, bumped); }
|
73 | |
74 | S text() { ret text; }
|
75 | } |
download show line numbers debug dex old transpilations
Travelled to 5 computer(s): bhatertpkbcr, ekrmjmnbrukm, mqqgnosmbjvj, pyentgdyhuwx, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1029984 |
| Snippet name: | GazellePost |
| Eternal ID of this version: | #1029984/37 |
| Text MD5: | 0b3a30aaa2cf904c6b2f1cf034ed5a72 |
| Transpilation MD5: | a6d1f901b91bfe320807537255eb89e3 |
| Author: | stefan |
| Category: | javax / gazelle.rocks |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2021-01-05 00:00:55 |
| Source code size: | 2402 bytes / 75 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 551 / 961 |
| Version history: | 36 change(s) |
| Referenced in: | [show references] |