Skip to content

Commit 0f41bac

Browse files
committed
1 parent 07bf540 commit 0f41bac

File tree

7 files changed

+164
-77
lines changed

7 files changed

+164
-77
lines changed

node_modules/tiny-relative-date/lib/factory.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function relativeDateFactory(translations) {
3232
delta = calculateDelta(now, date);
3333
}
3434

35-
var translate = function translate(translatePhrase, timeValue) {
35+
var translate = function translate(translatePhrase, timeValue, rawValue) {
3636
var key = void 0;
3737

3838
if (translatePhrase === 'justNow') {
@@ -46,54 +46,54 @@ function relativeDateFactory(translations) {
4646
var translation = translations[key];
4747

4848
if (typeof translation === 'function') {
49-
return translation(timeValue);
49+
return translation(timeValue, rawValue);
5050
}
5151

5252
return translation.replace('{{time}}', timeValue);
5353
};
5454

5555
switch (false) {
5656
case !(delta < 30):
57-
return translate('justNow');
57+
return translate('justNow', delta, delta);
5858

5959
case !(delta < minute):
60-
return translate('seconds', delta);
60+
return translate('seconds', delta, delta);
6161

6262
case !(delta < 2 * minute):
63-
return translate('aMinute');
63+
return translate('aMinute', 1, delta);
6464

6565
case !(delta < hour):
66-
return translate('minutes', Math.floor(delta / minute));
66+
return translate('minutes', Math.floor(delta / minute), delta);
6767

6868
case Math.floor(delta / hour) !== 1:
69-
return translate('anHour');
69+
return translate('anHour', Math.floor(delta / minute), delta);
7070

7171
case !(delta < day):
72-
return translate('hours', Math.floor(delta / hour));
72+
return translate('hours', Math.floor(delta / hour), delta);
7373

7474
case !(delta < day * 2):
75-
return translate('aDay');
75+
return translate('aDay', 1, delta);
7676

7777
case !(delta < week):
78-
return translate('days', Math.floor(delta / day));
78+
return translate('days', Math.floor(delta / day), delta);
7979

8080
case Math.floor(delta / week) !== 1:
81-
return translate('aWeek');
81+
return translate('aWeek', 1, delta);
8282

8383
case !(delta < month):
84-
return translate('weeks', Math.floor(delta / week));
84+
return translate('weeks', Math.floor(delta / week), delta);
8585

8686
case Math.floor(delta / month) !== 1:
87-
return translate('aMonth');
87+
return translate('aMonth', 1, delta);
8888

8989
case !(delta < year):
90-
return translate('months', Math.floor(delta / month));
90+
return translate('months', Math.floor(delta / month), delta);
9191

9292
case Math.floor(delta / year) !== 1:
93-
return translate('aYear');
93+
return translate('aYear', 1, delta);
9494

9595
default:
96-
return translate('overAYear');
96+
return translate('overAYear', Math.floor(delta / year), delta);
9797
}
9898
};
9999
}
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
22
"name": "tiny-relative-date",
3-
"version": "1.3.0",
3+
"version": "2.0.2",
44
"description": "Tiny function that provides relative, human-readable dates.",
55
"main": "lib/index.js",
66
"module": "src/index.js",
77
"scripts": {
8-
"build": "babel src -d lib",
8+
"build": "babel src -d lib && cp src/*.d.ts lib/",
99
"test": "npm run eslint && npm run jasmine",
10-
"eslint": "eslint --fix src/**/*.js",
11-
"jasmine": "jasmine",
10+
"eslint": "eslint --fix src/**/*.js spec/*.js",
11+
"jasmine": "TZ=UTC jasmine",
1212
"prepublish": "npm run build"
1313
},
1414
"files": [
@@ -23,17 +23,17 @@
2323
"url": "https://github.com/wildlyinaccurate/relative-date.git"
2424
},
2525
"devDependencies": {
26-
"babel-cli": "^6.24.1",
26+
"babel-cli": "^6.26.0",
2727
"babel-plugin-add-module-exports": "^0.2.1",
2828
"babel-preset-es2015": "^6.24.1",
29-
"babel-register": "^6.24.1",
30-
"eslint": "^4.1.0",
31-
"eslint-config-standard": "^10.2.1",
32-
"eslint-plugin-import": "^2.6.0",
33-
"eslint-plugin-node": "^5.0.0",
34-
"eslint-plugin-promise": "^3.5.0",
29+
"babel-register": "^6.26.0",
30+
"eslint": "^4.19.1",
31+
"eslint-config-standard": "^11.0.0",
32+
"eslint-plugin-import": "^2.11.0",
33+
"eslint-plugin-node": "^6.0.1",
34+
"eslint-plugin-promise": "^3.7.0",
3535
"eslint-plugin-standard": "^3.0.1",
36-
"jasmine": "^2.6.0",
37-
"jasmine-spec-reporter": "^4.1.1"
36+
"jasmine": "^3.1.0",
37+
"jasmine-spec-reporter": "^4.2.1"
3838
}
3939
}
Lines changed: 68 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,112 @@
11
const calculateDelta = (now, date) => Math.round(Math.abs(now - date) / 1000)
22

