summaryrefslogtreecommitdiff
path: root/date-fns/src/locale/pl/_lib/formatRelative/index.js
blob: 22eb1e284a907fc5e273c4277ad5f0dbe0770cf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'

var adjectivesLastWeek = {
  masculine: 'ostatni',
  feminine: 'ostatnia'
}

var adjectivesThisWeek = {
  masculine: 'ten',
  feminine: 'ta'
}

var adjectivesNextWeek = {
  masculine: 'następny',
  feminine: 'następna'
}

var dayGrammaticalGender = {
  0: 'feminine',
  1: 'masculine',
  2: 'masculine',
  3: 'feminine',
  4: 'masculine',
  5: 'masculine',
  6: 'feminine'
}

function getAdjectives(token, date, baseDate, options) {
  if (isSameUTCWeek(date, baseDate, options)) {
    return adjectivesThisWeek
  } else if (token === 'lastWeek') {
    return adjectivesLastWeek
  } else if (token === 'nextWeek') {
    return adjectivesNextWeek
  } else {
    throw new Error(`Cannot determine adjectives for token ${token}`)
  }
}

function getAdjective(token, date, baseDate, options) {
  var day = date.getUTCDay()
  var adjectives = getAdjectives(token, date, baseDate, options)
  var grammaticalGender = dayGrammaticalGender[day]

  return adjectives[grammaticalGender]
}

function dayAndTimeWithAdjective(token, date, baseDate, options) {
  var adjective = getAdjective(token, date, baseDate, options)
  return `'${adjective}' eeee 'o' p`
}

var formatRelativeLocale = {
  lastWeek: dayAndTimeWithAdjective,
  yesterday: "'wczoraj o' p",
  today: "'dzisiaj o' p",
  tomorrow: "'jutro o' p",
  nextWeek: dayAndTimeWithAdjective,
  other: 'P'
}

export default function formatRelative(token, date, baseDate, options) {
  var format = formatRelativeLocale[token]
  if (typeof format === 'function') {
    return format(token, date, baseDate, options)
  }

  return format
}