Olivier C a écrit :
Je me souviens de tes réflexions sur les constantes js sur le forum,
la preuve, row n'est pas du tout une constante. C'est bel est bien une var. En ce qui concerne ta const string, c'est encore une var puisque tu vas lui faire faire des changements (code plus bas)
MDN a écrit :
const
La déclaration const permet de créer une constante nommée accessible uniquement en lecture. Cela ne signifie pas que la valeur contenue est immuable, uniquement que l'identifiant ne peut pas être réaffecté. Autrement dit la valeur d'une constante ne peut pas être modifiée par des réaffectations ultérieures. Une constante ne peut pas être déclarée à nouveau.
Demain, tu dois faire un changement sur une constante, tu vas recréer une constante au nom improbable pour la cohésion dans ton code (code plus bas pour la var contentTest). En PHP, on ne définit pas à tout bout de champs des
define. En Python, c'est pareil, tu ne définis pas énormément de
tuple.
Olivier C a écrit :
que tu t'orientes plus sur python maintenant...
oh que oui. Je m'oriente depuis 5 ans maintenant. Python est tellement mieux :
- plus lisible
- un eco système énorme
- typage fort
- qt
- pandas/numpy/matploib
- Django largement mieux conçu que Symfony
- Flask mieux abouti que Slim et Lumen. Quoique Lumen est intéressant, mais en dessous de Flask avec
Blueprint (module de base complémentaire).
En ce moment, je dev un site ecommerce en Python. Ça avance à grand pas. Je viens de finir le panier/les commandes/le paiement. Aujourd'hui, j'ai une refacto afin que le code soit plus concis.
Olivier C a écrit :
Puisque tu es encore sur ce topic j'ai encore une question... voilà : j'étais tout fier de moi d'avoir réussi à implémenter l'API Leaflet dans un forEach alors que je n'avais trouvé que des exemples d'implémentations codés en dur. Sauf que, depuis que tu m'as donné la solution pour le shortcode, je n'ai pas encore été en mesure d'exploiter les résultats pour en tirer parti (c'est important pour moi d'y arriver parce que, si je réussis à exploiter ta solution, cet exemple se répercutera pour tous mes autres shortcodes, images, cartes, vidéos, etc...).
Du coup, je suis bloqué ici (ce sera peut-être l'occasion d'une nouvelle question sur le forum sinon) :
const string = document.querySelector('.test').innerHTML,
row = {},
res = [],
params = [/((name)="(.*?)")/,
/((coords)=\[(.*?)\])/,
/((zoom)=([0-9]+))/]
string.match(/{{(.*?)}}/mg).forEach(shortcode => {
params.forEach(param => {
const result = shortcode.match(param)
row[result[2]] = result[3]
})
res.push(row)
// Dans l'idée je cherche à faire quelque chose comme ceci :
string.replace(shortcode, `<div data-name="${row.name}" data-coords="${row.coords}" style="height:100px;background-color:Orange">REPLACE TEST</div>`)
})
J'avoue qu'avec ta desciption, tu me perds. Ce que je comprends, ça devrait être un truc comme :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="test">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<hr>
{{map name="Lyon" coords=[44.853133,3.349747] zoom=5}}
<hr>
{{map coords=[48.853133,2.349747] name="Cathédrale Notre-Dame de Paris" zoom=15}}
<hr>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<script>
(()=>{
let $test = document.querySelector('.test'),
contentTest = $test.innerHTML,
patterns = [
/{{(.*?)}}/mg,
/((name)="(.*?)")/,
/((coords)=\[(.*?)\])/,
/((zoom)=([0-9]+))/
];
contentTest.match(patterns.shift()).forEach(shortcode => {
let row = {};
patterns.forEach(pattern => {
let result = shortcode.match(pattern);
row[result[2]] = result[3];
});
contentTest = contentTest.replace(shortcode, `<div data-name="${row.name}" data-coords="${row.coords}" style="height:100px;background-color:Orange">REPLACE TEST</div>`);
})
$test.innerHTML = contentTest;
})();
</script>
</body>
</html>
Modifié par niuxe (08 Mar 2022 - 13:19)