3+
const minute = 60
4+
const hour = minute * 60
5+
const day = hour * 24
6+
const week = day * 7
7+
const month = day * 30
8+
const year = day * 365
9+
310
export default function relativeDateFactory (translations) {
4-
return function relativeDate (date, now = new Date()) {
5-
if (!(date instanceof Date)) {
6-
date = new Date(date)
11+
const translate = (date, now, translatePhrase, timeValue, rawValue) => {
12+
let key
13+
14+
if (translatePhrase === 'justNow') {
15+
key = translatePhrase
16+
} else if (now >= date) {
17+
key = `${translatePhrase}Ago`
18+
} else {
19+
key = `${translatePhrase}FromNow`
720
}
821

9-
let delta = null
22+
const translation = translations[key]
1023

11-
const minute = 60
12-
const hour = minute * 60
13-
const day = hour * 24
14-
const week = day * 7
15-
const month = day * 30
16-
const year = day * 365
17-
18-
delta = calculateDelta(now, date)
19-
20-
if (delta > day && delta < week) {
21-
date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0)
22-
delta = calculateDelta(now, date)
24+
if (typeof translation === 'function') {
25+
return translation(timeValue, rawValue)
2326
}
2427

25-
const translate = (translatePhrase, timeValue) => {
26-
let key
27-
28-
if (translatePhrase === 'justNow') {
29-
key = translatePhrase
30-
} else if (now >= date) {
31-
key = `${translatePhrase}Ago`
32-
} else {
33-
key = `${translatePhrase}FromNow`
34-
}
28+
return translation.replace('{{time}}', timeValue)
29+
}
3530

36-
const translation = translations[key]
31+
return function relativeDate (date, now = new Date()) {
32+
if (!(date instanceof Date)) {
33+
date = new Date(date)
34+
}
3735

38-
if (typeof translation === 'function') {
39-
return translation(timeValue)
40-
}
36+
let delta = calculateDelta(now, date)
4137

42-
return translation.replace('{{time}}', timeValue)
38+
if (delta > day && delta < week) {
39+
date = new Date(
40+
date.getFullYear(),
41+
date.getMonth(),
42+
date.getDate(),
43+
0,
44+
0,
45+
0
46+
)
47+
delta = calculateDelta(now, date)
4348
}
4449

4550
switch (false) {
4651
case !(delta < 30):
47-
return translate('justNow')
52+
return translate(date, now, 'justNow', delta, delta)
4853

4954
case !(delta < minute):
50-
return translate('seconds', delta)
55+
return translate(date, now, 'seconds', delta, delta)
5156

5257
case !(delta < 2 * minute):
53-
return translate('aMinute')
58+
return translate(date, now, 'aMinute', 1, delta)
5459

5560
case !(delta < hour):
56-
return translate('minutes', Math.floor(delta / minute))
61+
return translate(
62+
date,
63+
now,
64+
'minutes',
65+
Math.floor(delta / minute),
66+
delta
67+
)
5768

5869
case Math.floor(delta / hour) !== 1:
59-
return translate('anHour')
70+
return translate(
71+
date,
72+
now,
73+
'anHour',
74+
Math.floor(delta / minute),
75+
delta
76+
)
6077

6178
case !(delta < day):
62-
return translate('hours', Math.floor(delta / hour))
79+
return translate(date, now, 'hours', Math.floor(delta / hour), delta)
6380

6481
case !(delta < day * 2):
65-
return translate('aDay')
82+
return translate(date, now, 'aDay', 1, delta)
6683

6784
case !(delta < week):
68-
return translate('days', Math.floor(delta / day))
85+
return translate(date, now, 'days', Math.floor(delta / day), delta)
6986

7087
case Math.floor(delta / week) !== 1:
71-
return translate('aWeek')
88+
return translate(date, now, 'aWeek', 1, delta)
7289

7390
case !(delta < month):
74-
return translate('weeks', Math.floor(delta / week))
91+
return translate(date, now, 'weeks', Math.floor(delta / week), delta)
7592

7693
case Math.floor(delta / month) !== 1:
77-
return translate('aMonth')
94+
return translate(date, now, 'aMonth', 1, delta)
7895

7996
case !(delta < year):
80-
return translate('months', Math.floor(delta / month))
97+
return translate(date, now, 'months', Math.floor(delta / month), delta)
8198

8299
case Math.floor(delta / year) !== 1:
83-
return translate('aYear')
100+
return translate(date, now, 'aYear', 1, delta)
84101

85102
default:
86-
return translate('overAYear')
103+
return translate(
104+
date,
105+
now,
106+
'overAYear',
107+
Math.floor(delta / year),
108+
delta
109+
)
87110
}
88111
}
89112
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
module.exports = {
2+
justNow: "اکنون",
3+
secondsAgo: "{{time}} ثانیه قبل",
4+
aMinuteAgo: "یک دقیقه قبل",
5+
minutesAgo: "{{time}} دقیقه قبل",
6+
anHourAgo: "یک ساعت قبل",
7+
hoursAgo: "{{time}} ساعت قبل",
8+
aDayAgo: "دیروز",
9+
daysAgo: "{{time}} روز قبل",
10+
aWeekAgo: "یک هفته قبل",
11+
weeksAgo: "{{time}} هفته قبل",
12+
aMonthAgo: "یک ماه قبل",
13+
monthsAgo: "{{time}} ماه قبل",
14+
aYearAgo: "یک سال قبل",
15+
yearsAgo: "{{time}} سال قبل",
16+
overAYearAgo: "بیش از یک سال قبل",
17+
secondsFromNow: "{{time}} ثانیه بعد",
18+
aMinuteFromNow: "یک دقیقه بعد",
19+
minutesFromNow: "{{time}} دقیقه بعد",
20+
anHourFromNow: "an hour from now",
21+
hoursFromNow: "{{time}} ساعت بعد",
22+
aDayFromNow: "فردا",
23+
daysFromNow: "{{time}} روز بعد",
24+
aWeekFromNow: "یک هفته بعد",
25+
weeksFromNow: "{{time}} هفته بعد",
26+
aMonthFromNow: "یک ماه بعد",
27+
monthsFromNow: "{{time}} ماه بعد",
28+
aYearFromNow: "یک سال بعد",
29+
yearsFromNow: "{{time}} سال بعد",
30+
overAYearFromNow: "بیش از یک سال بعد"
31+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
module.exports = {
2+
justNow: 'भर्खर',
3+
secondsAgo: '{{time}} सेकेण्ड अघि',
4+
aMinuteAgo: '१ मिनेट अघि',
5+
minutesAgo: '{{time}} मिनेट अघि',
6+
anHourAgo: '१ घण्टा अघि',
7+
hoursAgo: '{{time}} घण्टा अघि',
8+
aDayAgo: 'हिजो',
9+
daysAgo: '{{time}} दिन अघि',
10+
aWeekAgo: '१ हप्ता अघि',
11+
weeksAgo: '{{time}} हप्ता अघि',
12+
aMonthAgo: '१ महिना अघि',
13+
monthsAgo: '{{time}} महिना अघि',
14+
aYearAgo: '१ वर्ष अघि',
15+
yearsAgo: '{{time}} वर्ष अघि',
16+
overAYearAgo: '१ वर्षभन्दा धेरै',
17+
secondsFromNow: 'अहिलेदेखि {{time}} सेकेण्ड',
18+
aMinuteFromNow: 'अहिलेदेखि १ मिनेट',
19+
minutesFromNow: 'अहिलेदेखि {{time}} मिनेट',
20+
anHourFromNow: 'अहिलेदेखि १ घण्टा',
21+
hoursFromNow: 'अहिलेदेखि {{time}} घण्टा',
22+
aDayFromNow: 'भोलि',
23+
daysFromNow: 'अहिलेदेखि {{time}} दिन',
24+
aWeekFromNow: 'अहिलेदेखि १ हप्ता',
25+
weeksFromNow: 'अहिलेदेखि {{time}} हप्ता',
26+
aMonthFromNow: 'अहिलेदेखि १ महिना',
27+
monthsFromNow: 'अहिलेदेखि {{time}} महिना',
28+
aYearFromNow: 'अहिलेदेखि १ वर्ष',
29+
yearsFromNow: 'अहिलेदेखि {{time}} वर्ष',
30+
overAYearFromNow: 'अहिलेदेखि १ वर्ष भन्दा धेरै'
31+
}

package-lock.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@
146146
"supports-color": "^10.2.2",
147147
"tar": "^6.2.1",
148148
"text-table": "~0.2.0",
149-
"tiny-relative-date": "^1.3.0",
149+
"tiny-relative-date": "^2.0.2",
150150
"treeverse": "^3.0.0",
151151
"validate-npm-package-name": "^6.0.2",
152152
"which": "^5.0.0"
@@ -13756,7 +13756,9 @@
1375613756
"license": "MIT"
1375713757
},
1375813758
"node_modules/tiny-relative-date": {
13759-
"version": "1.3.0",
13759+
"version": "2.0.2",
13760+
"resolved": "https://registry.npmjs.org/tiny-relative-date/-/tiny-relative-date-2.0.2.tgz",
13761+
"integrity": "sha512-rGxAbeL9z3J4pI2GtBEoFaavHdO4RKAU54hEuOef5kfx5aPqiQtbhYktMOTL5OA33db8BjsDcLXuNp+/v19PHw==",
1376013762
"inBundle": true,
1376113763
"license": "MIT"
1376213764
},

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
"supports-color": "^10.2.2",
114114
"tar": "^6.2.1",
115115
"text-table": "~0.2.0",
116-
"tiny-relative-date": "^1.3.0",
116+
"tiny-relative-date": "^2.0.2",
117117
"treeverse": "^3.0.0",
118118
"validate-npm-package-name": "^6.0.2",
119119
"which": "^5.0.0"

0 commit comments

Comments
 (0)