Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/dragouf/nengo into dragou…
Browse files Browse the repository at this point in the history
…f-master
  • Loading branch information
KevinAdu committed Jun 13, 2019
2 parents 8c44488 + 2b2ac44 commit 351f031
Show file tree
Hide file tree
Showing 6 changed files with 212 additions and 171 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Nengo
[![HitCount](http://hits.dwyl.io/kevinadu/kevinadu/nengo.svg)](http://hits.dwyl.io/kevinadu/kevinadu/nengo)
![dependencies](https://img.shields.io/david/kevinadu/nengo.svg?style=flat)

A library that converts Gregorian calendar years into the traditional Japanese calendar years.
A library that converts Gregorian calendar dates into the traditional Japanese calendar years.

## Installation

Expand All @@ -21,11 +21,11 @@ Currently two functions are provided by nengo as shown below:
const { japaneseYear, gregorianYearRange } = require('nengo');
```

To convert the Gregorian year into the Japanese calendar, use the `japaneseYear` function.
To convert the Gregorian date into the Japanese calendar, use the `japaneseYear` function.
The output should be an object containing data related to the Japanese calendar year:

```js
japaneseYear(new Date(2019, 0))
japaneseYear(new Date(2019, 5))

// {
// "startYear": 2019,
Expand Down Expand Up @@ -62,4 +62,4 @@ In lieu of a formal style guide, take care to maintain the existing coding style

```bash
npm run-script lint
```
```
52 changes: 31 additions & 21 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,50 @@ module.exports = {
/**
* Converts Gregorian calendar year to Japanese calendar year
*/
japaneseYear: gregorianYear => {
japaneseYear: gregorianDate => {
let gregorianYearNum;
let gregorianMonthNum;
let gregorianDayNum;

if (gregorianYear instanceof Date) {
gregorianYearNum = gregorianYear.getFullYear();
} else if (typeof gregorianYear === "number") {
gregorianYearNum = gregorianYear;
if (gregorianDate instanceof Date) {
gregorianYearNum = gregorianDate.getFullYear();
// javascript month start from 0
gregorianMonthNum = gregorianDate.getMonth() + 1;
gregorianDayNum = gregorianDate.getDate();
} else {
throw new TypeError(`Expected a Date or Number`);
throw new TypeError(`Expected a Date`);
}

const periodYears = periodData
.sort((a, b) => b.startYear - a.startYear)
.map(period => period.startYear);
const periodOrdered = periodData
.sort((a, b) => b.startYear - a.startYear);
//.map(period => period.startYear);

if (gregorianYearNum < periodYears[periodYears.length - 1]) return null;
// not cover
if (gregorianYearNum < periodOrdered[periodOrdered.length - 1].startYear) return null;

const exactPeriodYear = periodYears.find((periodYear, i) => {
if (i === 0) return periodYear <= gregorianYearNum;
if (i === periodYears.length - 1) return true;
return (
periodYear <= gregorianYearNum && periodYears[i - 1] > gregorianYearNum
);
const exactPeriod = periodOrdered.find((period, i) => {
// earliest (edo begining)
if (i === periodOrdered.length - 1) return true;

if(gregorianYearNum > period.startYear)
return true;
if(gregorianYearNum === period.startYear && gregorianMonthNum > period.startMonth)
return true;
if(gregorianYearNum === period.startYear && gregorianMonthNum === period.startMonth && gregorianDayNum >= period.startDay)
return true;

return false;
});

const foundPeriod = periodData.find(
period => exactPeriodYear === period.startYear
);
/*const foundPeriod = periodData.find(
period => exactPeriod === period.startYear
);*/

const updatedPeriod = Object.assign(
{
currentJapaneseYear: gregorianYearNum - foundPeriod.startYear + 1
currentJapaneseYear: gregorianYearNum - exactPeriod.startYear + 1
},
foundPeriod
exactPeriod
);

return updatedPeriod;
Expand Down
Loading

0 comments on commit 351f031

Please sign in to comment.