Skip to content

Commit

Permalink
WIP WTF
Browse files Browse the repository at this point in the history
  • Loading branch information
leshakoss committed Mar 30, 2017
1 parent 18180b8 commit 5649dcd
Show file tree
Hide file tree
Showing 13 changed files with 269 additions and 268 deletions.
21 changes: 21 additions & 0 deletions src/locale/_lib/buildLocaleBuilder/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import buildTokensRegExp from '../buildTokensRegExp/index.js'

export default function buildBuildLocale (localeBase) {
return function (localeExtension) {
localeExtension = localeExtension || {}

var locale = {
localize: localeExtension.localize || localeBase.localize,
localizeDistanceInWords: localeExtension.localizeDistanceInWords || localeBase.localizeDistanceInWords,
formatters: Object.assign({}, localeBase.formatters, localeExtension.formatters || {}),
parsers: Object.assign({}, localeBase.parsers, localeExtension.parsers || {}),
units: Object.assign({}, localeBase.units, localeExtension.units || {}),
options: Object.assign({}, localeBase.options, localeExtension.options)
}

locale.formattingTokensRegExp = buildTokensRegExp(locale.formatters)
locale.parsingTokensRegExp = buildTokensRegExp(locale.parsers)

return locale
}
}
70 changes: 70 additions & 0 deletions src/locale/en-US/_lib/buildFormatters/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import '../localize/index.js'

