Skip to content
This repository has been archived by the owner on Oct 6, 2020. It is now read-only.

Commit

Permalink
fix: Correction des années bissextiles
Browse files Browse the repository at this point in the history
  • Loading branch information
gtoubiana committed Jan 6, 2017
1 parent 76c4f84 commit aa7ab5a
Show file tree
Hide file tree
Showing 14 changed files with 171 additions and 10 deletions.
Binary file modified dist/acte-0.0.17-dist.zip
Binary file not shown.
2 changes: 1 addition & 1 deletion dist/acte.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/acte.min.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/js/concat.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/js/private/constants/joursDansLeMois.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
* @see {@link https://github.com/gtoubiana/acte|Projet sur GitHub}
* @constant {Array}
*/
const joursDansLeMois = [31, 30, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
const joursDansLeMois = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
22 changes: 22 additions & 0 deletions src/js/private/functions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
* [jjVersJulien(jj)](#jjVersJulien) ⇒ <code>Tableau</code> ℗
* [jjVersRepublicain(jj)](#jjVersRepublicain) ⇒ <code>Tableau</code> ℗
* [jourSemaineJulien(jj)](#jourSemaineJulien) ⇒ <code>Nombre</code> ℗
* [julienBissextile(an)](#julienBissextile) ⇒ <code>Booléen</code> ℗
* [julienVersJj(an, mois, jour)](#julienVersJj) ⇒ <code>Nombre</code> ℗
* [normaliserDegres(a)](#normaliserDegres) ⇒ <code>Nombre</code> ℗
* [nutation(jj)](#nutation) ⇒ <code>Tableau</code> ℗
Expand Down Expand Up @@ -468,6 +469,27 @@ Pour calculer le jour de la semaine à partir du nombre de jours juliens.
```js
jourSemaineJulien(2378625.5); // 6
```
<a name="julienBissextile"></a>

## julienBissextile(an) ⇒ <code>Booléen</code> ℗
Pour déterminer si une année julienne est bissextile.

**Type** : Fonction
**Résultat** : <code>Booléen</code> - Est-ce une année bissextile ?
**Accès** : privé
**Voir** : [leap_julian](http://fourmilab.ch/documents/calendar/)
**Depuis** : 0.0.17
**Auteur** : John Walker
**Licence** : Domaine public

| Paramètres | Type | Description |
| --- | --- | --- |
| an | <code>Nombre</code> | Année julienne |

**Exemple** :
```js
julienBissextile(2017); // true
```
<a name="julienVersJj"></a>

## julienVersJj(an, mois, jour) ⇒ <code>Nombre</code> ℗
Expand Down
17 changes: 17 additions & 0 deletions src/js/private/functions/julienBissextile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* Pour déterminer si une année julienne est bissextile.
* @access private
* @author John Walker
* @since 0.0.17
* @license Domaine public
* @see {@link http://fourmilab.ch/documents/calendar/|leap_julian}
* @param {Number} an - Année julienne
* @return {Boolean} Est-ce une année bissextile ?
* @example
* julienBissextile(2017); // true
*/
const julienBissextile = an => {
const result = reste(an, 4) === ((an > 0) ? 0 : 3);

return result;
};
7 changes: 7 additions & 0 deletions src/js/private/functions/tabGregorien.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ const tabGregorien = (saisie, limites) => {

saisieGregorien = saisieValide(saisieGregorien, regexpGregorien);

if (saisieGregorien[2] <= dateDebutGregorien[2]) {
joursDansLeMois[1] = julienBissextile(saisieGregorien[2]) ? '29' : '28';
} else {
joursDansLeMois[1] = gregorienBissextile(saisieGregorien[2]) ?
'29' : '28';
}

// Lorsque la date est valide [gjmc,gmc,gac]
if (saisieGregorien[2] && saisieGregorien[0] < 32 &&
absInt(saisieGregorien[0]) !== 0 &&
Expand Down
11 changes: 6 additions & 5 deletions src/liste.todo
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
Todo Démo:
☐ BUG le 29 février est mal géré ! => améliorer l'utilsation du tableau (30 février ???)
☐ tableau 28 + modifier valeur du tableau avant vérification
☐ dates greg (bissextile ?)
☐ dates jul (bissextile ?) => récupére julienBissextile du script fourmilab
☐ BUG il ne doit pas y avoir de date julienne avec 17 frimaire an IV
☐ Recette jours de la semaine republicains @issues
☐ se débarasser du survol à la souris dans la démo @issues



Expand Down Expand Up @@ -34,6 +29,12 @@ Todo Démo:
☐ Mettre tous les modules à jour entre la 0.1.0 et la 0.1.1
___________________
Archive:
✔ BUG le 29 février est mal géré ! => améliorer l'utilsation du tableau (30 février ???) @done(2017-01-06 15:58) @project(Todo Démo)
✔ tableau 28 + modifier valeur du tableau avant vérification @done(2017-01-06 15:58) @project(Todo Démo)
✔ dates greg (bissextile ?) ex dans tabGregorien : joursDansLeMois[1] = gregorienBissextile(saisieGregorien[2]) ? '29' : '28'; // Lorsque la date est valide [gjmc,gmc,gac] @done(2017-01-06 15:58) @project(Todo Démo)
✔ dates jul (bissextile ?) problème d'intégration lié à gregorien... @done(2017-01-06 15:58) @project(Todo Démo)
✔ Récupére julienBissextile du script fourmilab @done(2017-01-06 14:53) @project(Todo Démo)
✔ se débarasser du survol à la souris dans la démo @issues @done(2017-01-06 14:13) @project(Todo Démo)
✔ BUG 18 brumaire an-V @issues @done(2017-01-06 13:41) @project(Todo Démo)
✔ BUG 18 brumaire anV @issues @done(2017-01-06 13:41) @project(Todo Démo)
✔ Dossier docs => utiliser master/index + ./docs @done(2017-01-06 13:35)
Expand Down
22 changes: 22 additions & 0 deletions test/jasmine/acteSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,20 @@ describe('new acte.Jour().gregorien()', function () {
expect(new acte.Jour('14/10/1582').gregorien('%JSl %JM %Mlb %A')).toEqual('Dimanche 24 octobre 1582');
expect(new acte.Jour('15/10/1582').gregorien('%JSl %JM %Mlb %A')).toEqual('Vendredi 15 octobre 1582');
expect(new acte.Jour('15/10/1582', false).gregorien('%JSl %JM %Mlb %A')).toEqual('Vendredi 15 octobre 1582');

// Gestion des années bissextiles
expect(new acte.Jour('29 février 2004').gregorien()).toEqual('29 février 2004');
expect(new acte.Jour('29 février 1900').gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 2000').gregorien()).toEqual('29 février 2000');
expect(new acte.Jour('29 février 1004').gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 900').gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 1000').gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 2004', false).gregorien()).toEqual('29 février 2004');
expect(new acte.Jour('29 février 1900', false).gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 2000', false).gregorien()).toEqual('29 février 2000');
expect(new acte.Jour('29 février 1004', false).gregorien()).toEqual('29 février 1004');
expect(new acte.Jour('29 février 900', false).gregorien()).toEqual('29 février 900');
expect(new acte.Jour('29 février 1000', false).gregorien()).toEqual('29 février 1000');
});

// Balises
Expand Down Expand Up @@ -440,6 +454,14 @@ describe('new acte.Jour().julien()', function () {
expect(new acte.Jour('14/10/1582').julien('%JSl %JM %Mlb %A')).toEqual('Dimanche 14 octobre 1582');
expect(new acte.Jour('15/10/1582').julien('%JSl %JM %Mlb %A')).toEqual('Pas de correspondances.');
expect(new acte.Jour('15/10/1582', false).julien('%JSl %JM %Mlb %A')).toEqual('Vendredi 5 octobre 1582');

// Gestion des années bissextiles
expect(new acte.Jour('29 février 1004').julien()).toEqual('29 février 1004');
expect(new acte.Jour('29 février 900').julien()).toEqual('29 février 900');
expect(new acte.Jour('29 février 1000').julien()).toEqual('29 février 1000');
expect(new acte.Jour('29 février 1004', false).julien()).toEqual('23 février 1004');
expect(new acte.Jour('29 février 900', false).julien()).toEqual('25 février 900');
expect(new acte.Jour('29 février 1000', false).julien()).toEqual('24 février 1000');
});

// Balises
Expand Down
32 changes: 31 additions & 1 deletion test/jasmine/lib/acte.js
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ if (!Array.prototype.reduce) {
* @see {@link https://github.com/gtoubiana/acte|Projet sur GitHub}
* @constant {Array}
*/
var joursDansLeMois = [31, 30, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var joursDansLeMois = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

/**
* Nom des Mois Grégoriens et abbréviations courantes,
Expand Down Expand Up @@ -1726,6 +1726,28 @@ if (!Array.prototype.reduce) {
return jourSemaineJulien;
}();

/**
* Pour déterminer si une année julienne est bissextile.
* @access private
* @author John Walker
* @since 0.0.17
* @license Domaine public
* @see {@link http://fourmilab.ch/documents/calendar/|leap_julian}
* @param {Number} an - Année julienne
* @return {Boolean} Est-ce une année bissextile ?
* @example
* julienBissextile(2017); // true
*/
var julienBissextile = function () {
function julienBissextile(an) {
var result = reste(an, 4) === (an > 0 ? 0 : 3);

return result;
}

return julienBissextile;
}();

/**
* Pour retourner un objet utilisable par le prototype .gregorien().
* @access private
Expand Down Expand Up @@ -2069,6 +2091,14 @@ if (!Array.prototype.reduce) {

saisieGregorien = saisieValide(saisieGregorien, regexpGregorien);

if (saisieGregorien[2] <= dateDebutGregorien[2]) {
joursDansLeMois[1] = julienBissextile(saisieGregorien[2]) ? '29' :
'28';
} else {
joursDansLeMois[1] = gregorienBissextile(saisieGregorien[2]) ?
'29' : '28';
}

// Lorsque la date est valide [gjmc,gmc,gac]
if (saisieGregorien[2] && saisieGregorien[0] < 32 && absInt(
saisieGregorien[0]) !== 0 && saisieGregorien[1] < 13 &&
Expand Down
22 changes: 22 additions & 0 deletions test/jasmine/lib/acteSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,20 @@ describe('new acte.Jour().gregorien()', function () {
expect(new acte.Jour('14/10/1582').gregorien('%JSl %JM %Mlb %A')).toEqual('Dimanche 24 octobre 1582');
expect(new acte.Jour('15/10/1582').gregorien('%JSl %JM %Mlb %A')).toEqual('Vendredi 15 octobre 1582');
expect(new acte.Jour('15/10/1582', false).gregorien('%JSl %JM %Mlb %A')).toEqual('Vendredi 15 octobre 1582');

// Gestion des années bissextiles
expect(new acte.Jour('29 février 2004').gregorien()).toEqual('29 février 2004');
expect(new acte.Jour('29 février 1900').gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 2000').gregorien()).toEqual('29 février 2000');
expect(new acte.Jour('29 février 1004').gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 900').gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 1000').gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 2004', false).gregorien()).toEqual('29 février 2004');
expect(new acte.Jour('29 février 1900', false).gregorien()).toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 2000', false).gregorien()).toEqual('29 février 2000');
expect(new acte.Jour('29 février 1004', false).gregorien()).toEqual('29 février 1004');
expect(new acte.Jour('29 février 900', false).gregorien()).toEqual('29 février 900');
expect(new acte.Jour('29 février 1000', false).gregorien()).toEqual('29 février 1000');
});

// Balises
Expand Down Expand Up @@ -439,6 +453,14 @@ describe('new acte.Jour().julien()', function () {
expect(new acte.Jour('14/10/1582').julien('%JSl %JM %Mlb %A')).toEqual('Dimanche 14 octobre 1582');
expect(new acte.Jour('15/10/1582').julien('%JSl %JM %Mlb %A')).toEqual('Pas de correspondances.');
expect(new acte.Jour('15/10/1582', false).julien('%JSl %JM %Mlb %A')).toEqual('Vendredi 5 octobre 1582');

// Gestion des années bissextiles
expect(new acte.Jour('29 février 1004').julien()).toEqual('29 février 1004');
expect(new acte.Jour('29 février 900').julien()).toEqual('29 février 900');
expect(new acte.Jour('29 février 1000').julien()).toEqual('29 février 1000');
expect(new acte.Jour('29 février 1004', false).julien()).toEqual('23 février 1004');
expect(new acte.Jour('29 février 900', false).julien()).toEqual('25 février 900');
expect(new acte.Jour('29 février 1000', false).julien()).toEqual('24 février 1000');
});

// Balises
Expand Down
26 changes: 26 additions & 0 deletions test/spec-JourGregorien.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,32 @@ describe('new acte.Jour().gregorien()', () => {
expect(new acte.Jour('15/10/1582', false).gregorien(
'%JSl %JM %Mlb %A'))
.toEqual('Vendredi 15 octobre 1582');

// Gestion des années bissextiles
expect(new acte.Jour('29 février 2004').gregorien())
.toEqual('29 février 2004');
expect(new acte.Jour('29 février 1900').gregorien())
.toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 2000').gregorien())
.toEqual('29 février 2000');
expect(new acte.Jour('29 février 1004').gregorien())
.toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 900').gregorien())
.toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 1000').gregorien())
.toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 2004', false).gregorien())
.toEqual('29 février 2004');
expect(new acte.Jour('29 février 1900', false).gregorien())
.toEqual('Pas de correspondances.');
expect(new acte.Jour('29 février 2000', false).gregorien())
.toEqual('29 février 2000');
expect(new acte.Jour('29 février 1004', false).gregorien())
.toEqual('29 février 1004');
expect(new acte.Jour('29 février 900', false).gregorien())
.toEqual('29 février 900');
expect(new acte.Jour('29 février 1000', false).gregorien())
.toEqual('29 février 1000');
});

// Balises
Expand Down
14 changes: 14 additions & 0 deletions test/spec-JourJulien.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,20 @@ describe('new acte.Jour().julien()', () => {
expect(new acte.Jour('15/10/1582', false).julien(
'%JSl %JM %Mlb %A'))
.toEqual('Vendredi 5 octobre 1582');

// Gestion des années bissextiles
expect(new acte.Jour('29 février 1004').julien())
.toEqual('29 février 1004');
expect(new acte.Jour('29 février 900').julien())
.toEqual('29 février 900');
expect(new acte.Jour('29 février 1000').julien())
.toEqual('29 février 1000');
expect(new acte.Jour('29 février 1004', false).julien())
.toEqual('23 février 1004');
expect(new acte.Jour('29 février 900', false).julien())
.toEqual('25 février 900');
expect(new acte.Jour('29 février 1000', false).julien())
.toEqual('24 février 1000');
});

// Balises
Expand Down

0 comments on commit aa7ab5a

Please sign in to comment.