Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ISSUE-177] Add test for relative date time for locales #181

Merged
merged 1 commit into from Jan 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
88 changes: 19 additions & 69 deletions lib/src/display.dart
Expand Up @@ -35,18 +35,18 @@ class Display {

String fromAsRelativeDateTime(
DateTime firstDateTime, DateTime secondDateTime, Locale locale) {
final isSecondDateTimeNowOrInTheFuture = query.isSameOrBefore(
final isFirstDateTimeSameOrBeforeSecondDateTime = query.isSameOrBefore(
firstDateTime, secondDateTime, Units.MICROSECOND, locale.startOfWeek());

final relativeTime = locale.relativeTime();
final relativeDateTime = locale.relativeDateTime();
var prefix, suffix;

if (isSecondDateTimeNowOrInTheFuture) {
prefix = relativeTime.prefixFromNow();
suffix = relativeTime.suffixFromNow();
if (isFirstDateTimeSameOrBeforeSecondDateTime) {
prefix = relativeDateTime.prefixFromNow();
suffix = relativeDateTime.suffixFromNow();
} else {
prefix = relativeTime.prefixAgo();
suffix = relativeTime.suffixAgo();
prefix = relativeDateTime.prefixAgo();
suffix = relativeDateTime.suffixAgo();
}

final seconds =
Expand All @@ -62,84 +62,34 @@ class Display {
var result;

if (seconds < 45) {
result = relativeTime.lessThanOneMinute(seconds.round());
result = relativeDateTime.lessThanOneMinute(seconds.round());
} else if (seconds < 90) {
result = relativeTime.aboutAMinute(minutes.round());
result = relativeDateTime.aboutAMinute(minutes.round());
} else if (minutes < 45) {
result = relativeTime.minutes(minutes.round());
result = relativeDateTime.minutes(minutes.round());
} else if (minutes < 90) {
result = relativeTime.aboutAnHour(minutes.round());
result = relativeDateTime.aboutAnHour(minutes.round());
} else if (hours < 24) {
result = relativeTime.hours(hours.round());
result = relativeDateTime.hours(hours.round());
} else if (hours < 48) {
result = relativeTime.aDay(hours.round());
result = relativeDateTime.aDay(hours.round());
} else if (days < 30) {
result = relativeTime.days(days.round());
result = relativeDateTime.days(days.round());
} else if (days < 60) {
result = relativeTime.aboutAMonth(days.round());
result = relativeDateTime.aboutAMonth(days.round());
} else if (days < 365) {
result = relativeTime.months(months.round());
result = relativeDateTime.months(months.round());
} else if (years < 2) {
result = relativeTime.aboutAYear(months.round());
result = relativeDateTime.aboutAYear(months.round());
} else {
result = relativeTime.years(years.round());
result = relativeDateTime.years(years.round());
}

return [prefix, result, suffix]
.where((str) => str.isNotEmpty)
.join(relativeTime.wordSeparator());
.join(relativeDateTime.wordSeparator());
}

// String fromAsAbsolute(DateTime firstDateTime, DateTime secondDateTime,
// Units unit, Locale locale) {
// var result;
//
// final isSecondDateTimeNowOrInTheFuture = query.isSameOrBefore(
// firstDateTime, secondDateTime, unit, locale.startOfWeek());
// var prefix = '';
// var suffix = '';
//
// if (isSecondDateTimeNowOrInTheFuture) {
// prefix = 'in';
// } else {
// suffix = 'ago';
// }
//
// final difference = diff(firstDateTime, secondDateTime, unit, true).abs();
//
// switch (unit) {
// case Units.MICROSECOND:
// result = '$difference microseconds';
// break;
// case Units.MILLISECOND:
// result = '$difference milliseconds';
// break;
// case Units.SECOND:
// result = '$difference seconds';
// break;
// case Units.MINUTE:
// result = '$difference minutes';
// break;
// case Units.HOUR:
// result = '$difference hours';
// break;
// case Units.DAY:
// result = '$difference days';
// break;
// case Units.WEEK:
// result = '$difference weeks';
// break;
// case Units.MONTH:
// result = '$difference months';
// break;
// case Units.YEAR:
// result = '$difference years';
// break;
// }
//
// return [prefix, result, suffix].where((str) => str.isNotEmpty).join(' ');
// }

num diff(DateTime firstDateTime, DateTime secondDateTime, Units unit,
bool asFloat) {
final firstDateTimeMicrosecondsSinceEpoch =
Expand Down
2 changes: 1 addition & 1 deletion lib/src/jiffy.dart
Expand Up @@ -5,7 +5,7 @@ import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/intl.dart';
import 'package:jiffy/src/enums/startOfWeek.dart';
import 'package:jiffy/src/enums/units.dart';
import 'package:jiffy/src/locale/availableLocales.dart';
import 'package:jiffy/src/locale/available_locales.dart';
import 'package:jiffy/src/locale/locale.dart';
import 'package:jiffy/src/utils/exception.dart';
import 'package:jiffy/src/utils/normalize_units.dart';
Expand Down
6 changes: 3 additions & 3 deletions lib/src/locale/locale.dart
@@ -1,6 +1,6 @@
import '../enums/startOfWeek.dart';
import '../enums/units.dart';
import 'relativeTime.dart';
import 'relative_date_time.dart';

abstract class Locale {
String code();
Expand All @@ -9,15 +9,15 @@ abstract class Locale {

StartOfWeek startOfWeek();

RelativeTime relativeTime();
RelativeDateTime relativeDateTime();

String getRelativeTime(
DateTime date1, {
DateTime? date2,
Units? maxRelativeTimeUnit =
Units.YEAR, // ONLY SUPPORT MINUTE, HOUR, DAY, MONTH, YEAR
}) {
final relative = relativeTime();
final relative = relativeDateTime();
final _date2 = date2 ?? DateTime.now();
final _allowFromNow = _date2.isBefore(date1);
var elapsed = _date2.millisecondsSinceEpoch - date1.millisecondsSinceEpoch;
Expand Down
20 changes: 10 additions & 10 deletions lib/src/locale/locales/arLocale.dart
@@ -1,7 +1,7 @@
import '../../enums/startOfWeek.dart';
import '../../utils/replace.dart';
import '../locale.dart';
import '../relativeTime.dart';
import '../relative_date_time.dart';

class ArLocale extends Locale {
@override
Expand All @@ -14,15 +14,15 @@ class ArLocale extends Locale {
StartOfWeek startOfWeek() => StartOfWeek.SATURDAY;

@override
RelativeTime relativeTime() => ArRelativeTime(true);
RelativeDateTime relativeDateTime() => ArRelativeTime(true);
}

class ArLyLocale extends ArLocale {
@override
String code() => 'ar_ly';

@override
RelativeTime relativeTime() => ArRelativeTime(false);
RelativeDateTime relativeDateTime() => ArRelativeTime(false);
}

class ArDzLocale extends ArLocale {
Expand All @@ -33,7 +33,7 @@ class ArDzLocale extends ArLocale {
StartOfWeek startOfWeek() => StartOfWeek.SUNDAY;

@override
RelativeTime relativeTime() => ArSaMaDzKwTnRelativeTime(false);
RelativeDateTime relativeDateTime() => ArSaMaDzKwTnRelativeTime(false);
}

class ArKwLocale extends ArLocale {
Expand All @@ -44,7 +44,7 @@ class ArKwLocale extends ArLocale {
StartOfWeek startOfWeek() => StartOfWeek.SUNDAY;

@override
RelativeTime relativeTime() => ArSaMaDzKwTnRelativeTime(false);
RelativeDateTime relativeDateTime() => ArSaMaDzKwTnRelativeTime(false);
}

class ArSaLocale extends ArLocale {
Expand All @@ -55,7 +55,7 @@ class ArSaLocale extends ArLocale {
StartOfWeek startOfWeek() => StartOfWeek.SUNDAY;

@override
RelativeTime relativeTime() => ArSaMaDzKwTnRelativeTime(true);
RelativeDateTime relativeDateTime() => ArSaMaDzKwTnRelativeTime(true);
}

class ArMaLocale extends ArLocale {
Expand All @@ -66,7 +66,7 @@ class ArMaLocale extends ArLocale {
StartOfWeek startOfWeek() => StartOfWeek.SATURDAY;

@override
RelativeTime relativeTime() => ArSaMaDzKwTnRelativeTime(false);
RelativeDateTime relativeDateTime() => ArSaMaDzKwTnRelativeTime(false);
}

class ArTnLocale extends ArLocale {
Expand All @@ -77,10 +77,10 @@ class ArTnLocale extends ArLocale {
StartOfWeek startOfWeek() => StartOfWeek.SATURDAY;

@override
RelativeTime relativeTime() => ArSaMaDzKwTnRelativeTime(false);
RelativeDateTime relativeDateTime() => ArSaMaDzKwTnRelativeTime(false);
}

class ArRelativeTime extends RelativeTime {
class ArRelativeTime extends RelativeDateTime {
bool replaceNum;
ArRelativeTime(this.replaceNum);

Expand Down Expand Up @@ -193,7 +193,7 @@ class ArRelativeTime extends RelativeTime {
String wordSeparator() => ' ';
}

class ArSaMaDzKwTnRelativeTime extends RelativeTime {
class ArSaMaDzKwTnRelativeTime extends RelativeDateTime {
bool replaceNum;
ArSaMaDzKwTnRelativeTime(this.replaceNum);

Expand Down
6 changes: 3 additions & 3 deletions lib/src/locale/locales/azLocale.dart
@@ -1,6 +1,6 @@
import '../../enums/startOfWeek.dart';
import '../locale.dart';
import '../relativeTime.dart';
import '../relative_date_time.dart';

class AzLocale extends Locale {
@override
Expand All @@ -13,10 +13,10 @@ class AzLocale extends Locale {
StartOfWeek startOfWeek() => StartOfWeek.MONDAY;

@override
RelativeTime relativeTime() => AzRelativeTime();
RelativeDateTime relativeDateTime() => AzRelativeTime();
}

class AzRelativeTime extends RelativeTime {
class AzRelativeTime extends RelativeDateTime {
@override
String prefixAgo() => '';
@override
Expand Down
6 changes: 3 additions & 3 deletions lib/src/locale/locales/bnLocale.dart
@@ -1,7 +1,7 @@
import '../../enums/startOfWeek.dart';
import '../../utils/replace.dart';
import '../locale.dart';
import '../relativeTime.dart';
import '../relative_date_time.dart';

class BnLocale extends Locale {
@override
Expand All @@ -14,10 +14,10 @@ class BnLocale extends Locale {
StartOfWeek startOfWeek() => StartOfWeek.SUNDAY;

@override
RelativeTime relativeTime() => BnRelativeTime();
RelativeDateTime relativeDateTime() => BnRelativeTime();
}

class BnRelativeTime extends RelativeTime {
class BnRelativeTime extends RelativeDateTime {
@override
String prefixAgo() => '';
@override
Expand Down
6 changes: 3 additions & 3 deletions lib/src/locale/locales/deLocale.dart
@@ -1,6 +1,6 @@
import '../../enums/startOfWeek.dart';
import '../locale.dart';
import '../relativeTime.dart';
import '../relative_date_time.dart';

class DeLocale extends Locale {
@override
Expand All @@ -13,7 +13,7 @@ class DeLocale extends Locale {
StartOfWeek startOfWeek() => StartOfWeek.MONDAY;

@override
RelativeTime relativeTime() => DeRelativeTime();
RelativeDateTime relativeDateTime() => DeRelativeTime();
}

class DeDeLocale extends DeLocale {
Expand All @@ -31,7 +31,7 @@ class DeChLocale extends DeLocale {
String code() => 'de_ch';
}

class DeRelativeTime extends RelativeTime {
class DeRelativeTime extends RelativeDateTime {
@override
String prefixAgo() => 'vor';
@override
Expand Down
6 changes: 3 additions & 3 deletions lib/src/locale/locales/enLocale.dart
@@ -1,6 +1,6 @@
import '../../enums/startOfWeek.dart';
import '../locale.dart';
import '../relativeTime.dart';
import '../relative_date_time.dart';

class EnLocale extends Locale {
@override
Expand All @@ -14,7 +14,7 @@ class EnLocale extends Locale {
StartOfWeek startOfWeek() => StartOfWeek.SUNDAY;

@override
RelativeTime relativeTime() => EnRelativeTime();
RelativeDateTime relativeDateTime() => EnRelativeTime();
}

class EnUsLocale extends EnLocale {
Expand Down Expand Up @@ -63,7 +63,7 @@ class EnNzLocale extends EnLocale {
String code() => 'en_nz';
}

class EnRelativeTime extends RelativeTime {
class EnRelativeTime extends RelativeDateTime {
@override
String prefixAgo() => '';
@override
Expand Down
6 changes: 3 additions & 3 deletions lib/src/locale/locales/esLocale.dart
@@ -1,6 +1,6 @@
import '../../enums/startOfWeek.dart';
import '../locale.dart';
import '../relativeTime.dart';
import '../relative_date_time.dart';

class EsLocale extends Locale {
@override
Expand All @@ -13,7 +13,7 @@ class EsLocale extends Locale {
StartOfWeek startOfWeek() => StartOfWeek.MONDAY;

@override
RelativeTime relativeTime() => EsRelativeTime();
RelativeDateTime relativeDateTime() => EsRelativeTime();
}

class EsDoLocale extends EsLocale {
Expand All @@ -29,7 +29,7 @@ class EsUsLocale extends EsLocale {
StartOfWeek startOfWeek() => StartOfWeek.SUNDAY;
}

class EsRelativeTime extends RelativeTime {
class EsRelativeTime extends RelativeDateTime {
@override
String prefixAgo() => 'hace';
@override
Expand Down
6 changes: 3 additions & 3 deletions lib/src/locale/locales/faLocale.dart
@@ -1,7 +1,7 @@
import '../../enums/startOfWeek.dart';
import '../../utils/replace.dart';
import '../locale.dart';
import '../relativeTime.dart';
import '../relative_date_time.dart';

class FaLocale extends Locale {
@override
Expand All @@ -14,10 +14,10 @@ class FaLocale extends Locale {
StartOfWeek startOfWeek() => StartOfWeek.SATURDAY;

@override
RelativeTime relativeTime() => FaRelativeTime();
RelativeDateTime relativeDateTime() => FaRelativeTime();
}

class FaRelativeTime extends RelativeTime {
class FaRelativeTime extends RelativeDateTime {
@override
String prefixAgo() => '';
@override
Expand Down