export default function buildFormatters () {
var formatters = {
// Month: Jan, Feb, ..., Dec
'MMM': function (date) {
return localize['month', 'short', date.getUTCDay()]
},

// Month: January, February, ..., December
'MMMM': function (date) {
return localize['month', 'long', date.getUTCDay()]
},

// Day of week: Su, Mo, ..., Sa
'dd': function (date) {
return localize['weekday', 'narrow', date.getUTCDay()]
},

// Day of week: Sun, Mon, ..., Sat
'ddd': function (date) {
return localize['weekday', 'short', date.getUTCDay()]
},

// Day of week: Sunday, Monday, ..., Saturday
'dddd': function (date) {
return localize['weekday', 'long', date.getUTCDay()]
},

// AM, PM
'A': function (date) {
return localize['timeOfDay', 'uppercase', date.getUTCHours()]
},

// am, pm
'a': function (date) {
return localize['timeOfDay', 'lowercase', date.getUTCHours()
},

// a.m., p.m.
'aa': function (date) {
return localize['timeOfDay', 'long', date.getUTCHours()
}
}

// Generate ordinal version of formatters: M -> Mo, D -> Do, etc.
var ordinalFormatters = ['M', 'D', 'DDD', 'd', 'Q', 'W']
ordinalFormatters.forEach(function (formatterToken) {
formatters[formatterToken + 'o'] = function (date, formatters) {
return ordinal(formatters[formatterToken](date))
}
})

return formatters
}

function ordinal (number) {
var rem100 = number % 100
if (rem100 > 20 || rem100 < 10) {
switch (rem100 % 10) {
case 1:
return number + 'st'
case 2:
return number + 'nd'
case 3:
return number + 'rd'
}
}
return number + 'th'
}
File renamed without changes.
119 changes: 119 additions & 0 deletions src/locale/en-US/_lib/buildParsers/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
import localize from '../localize/index.js'
import buildMatchRegExpFromArray from '../../../_lib/buildMatchRegExpFromArray/index.js'
import buildParseFnFromArray from '../../../_lib/buildParseFnFromArray/index.js'
import parseDecimal from '../../../_lib/parseDecimal/index.js'

export default function buildParseLocale () {
var monthsShort = localize('months', 'short')
var monthsLong = localize('months', 'long')
var weekdaysNarrow = localize('weekdays', 'narrow')
var weekdaysShort = localize('weekdays', 'short')
var weekdaysLong = localize('weekdays', 'long')
var timesOfDayUppercase = localize('timesOfDay', 'uppercase')
var timesOfDayLowercase = localize('timesOfDay', 'lowercase')
var timesOfDayLong = localize('timesOfDay', 'long')

var patternOrdinal = /^(\d+)(th|st|nd|rd)/

return {
// Month: Jan, Feb, ..., Dec
'MMM': {
unit: 'month',
match: buildMatchRegExpFromArray(monthsShort),
parse: buildParseFnFromArray(monthsShort)
},

// Month: January, February, ..., December
'MMMM': {
unit: 'month',
match: buildMatchRegExpFromArray(monthsLong),
parse: buildParseFnFromArray(monthsLong)
},

// Day of week: Su, Mo, ..., Sa
'dd': {
unit: 'day',
match: buildMatchRegExpFromArray(weekdaysNarrow),
parse: buildParseFnFromArray(weekdaysNarrow)
},

// Day of week: Sun, Mon, ..., Sat
'ddd': {
unit: 'day',
match: buildMatchRegExpFromArray(weekdaysShort),
parse: buildParseFnFromArray(weekdaysShort)
},

// Day of week: Sunday, Monday, ..., Saturday
'dddd': {
unit: 'day',
match: buildMatchRegExpFromArray(weekdaysLong),
parse: buildParseFnFromArray(weekdaysLong)
},

// AM, PM
'A': {
unit: 'timeOfDay',
match: buildMatchRegExpFromArray(timesOfDayUppercase),
parse: buildParseFnFromArray(timesOfDayUppercase)
},

// am, pm
'a': {
unit: 'timeOfDay',
match: buildMatchRegExpFromArray(timesOfDayLowercase),
parse: buildParseFnFromArray(timesOfDayLowercase)
},

// a.m., p.m.
'aa': {
unit: 'timeOfDay',
match: buildMatchRegExpFromArray(timesOfDayLong),
parse: buildParseFnFromArray(timesOfDayLong)
},

// Ordinal quarter
'Qo': {
unit: 'quarter',
match: patternOrdinal,
parse: parseDecimal
},

// Ordinal month
'Mo': {
unit: 'month',
match: patternOrdinal,
parse: function (matchResult) {
return parseDecimal(matchResult) - 1
}
},

// Ordinal ISO week
'Wo': {
unit: 'isoWeek',
match: patternOrdinal,
parse: parseDecimal
},

// Ordinal day of week
'do': {
unit: 'day',
match: patternOrdinal,
parse: parseDecimal
},

// Ordinal day of month
'Do': {
unit: 'date',
match: patternOrdinal,
parse: parseDecimal
},

// Ordinal day of year
'DDDo': {
unit: 'dayOfYear',
match: patternOrdinal,
parse: parseDecimal
}
}
}
File renamed without changes.
24 changes: 24 additions & 0 deletions src/locale/en-US/_lib/buildUnits/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
export default function buildUnits () {
return {
// a.m., p.m.
timeOfDay: {
priority: 65,
set: function (date, value) {
var hours = date.getUTCHours()
var isAM = value === 0

if (isAM) {
if (hours === 12) {
date.setUTCHours(0)
}
} else {
if (hours !== 12) {
date.setUTCHours(12 + hours)
}
}

return date
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,41 +1,40 @@
var locale = {
weekday: {
weekdays: {
narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
},

era: {
eras: {
narrow: ['B', 'A'],
short: ['BC', 'AD'],
long: ['Before Christ', 'Anno Domini']
},

month: {
months: {
narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
}

timeOfDay: {
timesOfDay: {
uppercase: ['AM', 'PM'],
lowercase: ['am', 'pm'],
long: ['a.m.', 'p.m.']
}
}

const locale = {
blank: 'Aucune date sélectionnée',
headerFormat: 'dddd, D MMM',
locale: require('date-fns/locale/fr'), // You need to pass in the date-fns locale for the language you want (unless it's EN)
todayLabel: {
long: "Aujourd'hui",
short: 'Auj.',
},
weekdays: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
weekStartsOn: 1, // Start the week on Monday
};

export default function localize (token, payload, options) {

export default function localize (token, type, payload) {
if (token === 'weekday') {
return locale.weekdays[type][payload]
} else if (token === 'era') {
return locale.eras[type][payload]
} else if (token === 'month') {
return locale.months[type][payload]
} else if (token === 'timeOfDay') {
var index = (payload / 12) >= 1 ? 1 : 0
return locale.timesOfDay[type][index]
} else {
return locale[token][type]
}
}
86 changes: 0 additions & 86 deletions src/locale/en-US/buildFormatLocale/index.js

This file was deleted.

0 comments on commit 5649dcd

Please sign in to comment.