Skip to content

Commit

Permalink
Change how stand-alone era is parsed
Browse files Browse the repository at this point in the history
Stand-alone era token now parses as `1 BC` and `1 AD` instead of `10 BC` and `10 AD`.
  • Loading branch information
kossnocorp committed Jun 26, 2019
1 parent a9fc0c7 commit 14286ed
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
17 changes: 10 additions & 7 deletions src/parse/_lib/parsers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -282,9 +282,10 @@ var parsers = {
)
}
},
set: function(date, _flags, value, _options) {
set: function(date, flags, value, _options) {
// Sets year 10 BC if BC, or 10 AC if AC
date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1)
flags.era = value
date.setUTCFullYear(value === 1 ? 1 : 0, 0, 1)
date.setUTCHours(0, 0, 0, 0)
return date
}
Expand Down Expand Up @@ -322,10 +323,10 @@ var parsers = {
return parseNDigits(token.length, string, valueCallback)
}
},
validate: function(date, value, _options) {
validate: function(_date, value, _options) {
return value.isTwoDigitYear || value.year > 0
},
set: function(date, _flags, value, options) {
set: function(date, flags, value, options) {
var currentYear = getUTCWeekYear(date, options)

if (value.isTwoDigitYear) {
Expand All @@ -338,7 +339,8 @@ var parsers = {
return date
}

var year = currentYear > 0 ? value.year : 1 - value.year
var year =
!('era' in flags) || flags.era === 1 ? value.year : 1 - value.year
date.setUTCFullYear(year, 0, 1)
date.setUTCHours(0, 0, 0, 0)
return date
Expand Down Expand Up @@ -371,7 +373,7 @@ var parsers = {
validate: function(_date, value, _options) {
return value.isTwoDigitYear || value.year > 0
},
set: function(date, _flags, value, options) {
set: function(date, flags, value, options) {
var currentYear = date.getUTCFullYear()

if (value.isTwoDigitYear) {
Expand All @@ -388,7 +390,8 @@ var parsers = {
return startOfUTCWeek(date, options)
}

var year = currentYear > 0 ? value.year : 1 - value.year
var year =
!('era' in flags) || flags.era === 1 ? value.year : 1 - value.year
date.setUTCFullYear(year, 0, options.firstWeekContainsDate)
date.setUTCHours(0, 0, 0, 0)
return startOfUTCWeek(date, options)
Expand Down
14 changes: 14 additions & 0 deletions src/parse/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,20 @@ describe('parse', function() {
var result = parse('44 B', 'Y GGGGG', baseDate)
assert.deepEqual(result, new Date(-44, 11 /* Dec */, 30))
})

it('parses stand-alone BC', function() {
var result = parse('BC', 'G', baseDate)
const expectedResult = new Date(0, 0 /* Jan */, 1)
expectedResult.setFullYear(0)
assert.deepEqual(result, expectedResult)
})

it('parses stand-alone AD', function() {
var result = parse('AD', 'G', baseDate)
const expectedResult = new Date(1, 0 /* Jan */, 1)
expectedResult.setFullYear(1)
assert.deepEqual(result, expectedResult)
})
})

describe('calendar year', function() {
Expand Down

0 comments on commit 14286ed

Please sign in to comment.