diff options
Diffstat (limited to 'date-fns/src/locale/sk/_lib')
-rw-r--r-- | date-fns/src/locale/sk/_lib/formatDistance/index.js | 231 | ||||
-rw-r--r-- | date-fns/src/locale/sk/_lib/formatLong/index.js | 44 | ||||
-rw-r--r-- | date-fns/src/locale/sk/_lib/formatRelative/index.js | 81 | ||||
-rw-r--r-- | date-fns/src/locale/sk/_lib/localize/index.js | 204 | ||||
-rw-r--r-- | date-fns/src/locale/sk/_lib/match/index.js | 138 |
5 files changed, 698 insertions, 0 deletions
diff --git a/date-fns/src/locale/sk/_lib/formatDistance/index.js b/date-fns/src/locale/sk/_lib/formatDistance/index.js new file mode 100644 index 0000000..cacb5b4 --- /dev/null +++ b/date-fns/src/locale/sk/_lib/formatDistance/index.js @@ -0,0 +1,231 @@ +// NOTE: should prolly be improved +// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1308 + +function declensionGroup(scheme, count) { + if (count === 1) { + return scheme.one + } + + if (count >= 2 && count <= 4) { + return scheme.twoFour + } + + // if count === null || count === 0 || count >= 5 + return scheme.other +} + +function declension(scheme, count, time) { + var group = declensionGroup(scheme, count) + var finalText = group[time] || group + return finalText.replace('{{count}}', count) +} + +function extractPreposition(token) { + var result = ['lessThan', 'about', 'over', 'almost'].filter(function( + preposition + ) { + return !!token.match(new RegExp('^' + preposition)) + }) + + return result[0] +} + +function prefixPreposition(preposition) { + var translation = '' + + if (preposition === 'almost') { + translation = 'takmer' + } + + if (preposition === 'about') { + translation = 'približne' + } + + return translation.length > 0 ? translation + ' ' : '' +} + +function suffixPreposition(preposition) { + var translation = '' + + if (preposition === 'lessThan') { + translation = 'menej než' + } + + if (preposition === 'over') { + translation = 'viac než' + } + + return translation.length > 0 ? translation + ' ' : '' +} + +function lowercaseFirstLetter(string) { + return string.charAt(0).toLowerCase() + string.slice(1) +} + +var formatDistanceLocale = { + xSeconds: { + one: { + regular: 'sekunda', + past: 'sekundou', + future: 'sekundu' + }, + twoFour: { + regular: '{{count}} sekundy', + past: '{{count}} sekundami', + future: '{{count}} sekundy' + }, + other: { + regular: '{{count}} sekúnd', + past: '{{count}} sekundami', + future: '{{count}} sekúnd' + } + }, + + halfAMinute: { + other: { + regular: 'pol minúty', + past: 'pol minútou', + future: 'pol minúty' + } + }, + + xMinutes: { + one: { + regular: 'minúta', + past: 'minútou', + future: 'minútu' + }, + twoFour: { + regular: '{{count}} minúty', + past: '{{count}} minútami', + future: '{{count}} minúty' + }, + other: { + regular: '{{count}} minút', + past: '{{count}} minútami', + future: '{{count}} minút' + } + }, + + xHours: { + one: { + regular: 'hodina', + past: 'hodinou', + future: 'hodinu' + }, + twoFour: { + regular: '{{count}} hodiny', + past: '{{count}} hodinami', + future: '{{count}} hodiny' + }, + other: { + regular: '{{count}} hodín', + past: '{{count}} hodinami', + future: '{{count}} hodín' + } + }, + + xDays: { + one: { + regular: 'deň', + past: 'dňom', + future: 'deň' + }, + twoFour: { + regular: '{{count}} dni', + past: '{{count}} dňami', + future: '{{count}} dni' + }, + other: { + regular: '{{count}} dní', + past: '{{count}} dňami', + future: '{{count}} dní' + } + }, + + xWeeks: { + one: { + regular: 'mesiac', // TODO + past: 'mesiacom', // TODO + future: 'mesiac' // TODO + }, + twoFour: { + regular: '{{count}} mesiace', // TODO + past: '{{count}} mesiacmi', // TODO + future: '{{count}} mesiace' // TODO + }, + other: { + regular: '{{count}} mesiacov', // TODO + past: '{{count}} mesiacmi', // TODO + future: '{{count}} mesiacov' // TODO + } + }, + + xMonths: { + one: { + regular: 'mesiac', + past: 'mesiacom', + future: 'mesiac' + }, + twoFour: { + regular: '{{count}} mesiace', + past: '{{count}} mesiacmi', + future: '{{count}} mesiace' + }, + other: { + regular: '{{count}} mesiacov', + past: '{{count}} mesiacmi', + future: '{{count}} mesiacov' + } + }, + + xYears: { + one: { + regular: 'rok', + past: 'rokom', + future: 'rok' + }, + twoFour: { + regular: '{{count}} roky', + past: '{{count}} rokmi', + future: '{{count}} roky' + }, + other: { + regular: '{{count}} rokov', + past: '{{count}} rokmi', + future: '{{count}} rokov' + } + } +} + +export default function formatDistance(token, count, options) { + options = options || {} + + var preposition = extractPreposition(token) || '' + var key = lowercaseFirstLetter(token.substring(preposition.length)) + var scheme = formatDistanceLocale[key] + + if (!options.addSuffix) { + return ( + prefixPreposition(preposition) + + suffixPreposition(preposition) + + declension(scheme, count, 'regular') + ) + } + + if (options.comparison > 0) { + return ( + prefixPreposition(preposition) + + 'o ' + + suffixPreposition(preposition) + + declension(scheme, count, 'future') + ) + } else { + return ( + prefixPreposition(preposition) + + 'pred ' + + suffixPreposition(preposition) + + declension(scheme, count, 'past') + ) + } +} diff --git a/date-fns/src/locale/sk/_lib/formatLong/index.js b/date-fns/src/locale/sk/_lib/formatLong/index.js new file mode 100644 index 0000000..bca7361 --- /dev/null +++ b/date-fns/src/locale/sk/_lib/formatLong/index.js @@ -0,0 +1,44 @@ +import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index' + +// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1986 +var dateFormats = { + full: 'EEEE d. MMMM y', + long: 'd. MMMM y', + medium: 'd. M. y', + short: 'd. M. y' +} + +// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#2149 +var timeFormats = { + full: 'H:mm:ss zzzz', + long: 'H:mm:ss z', + medium: 'H:mm:ss', + short: 'H:mm' +} + +// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1994 +var dateTimeFormats = { + full: '{{date}}, {{time}}', + long: '{{date}}, {{time}}', + medium: '{{date}}, {{time}}', + short: '{{date}} {{time}}' +} + +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: 'full' + }), + + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: 'full' + }), + + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: 'full' + }) +} + +export default formatLong diff --git a/date-fns/src/locale/sk/_lib/formatRelative/index.js b/date-fns/src/locale/sk/_lib/formatRelative/index.js new file mode 100644 index 0000000..cbe159e --- /dev/null +++ b/date-fns/src/locale/sk/_lib/formatRelative/index.js @@ -0,0 +1,81 @@ +import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index' + +// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1308 +var accusativeWeekdays = [ + 'nedeľu', + 'pondelok', + 'utorok', + 'stredu', + 'štvrtok', + 'piatok', + 'sobotu' +] + +function lastWeek(day) { + var weekday = accusativeWeekdays[day] + + switch (day) { + case 0: /* Sun */ + case 3: /* Wed */ + case 6 /* Sat */: + return "'minulú " + weekday + " o' p" + default: + return "'minulý' eeee 'o' p" + } +} + +function thisWeek(day) { + var weekday = accusativeWeekdays[day] + + if (day === 4 /* Thu */) { + return "'vo' eeee 'o' p" + } else { + return "'v " + weekday + " o' p" + } +} + +function nextWeek(day) { + var weekday = accusativeWeekdays[day] + + switch (day) { + case 0: /* Sun */ + case 4: /* Wed */ + case 6 /* Sat */: + return "'budúcu' " + weekday + " 'o' p" + default: + return "'budúci' eeee 'o' p" + } +} + +var formatRelativeLocale = { + lastWeek: function(date, baseDate, options) { + var day = date.getUTCDay() + if (isSameUTCWeek(date, baseDate, options)) { + return thisWeek(day) + } else { + return lastWeek(day) + } + }, + yesterday: "'včera o' p", + today: "'dnes o' p", + tomorrow: "'zajtra o' p", + nextWeek: function(date, baseDate, options) { + var day = date.getUTCDay() + if (isSameUTCWeek(date, baseDate, options)) { + return thisWeek(day) + } else { + return nextWeek(day) + } + }, + other: 'P' +} + +export default function formatRelative(token, date, baseDate, options) { + var format = formatRelativeLocale[token] + + if (typeof format === 'function') { + return format(date, baseDate, options) + } + + return format +} diff --git a/date-fns/src/locale/sk/_lib/localize/index.js b/date-fns/src/locale/sk/_lib/localize/index.js new file mode 100644 index 0000000..3fbbe0b --- /dev/null +++ b/date-fns/src/locale/sk/_lib/localize/index.js @@ -0,0 +1,204 @@ +import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index' + +// https://www.unicode.org/cldr/charts/32/summary/sk.html#1772 +var eraValues = { + narrow: ['pred Kr.', 'po Kr.'], + abbreviated: ['pred Kr.', 'po Kr.'], + wide: ['pred Kristom', 'po Kristovi'] +} + +// https://www.unicode.org/cldr/charts/32/summary/sk.html#1780 +var quarterValues = { + narrow: ['1', '2', '3', '4'], + abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'], + wide: ['1. štvrťrok', '2. štvrťrok', '3. štvrťrok', '4. štvrťrok'] +} + +// https://www.unicode.org/cldr/charts/32/summary/sk.html#1804 +var monthValues = { + narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], + abbreviated: [ + 'jan', + 'feb', + 'mar', + 'apr', + 'máj', + 'jún', + 'júl', + 'aug', + 'sep', + 'okt', + 'nov', + 'dec' + ], + wide: [ + 'január', + 'február', + 'marec', + 'apríl', + 'máj', + 'jún', + 'júl', + 'august', + 'september', + 'október', + 'november', + 'december' + ] +} +var formattingMonthValues = { + narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], + abbreviated: [ + 'jan', + 'feb', + 'mar', + 'apr', + 'máj', + 'jún', + 'júl', + 'aug', + 'sep', + 'okt', + 'nov', + 'dec' + ], + wide: [ + 'januára', + 'februára', + 'marca', + 'apríla', + 'mája', + 'júna', + 'júla', + 'augusta', + 'septembra', + 'októbra', + 'novembra', + 'decembra' + ] +} + +// https://www.unicode.org/cldr/charts/32/summary/sk.html#1876 +var dayValues = { + narrow: ['n', 'p', 'u', 's', 'š', 'p', 's'], + short: ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'], + abbreviated: ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'], + wide: [ + 'nedeľa', + 'pondelok', + 'utorok', + 'streda', + 'štvrtok', + 'piatok', + 'sobota' + ] +} + +// https://www.unicode.org/cldr/charts/32/summary/sk.html#1932 +var dayPeriodValues = { + narrow: { + am: 'AM', + pm: 'PM', + midnight: 'poln.', + noon: 'pol.', + morning: 'ráno', + afternoon: 'pop.', + evening: 'več.', + night: 'noc' + }, + abbreviated: { + am: 'AM', + pm: 'PM', + midnight: 'poln.', + noon: 'pol.', + morning: 'ráno', + afternoon: 'popol.', + evening: 'večer', + night: 'noc' + }, + wide: { + am: 'AM', + pm: 'PM', + midnight: 'polnoc', + noon: 'poludnie', + morning: 'ráno', + afternoon: 'popoludnie', + evening: 'večer', + night: 'noc' + } +} +var formattingDayPeriodValues = { + narrow: { + am: 'AM', + pm: 'PM', + midnight: 'o poln.', + noon: 'nap.', + morning: 'ráno', + afternoon: 'pop.', + evening: 'več.', + night: 'v n.' + }, + abbreviated: { + am: 'AM', + pm: 'PM', + midnight: 'o poln.', + noon: 'napol.', + morning: 'ráno', + afternoon: 'popol.', + evening: 'večer', + night: 'v noci' + }, + wide: { + am: 'AM', + pm: 'PM', + midnight: 'o polnoci', + noon: 'napoludnie', + morning: 'ráno', + afternoon: 'popoludní', + evening: 'večer', + night: 'v noci' + } +} + +function ordinalNumber(dirtyNumber, _dirtyOptions) { + var number = Number(dirtyNumber) + return number + '.' +} + +var localize = { + ordinalNumber: ordinalNumber, + + era: buildLocalizeFn({ + values: eraValues + // defaultWidth: 'wide' + }), + + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: 'wide', + argumentCallback: function(quarter) { + return Number(quarter) - 1 + } + }), + + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: 'wide', + formattingValues: formattingMonthValues, + defaultFormattingWidth: 'wide' + }), + + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: 'wide' + }), + + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: 'wide', + formattingValues: formattingDayPeriodValues, + defaultFormattingWidth: 'wide' + }) +} + +export default localize diff --git a/date-fns/src/locale/sk/_lib/match/index.js b/date-fns/src/locale/sk/_lib/match/index.js new file mode 100644 index 0000000..366c5a4 --- /dev/null +++ b/date-fns/src/locale/sk/_lib/match/index.js @@ -0,0 +1,138 @@ +import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index' +import buildMatchFn from '../../../_lib/buildMatchFn/index' + +var matchOrdinalNumberPattern = /^(\d+)\.?/i +var parseOrdinalNumberPattern = /\d+/i + +var matchEraPatterns = { + narrow: /^(pred Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i, + abbreviated: /^(pred Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i, + wide: /^(pred Kristom|pred na[šs][íi]m letopo[čc]tom|po Kristovi|n[áa][šs]ho letopo[čc]tu)/i +} +var parseEraPatterns = { + any: [/^pr/i, /^(po|n)/i] +} + +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^q[1234]/i, + wide: /^[1234]\. [šs]tvr[ťt]rok/i +} +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] +} + +var matchMonthPatterns = { + narrow: /^[jfmasond]/i, + abbreviated: /^(jan|feb|mar|apr|m[áa]j|j[úu]n|j[úu]l|aug|sep|okt|nov|dec)/i, + wide: /^(janu[áa]ra?|febru[áa]ra?|(marec|marca)|apr[íi]la?|m[áa]ja?|j[úu]na?|j[úu]la?|augusta?|(september|septembra)|(okt[óo]ber|okt[óo]bra)|(november|novembra)|(december|decembra))/i +} +var parseMonthPatterns = { + narrow: [ + /^j/i, + /^f/i, + /^m/i, + /^a/i, + /^m/i, + /^j/i, + /^j/i, + /^a/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ], + any: [ + /^ja/i, + /^f/i, + /^mar/i, + /^ap/i, + /^m[áa]j/i, + /^j[úu]n/i, + /^j[úu]l/i, + /^au/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ] +} + +var matchDayPatterns = { + narrow: /^[npusšp]/i, + short: /^(ne|po|ut|st|št|pi|so)/i, + abbreviated: /^(ne|po|ut|st|št|pi|so)/i, + wide: /^(nede[ľl]a|pondelok|utorok|streda|[šs]tvrtok|piatok|sobota])/i +} +var parseDayPatterns = { + narrow: [/^n/i, /^p/i, /^u/i, /^s/i, /^š/i, /^p/i, /^s/i], + any: [/^n/i, /^po/i, /^u/i, /^st/i, /^(št|stv)/i, /^pi/i, /^so/i] +} + +var matchDayPeriodPatterns = { + narrow: /^(am|pm|(o )?poln\.?|(nap\.?|pol\.?)|r[áa]no|pop\.?|ve[čc]\.?|(v n\.?|noc))/i, + abbreviated: /^(am|pm|(o )?poln\.?|(napol\.?|pol\.?)|r[áa]no|pop\.?|ve[čc]er|(v )?noci?)/i, + any: /^(am|pm|(o )?polnoci?|(na)?poludnie|r[áa]no|popoludn(ie|í|i)|ve[čc]er|(v )?noci?)/i +} +var parseDayPeriodPatterns = { + any: { + am: /^am/i, + pm: /^pm/i, + midnight: /poln/i, + noon: /^(nap|(na)?pol(\.|u))/i, + morning: /^r[áa]no/i, + afternoon: /^pop/i, + evening: /^ve[čc]/i, + night: /^(noc|v n\.)/i + } +} + +var match = { + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: function(value) { + return parseInt(value, 10) + } + }), + + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseEraPatterns, + defaultParseWidth: 'any' + }), + + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseQuarterPatterns, + defaultParseWidth: 'any', + valueCallback: function(index) { + return index + 1 + } + }), + + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseMonthPatterns, + defaultParseWidth: 'any' + }), + + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseDayPatterns, + defaultParseWidth: 'any' + }), + + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: 'any', + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: 'any' + }) +} + +export default match |