bat/tests/syntax-tests/highlighted/JavaScript/test.js

115 lines
22 KiB
JavaScript
Raw Normal View History

2020-10-05 15:08:15 +02:00
let letNumber = 1000;
const constNumber = 10;
var varNumber = -1234;
const constNegativeFloat = -1.23;
var tooMuch = Infinity;
nothing = null;
let listofthings = ["thing", 'thing2', `foo`, ["bar"]];
// Simple comment
/**
* #########
* Multiline
* comment
* #########
*/
let test;
for (let i = 0; i < constNumber; i++) {
 if (test) continue;
 else test += 1; // random things
}
while(test < 100 && typeof test === "number") {
 test = test > 30 ? test+5 : test+1;
}
function weatherSays(when=Date.now()) {
 return "rain";
}
const thereAreClouds = true;
const cloudsCount = 20;
switch(weatherSays(Date.now())) {
 case 'rain':
 break;
 case 'sun':
 default:
 break;
}
let rain = false;
if ((thereAreClouds && cloudsCount >= 20) || weatherSays() === "rain") {
 rain = false;
} else if (thereAreClouds && weatherSays() == "rain") { // oh no, unsafe two equals checking!
 rain = true;
} else {
 rain = !!cloudsCount;
}
class Forecast {
 constructor(where, isGonnaRainA=true, isGonnaRainB=false, isGonnaRainC=false, ...randomArgs) {
 this.station = {
 location: [where.x, where.y, where.z],
 surroundings: {
 zoneA: {
 location: [1, 2, 3],
 isGonnaRain: isGonnaRainA
 },
 zoneB: {
 location: [-1, 2, 2],
 isGonnaRain: isGonnaRainB
 },
 zoneC: {
 location: [-2, 0, 0],
 isGonnaRainC: isGonnaRainC
 },
 }
 };
 }
 
 async getLocalPrevisions() {
 const rainZones = [this.station.surroundings.zoneA.isGonnaRain, this.station.surroundings.zoneB.isGonnaRain, this.station.surroundings.zoneC.isGonnaRain];
 return await rainZones.filter(z => !!z).length > (rainZones.length / 2);
 }
 
 communicatePrevisions(isGonnaRain=undefined) {
 if (isGonnaRain) console.log("Take the umbrella.");
 }
 
 destroy() {
 delete this.station;
 }
 
 static startHiring() {
 console.log("We're looking for weather presenters.");
 console.log("A lot of presenters came. Hiring stops.");
 }
 
 /* This forecasting station is magic. It can generate rain, but this method is secret because it's a generator function - nobody uses them! */
 * generateRainInZoneC(clouds=[1, 2, 3]) {
 this.station.surroundings.zoneC.isGonnaRain = true;
 const makeRain = () => { return "raining!"; };
 
 yield clouds; // first, keeps clouds
 do {
 console.log(makeRain());
 yield clouds.pop(); // then all clouds do rain
 } while(clouds.length >= 1);
 }
}
Forecast.startHiring();
const forecasting = new Forecast([3, 3, 3]);
(async() => {
 const raining = forecasting.generateRainInZoneC();
 raining.next();
 forecasting.communicatePrevisions(await forecasting.getLocalPrevisions());
 raining.next();
 raining.next();
 raining.return("stop!");
 forecasting.destroy();
})();