Open Time - Mot-clé - ES6<p>Open time, open mind, open eyes</p>2024-03-28T05:07:02+01:00Franck Paulurn:md5:61070eb8c883ae7581f861faefddecbfDotclearRegExurn:md5:b7c1dad0561f428a7cdf1cbc272c76dd2015-10-09T10:42:00+02:002015-10-09T10:45:52+02:00FranckInternetES6javascriptregexpr <p>Histoire d’avoir un mémo quelque part :</p>
<ul>
<li>En Javascript le début et la fin d’expression de recherche se définit avec un <strong>/</strong> (slash)</li>
<li>Caractère d’échappement : <strong>\</strong> (anti-slash)</li>
<li>Pour ignorer la casse : utiliser <strong>i</strong> après la RegEx (ou en option de recherche)</li>
<li>Pour répéter plusieurs fois : utiliser <strong>g</strong> après la RegEx</li>
</ul>
<ul>
<li>Choix multiple : séparer les items par un <strong>|</strong> (pipe)</li>
</ul>
<ul>
<li>Début de chaîne : <strong>^</strong></li>
<li>Fin de chaîne : <strong>$</strong></li>
</ul>
<ul>
<li>Liste de caractères : <strong>[<liste des caractères>]</strong> (ex: <strong>[aeiouy]</strong>)</li>
<li>Intervalle de caractères : <strong>[<premier caractère>-<dernier caractère>]</strong> (exemple : <strong>[a-z]</strong>)</li>
<li>Pour exclure des caractères il suffit d’ajouter un <strong>^</strong> au début de la liste ou de l’intervalle</li>
<li>On peut combiner intervalles et listes</li>
<li>Inutile d’échapper au sein d’une liste ou d’un intervalle, ou d’une combinaison, sauf pour les <strong>/</strong> (slash) et <strong>\</strong> (anti-slash)</li>
</ul>
<ul>
<li>Caractère quelconque : <strong>.</strong> (point)</li>
</ul>
<ul>
<li>Quantificateurs, à placer après un élément recherché (peu importe lequel) :
<ul>
<li>0 ou 1 fois : <strong>?</strong> (ex : <strong>https?</strong>)</li>
<li>1 ou plusieurs fois : <strong>+</strong></li>
<li>0, 1 ou plusieurs fois : <strong>*</strong></li>
<li><strong>n</strong> fois : <strong>{n}</strong></li>
<li><strong>n</strong> à <strong>m</strong> fois : <strong>{n,m}</strong></li>
<li><strong>n</strong> fois à l’infini : <strong>{n,}</strong> (noter la virgule seule)</li>
</ul></li>
</ul>
<ul>
<li>Pour les quantificateurs potentiellement supérieurs à 1 (<strong>+</strong>, <strong>*</strong>, …) rajouter un <strong>?</strong> (greedy) permet de s’arrêter au premier élément correspondant, au lieu du dernier, ex : <strong>/<a href=”(.+?)”>/</strong> .</li>
</ul>
<ul>
<li>Types génériques :
<ul>
<li><strong>\d</strong> : Caractère décimal</li>
<li><strong>\D</strong> : Tout sauf un caractère décimal</li>
<li><strong>\s</strong> : Espace, tabulation, … (inclut aussi les retours à la ligne)</li>
<li><strong>\S</strong> : Tout sauf une espace, tabulation, …</li>
<li><strong>\w</strong> : Lettre, accentuée ou pas, et <strong></strong>_ (underscore)</li>
<li><strong>\W</strong> : Tout sauf une lettre, accentuée ou pas ou un underscore</li>
<li><strong>\n</strong> : Retour à la ligne</li>
<li><strong>\t</strong> : Tabulation</li>
<li><strong>\b</strong> : Limite de mot (un caractère accentué en est une)</li>
<li><strong>\B</strong> : Tout sauf une limite de mot</li>
</ul></li>
</ul>
<ul>
<li>Captures :
<ul>
<li><strong>(<élément à trouver>)</strong> : retourne l’élément (si trouvé) dans <strong>$n</strong> (n valant de 1 à 9 en fonction de la position de la capture)</li>
<li>Pour ne rien retourner, utiliser <strong>(?:<élément à trouver>)</strong>, permet « d’économiser » des positions de capture (limitées à 9)</li>
</ul></li>
</ul>
<ul>
<li>Dans une chaîne de remplacement le <strong>$</strong> doit être doublé pour être traité de manière littérale.</li>
</ul>https://open-time.net/post/2015/10/09/RegEx#comment-formhttps://open-time.net/feed/atom/comments/12525Véritéurn:md5:72a19689cb00a62b1aec0f189fbd8b7e2015-10-08T05:05:00+02:002015-10-15T07:11:31+02:00FranckBrèvesalphabétiques à prise rapidebabelES6javascript <p>La vérité si je mens, Babel c’est bien ! Agade ce simple code en ES6 :</p>
<pre class="brush: js">'use strict';
class Vehicle {
constructor(brand) {
this.brand = brand;
}
}
class Car extends Vehicle {
constructor(brand,model) {
super(brand);
this.model = model;
}
}
let myCar = new Car('Mercedes','300SL');
console.log(myCar);</pre>
<p>Converti en version 5 par Babel :</p>
<pre class="brush: js">'use strict';
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var Vehicle = function Vehicle(brand) {
_classCallCheck(this, Vehicle);
this.brand = brand;
};
var Car = (function (_Vehicle) {
_inherits(Car, _Vehicle);
function Car(brand, model) {
_classCallCheck(this, Car);
_get(Object.getPrototypeOf(Car.prototype), 'constructor', this).call(this, 'Mercedes');
this.model = model;
}
return Car;
})(Vehicle);
var myCar = new Car('Mercedes', '300SL');
console.log(myCar);</pre>
<p>Y’a pas photo !</p>https://open-time.net/post/2015/10/08/Verite#comment-formhttps://open-time.net/feed/atom/comments/12522super()urn:md5:5713474aec191a58aacb8e827a8ff83d2015-10-07T16:07:00+02:002015-10-14T06:26:35+02:00FranckInternetES6javascript <p><strong>super()</strong> c’est super quand on veut étendre une classe en Javascript (version ES6). Exemple pour illustrer :</p>
<pre class="brush: js">class Vehicle {
constructor(brand) {
this.brand = brand;
}
}
class Car extends Vehicle {
constructor(brand,model) {
super(brand);
this.model = model;
}
}
let myCar = new Car('Mercedes','300SL');
console.log(myCar); // --> {"brand":"Mercedes","model":"300SL"}</pre>
<p><code>super()</code> permet d’appeler le constructeur de la classe étendue et c’est à faire avant d’utiliser <code>this</code>, sinon ça hurle !</p>https://open-time.net/post/2015/10/07/super#comment-formhttps://open-time.net/feed/atom/comments/12521