index.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. var buildFormattingTokensRegExp = require('../../_lib/build_formatting_tokens_reg_exp/index.js')
  2. function buildFormatLocale () {
  3. var months3char = ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ']
  4. var monthsFull = ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος']
  5. var monthsGenitive = ['Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου']
  6. var weekdays2char = ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πέ', 'Πα', 'Σά']
  7. var weekdays3char = ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ']
  8. var weekdaysFull = ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο']
  9. var meridiemUppercase = ['ΠΜ', 'ΜΜ']
  10. var meridiemLowercase = ['πμ', 'μμ']
  11. var meridiemFull = ['π.μ.', 'μ.μ.']
  12. var formatters = {
  13. // Month: Jan, Feb, ..., Dec
  14. 'MMM': function (date) {
  15. return months3char[date.getMonth()]
  16. },
  17. // Month: January, February, ..., December
  18. 'MMMM': function (date) {
  19. return monthsFull[date.getMonth()]
  20. },
  21. // Day of week: Su, Mo, ..., Sa
  22. 'dd': function (date) {
  23. return weekdays2char[date.getDay()]
  24. },
  25. // Day of week: Sun, Mon, ..., Sat
  26. 'ddd': function (date) {
  27. return weekdays3char[date.getDay()]
  28. },
  29. // Day of week: Sunday, Monday, ..., Saturday
  30. 'dddd': function (date) {
  31. return weekdaysFull[date.getDay()]
  32. },
  33. // AM, PM
  34. 'A': function (date) {
  35. return (date.getHours() / 12) >= 1 ? meridiemUppercase[1] : meridiemUppercase[0]
  36. },
  37. // am, pm
  38. 'a': function (date) {
  39. return (date.getHours() / 12) >= 1 ? meridiemLowercase[1] : meridiemLowercase[0]
  40. },
  41. // a.m., p.m.
  42. 'aa': function (date) {
  43. return (date.getHours() / 12) >= 1 ? meridiemFull[1] : meridiemFull[0]
  44. }
  45. }
  46. // Generate ordinal version of formatters: M -> Mo, D -> Do, etc.
  47. var ordinalGenders = {
  48. 'M': 'ος',
  49. 'D': 'η',
  50. 'DDD': 'η',
  51. 'd': 'η',
  52. 'Q': 'ο',
  53. 'W': 'η'
  54. }
  55. var ordinalKeys = ['M', 'D', 'DDD', 'd', 'Q', 'W']
  56. ordinalKeys.forEach(function (formatterToken) {
  57. formatters[formatterToken + 'o'] = function (date, formatters) {
  58. return formatters[formatterToken](date) + ordinalGenders[formatterToken]
  59. }
  60. })
  61. // Generate genitive variant of full months
  62. var formatsWithGenitive = ['D', 'Do', 'DD']
  63. formatsWithGenitive.forEach(function (formatterToken) {
  64. formatters[formatterToken + ' MMMM'] = function (date, commonFormatters) {
  65. var formatter = formatters[formatterToken] || commonFormatters[formatterToken]
  66. return formatter(date, commonFormatters) + ' ' + monthsGenitive[date.getMonth()]
  67. }
  68. })
  69. return {
  70. formatters: formatters,
  71. formattingTokensRegExp: buildFormattingTokensRegExp(formatters)
  72. }
  73. }
  74. module.exports = buildFormatLocale