From 1076fa6034a77647af40bf2464b16b93895912cb Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 24 Mar 2021 21:32:11 +0100
Subject: [PATCH 1/3] Ajout doc

---
 jour12/jour12.js | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/jour12/jour12.js b/jour12/jour12.js
index d95c749..be8c429 100644
--- a/jour12/jour12.js
+++ b/jour12/jour12.js
@@ -4,19 +4,26 @@ const data = JSON.parse(file);
 
 try {
   console.log("Traitement de la première partie…");
-  console.log("La somme totate est " + parseJsonPrem(data));
+  console.log("La somme totale est " + parseJsonPrem(data));
 } catch(err) {
   console.log("Une erreur a été rencontrée !");
   console.error(err);
 }
 
+/**
+ * Fonction additionnant tous les nombres contenus dans un objet
+ * de type Array ou JSON.
+ *
+ * @param Object obj - Object où se trouve des nombres
+ * @return int la somme totale
+ */
 function parseJsonPrem(obj) {
   let ret = 0;
   let value;
 
   for (const index in obj) {
     value = obj[index];
-    if (value instanceof Object) {
+    if (value instanceof Object) { // car Array est un Object
       ret += parseJsonPrem(value);
     } else if (Number.isInteger(value)) {
       ret += value;

From 183df528f1ba708dfd5825995537f3f089ab63ba Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 24 Mar 2021 21:33:49 +0100
Subject: [PATCH 2/3] Lecture du fichier dans try

---
 jour12/jour12.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/jour12/jour12.js b/jour12/jour12.js
index be8c429..d1b56f6 100644
--- a/jour12/jour12.js
+++ b/jour12/jour12.js
@@ -1,8 +1,8 @@
 const fs = require('fs');
-const file = fs.readFileSync("input", "utf8");
-const data = JSON.parse(file);
 
 try {
+  const file = fs.readFileSync("input", "utf8");
+  const data = JSON.parse(file);
   console.log("Traitement de la première partie…");
   console.log("La somme totale est " + parseJsonPrem(data));
 } catch(err) {

From 448ca0d0fe446bb868d6f6c72c4f7760d3b0e018 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 24 Mar 2021 21:45:51 +0100
Subject: [PATCH 3/3] =?UTF-8?q?Ajout=20deuxi=C3=A8me=20partie=20et=20doc?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 jour12/jour12.js | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/jour12/jour12.js b/jour12/jour12.js
index d1b56f6..7f013c4 100644
--- a/jour12/jour12.js
+++ b/jour12/jour12.js
@@ -5,6 +5,8 @@ try {
   const data = JSON.parse(file);
   console.log("Traitement de la première partie…");
   console.log("La somme totale est " + parseJsonPrem(data));
+  console.log("Traitement de la deuxième partie…");
+  console.log("La somme totale est " + parseJsonDeux(data));
 } catch(err) {
   console.log("Une erreur a été rencontrée !");
   console.error(err);
@@ -32,21 +34,31 @@ function parseJsonPrem(obj) {
   return ret;
 }
 
-/*
-function parseObject(objet) {
+/**
+ * Fonction additionnant tous les nombres contenus dans un objet
+ * sauf ceux qui ont une propriété "red". Règle ne s’appliquant pas 
+ * aux Array (toujours une addition complète)
+ *
+ * @param Object obj - Object où se trouve des nombres
+ * @return int la somme totale
+ */
+function parseJsonDeux(obj) {
   let ret = 0;
   let value;
 
+  // c’est plus jolie d’avoir une variable dédiée plutot que bourrer le if
+  let isObj = !(obj instanceof Array) && obj instanceof Object;
+
   for (const index in obj) {
     value = obj[index];
-    if (value instanceof Array) {
-      ret += parseArray(value);
-    } else if (value instanceof Object) {
-      ret += parseObject(value);
+    if (value instanceof Object) {
+      ret += parseJsonDeux(value);
     } else if (Number.isInteger(value)) {
       ret += value;
+    } else if (isObj && value === "red") {
+      ret = 0;
+      break;
     }
   }
   return ret;
 }
-*/