Skip to content

Commit ee3af63

Browse files
Switch to ChronoUnit.
1 parent 0526a51 commit ee3af63

4 files changed

Lines changed: 33 additions & 47 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/localization/TimeAgoParser.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import org.schabi.newpipe.extractor.exceptions.ParsingException;
44
import org.schabi.newpipe.extractor.timeago.PatternsHolder;
5-
import org.schabi.newpipe.extractor.timeago.TimeAgoUnit;
65
import org.schabi.newpipe.extractor.utils.Parser;
76

7+
import java.time.temporal.ChronoUnit;
88
import java.util.Calendar;
99
import java.util.Collection;
1010
import java.util.Map;
@@ -42,14 +42,14 @@ public TimeAgoParser(PatternsHolder patternsHolder) {
4242
* @throws ParsingException if the time unit could not be recognized
4343
*/
4444
public DateWrapper parse(String textualDate) throws ParsingException {
45-
for (Map.Entry<TimeAgoUnit, Map<String, Integer>> caseUnitEntry : patternsHolder.specialCases().entrySet()) {
46-
final TimeAgoUnit timeAgoUnit = caseUnitEntry.getKey();
45+
for (Map.Entry<ChronoUnit, Map<String, Integer>> caseUnitEntry : patternsHolder.specialCases().entrySet()) {
46+
final ChronoUnit chronoUnit = caseUnitEntry.getKey();
4747
for (Map.Entry<String, Integer> caseMapToAmountEntry : caseUnitEntry.getValue().entrySet()) {
4848
final String caseText = caseMapToAmountEntry.getKey();
4949
final Integer caseAmount = caseMapToAmountEntry.getValue();
5050

5151
if (textualDateMatches(textualDate, caseText)) {
52-
return getResultFor(caseAmount, timeAgoUnit);
52+
return getResultFor(caseAmount, chronoUnit);
5353
}
5454
}
5555
}
@@ -63,22 +63,22 @@ public DateWrapper parse(String textualDate) throws ParsingException {
6363
timeAgoAmount = 1;
6464
}
6565

66-
final TimeAgoUnit timeAgoUnit = parseTimeAgoUnit(textualDate);
67-
return getResultFor(timeAgoAmount, timeAgoUnit);
66+
final ChronoUnit chronoUnit = parseChronoUnit(textualDate);
67+
return getResultFor(timeAgoAmount, chronoUnit);
6868
}
6969

7070
private int parseTimeAgoAmount(String textualDate) throws NumberFormatException {
7171
String timeValueStr = textualDate.replaceAll("\\D+", "");
7272
return Integer.parseInt(timeValueStr);
7373
}
7474

75-
private TimeAgoUnit parseTimeAgoUnit(String textualDate) throws ParsingException {
76-
for (Map.Entry<TimeAgoUnit, Collection<String>> entry : patternsHolder.asMap().entrySet()) {
77-
final TimeAgoUnit timeAgoUnit = entry.getKey();
75+
private ChronoUnit parseChronoUnit(String textualDate) throws ParsingException {
76+
for (Map.Entry<ChronoUnit, Collection<String>> entry : patternsHolder.asMap().entrySet()) {
77+
final ChronoUnit chronoUnit = entry.getKey();
7878

7979
for (String agoPhrase : entry.getValue()) {
8080
if (textualDateMatches(textualDate, agoPhrase)) {
81-
return timeAgoUnit;
81+
return chronoUnit;
8282
}
8383
}
8484
}
@@ -112,11 +112,11 @@ private boolean textualDateMatches(String textualDate, String agoPhrase) {
112112
}
113113
}
114114

115-
private DateWrapper getResultFor(int timeAgoAmount, TimeAgoUnit timeAgoUnit) {
115+
private DateWrapper getResultFor(int timeAgoAmount, ChronoUnit chronoUnit) {
116116
final Calendar calendarTime = getNow();
117117
boolean isApproximation = false;
118118

119-
switch (timeAgoUnit) {
119+
switch (chronoUnit) {
120120
case SECONDS:
121121
calendarTime.add(Calendar.SECOND, -timeAgoAmount);
122122
break;

timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/PatternsHolder.java

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.schabi.newpipe.extractor.timeago;
22

3+
import java.time.temporal.ChronoUnit;
34
import java.util.Collection;
45
import java.util.LinkedHashMap;
56
import java.util.Map;
@@ -16,7 +17,7 @@ public abstract class PatternsHolder {
1617
private final Collection<String> months;
1718
private final Collection<String> years;
1819

19-
private final Map<TimeAgoUnit, Map<String, Integer>> specialCases = new LinkedHashMap<>();
20+
private final Map<ChronoUnit, Map<String, Integer>> specialCases = new LinkedHashMap<>();
2021

2122
protected PatternsHolder(String wordSeparator, Collection<String> seconds, Collection<String> minutes,
2223
Collection<String> hours, Collection<String> days,
@@ -69,30 +70,25 @@ public Collection<String> years() {
6970
return years;
7071
}
7172

72-
public Map<TimeAgoUnit, Map<String, Integer>> specialCases() {
73+
public Map<ChronoUnit, Map<String, Integer>> specialCases() {
7374
return specialCases;
7475
}
7576

76-
protected void putSpecialCase(TimeAgoUnit unit, String caseText, int caseAmount) {
77-
Map<String, Integer> item = specialCases.get(unit);
78-
79-
if (item == null) {
80-
item = new LinkedHashMap<>();
81-
specialCases.put(unit, item);
82-
}
77+
protected void putSpecialCase(ChronoUnit unit, String caseText, int caseAmount) {
78+
Map<String, Integer> item = specialCases.computeIfAbsent(unit, k -> new LinkedHashMap<>());
8379

8480
item.put(caseText, caseAmount);
8581
}
8682

87-
public Map<TimeAgoUnit, Collection<String>> asMap() {
88-
final Map<TimeAgoUnit, Collection<String>> returnMap = new LinkedHashMap<>();
89-
returnMap.put(TimeAgoUnit.SECONDS, seconds());
90-
returnMap.put(TimeAgoUnit.MINUTES, minutes());
91-
returnMap.put(TimeAgoUnit.HOURS, hours());
92-
returnMap.put(TimeAgoUnit.DAYS, days());
93-
returnMap.put(TimeAgoUnit.WEEKS, weeks());
94-
returnMap.put(TimeAgoUnit.MONTHS, months());
95-
returnMap.put(TimeAgoUnit.YEARS, years());
83+
public Map<ChronoUnit, Collection<String>> asMap() {
84+
final Map<ChronoUnit, Collection<String>> returnMap = new LinkedHashMap<>();
85+
returnMap.put(ChronoUnit.SECONDS, seconds());
86+
returnMap.put(ChronoUnit.MINUTES, minutes());
87+
returnMap.put(ChronoUnit.HOURS, hours());
88+
returnMap.put(ChronoUnit.DAYS, days());
89+
returnMap.put(ChronoUnit.WEEKS, weeks());
90+
returnMap.put(ChronoUnit.MONTHS, months());
91+
returnMap.put(ChronoUnit.YEARS, years());
9692

9793
return returnMap;
9894
}

timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/TimeAgoUnit.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/patterns/iw.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
package org.schabi.newpipe.extractor.timeago.patterns;
66

77
import org.schabi.newpipe.extractor.timeago.PatternsHolder;
8-
import org.schabi.newpipe.extractor.timeago.TimeAgoUnit;
8+
9+
import java.time.temporal.ChronoUnit;
910

1011
public class iw extends PatternsHolder {
1112
private static final String WORD_SEPARATOR = " ";
@@ -26,10 +27,10 @@ public static iw getInstance() {
2627

2728
private iw() {
2829
super(WORD_SEPARATOR, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS);
29-
putSpecialCase(TimeAgoUnit.HOURS, "שעתיים", 2);
30-
putSpecialCase(TimeAgoUnit.DAYS, "יומיים", 2);
31-
putSpecialCase(TimeAgoUnit.WEEKS, "שבועיים", 2);
32-
putSpecialCase(TimeAgoUnit.MONTHS, "חודשיים", 2);
33-
putSpecialCase(TimeAgoUnit.YEARS, "שנתיים", 2);
30+
putSpecialCase(ChronoUnit.HOURS, "שעתיים", 2);
31+
putSpecialCase(ChronoUnit.DAYS, "יומיים", 2);
32+
putSpecialCase(ChronoUnit.WEEKS, "שבועיים", 2);
33+
putSpecialCase(ChronoUnit.MONTHS, "חודשיים", 2);
34+
putSpecialCase(ChronoUnit.YEARS, "שנתיים", 2);
3435
}
3536
}

0 commit comments

Comments
 (0)