// Der Märchenonkel kommt zu Ihnen mit einer Bitte.
// Es fällt ihm schwer sich immer wieder neue Geschichten auszudenken.
// Stattdessen möchte er ein Programm nutzen, um bestehende Geschichten abzuändern.
// Das Programm soll eine bestehende Geschichte in Form eines Textes (Datentyp string)
// einlesen. Außerdem bekommt es eine Reihe von Ersetzungen, die in dem Text durchgeführt werden sollen.
// Die Ersetzungen haben die Form "alter Text/neuer Text".
// Alle Vorkomnisse von "alter Text" in der Geschichte sollen mit "neuer Text" ersetzt werden.
// Es können mehrere Ersetzungen angegeben werden indem mehrere Ersetzungen jeweils mit
// Zeilenumbruch (\n) getrennt angeführt werden.
 
// Schreiben Sie eine Funktion storyGen(text, replacements)
// die den Text, sowie die durchzuführenden Ersetzungen als Parameter bekommt
// und einen neuen Text zurückliefert in dem die Ersetzungen durchgeführt wurden.
 
// Damit Sie Ihr Programm schöner strukturieren, schreiben Sie außerdem eine
// Hilfsfunktion readReplacements(replacements), das die Ersetzungen einliest
// und in ein Array aus Objekten umwandelt, mit dem die Funktion storyGen besser arbeiten kann.
// Wenn zum Beispiel diese Ersetzungen eingelesen werden:
// let replacements = "warm/kalt\noben/unten";
// wird daraus dieses Array:
// [ {before: "warm", after: "kalt"}, {before: "oben", after: "unten"}]
 
let data =
  "Es war ein schöner Morgen, als ein alter Mann bei Bilbo anklopfte. " +
  "Wir wollen hier keine Abenteuer, vielen Dank, wimmelte er den ungebetenen " +
  "Besucher ab. Überhaupt, wie heißen Sie eigentlich? - Ich bin Gandalf, antwortete dieser." +
  "Und damit dämmerte es Bilbo: Das Abenteuer hatte schon begonnen!";
 
let replacements = `Bilbo/Iron Man
Morgen/Abend
Gandalf/Groot`;
 
function readReplacements(replacements) {
  // TODO
}
 
function storyGen(text, replacements) {
  let rep = readReplacements(replacements);
  // TODO
}
 
console.log(storyGen(data, replacements));
 
///////////////////////////////////////
 
// Erstelle eine JavaScript Funktion, die bestimmte Wörter in einem Text
// durch *-Zeichen zensiert.
// Die Funktion erhält den Text, sowie ein Array mit dem verbotenen Wörtern.
// filterMessage(message, blockedWords)
// Die verbotenen Wörter sollen durch eine Reihe von *-Zeichen ersetzt werden
// die genau so lange ist, wie das verbotene Wort.
const blockedWords = ["Hass", "Gewalt", "Diskriminierung"];
const message = "Ich bin gegen Hass und Gewalt, aber für Liebe und Frieden.";
// Gewünschte Ausgabe:
// "Ich bin gegen **** und ****** aber für Liebe und Frieden."
 
function filterMessage(message, blockedWords) {
  // TODO
}
 
console.log(filterMessage(message, blockedWords));
 
////////////////////////////////////////////
// Erstelle eine Funktion, die überprüft wie stark ein Passwort ist.
// Um das zu ermitteln werden Punkte vergeben.
// Wenn das Passwort eine bestimmte Eigenschaft hat, erhält es dafür folgende Punkte:
// Das Passwort enthält Kleinbuchstaben: +1 Punkt
// Das Passwort enthält Großbuchstaben: +1 Punkt
// Das Passwort enthält Sonderzeichen: +1 Punkt
// Das Passwort ist mindestens 6 Zeichen lang: +1 Punkt
// Das Passwort ist mindestens 8 Zeichen lang: +1 Punkt
 
// Die folgende Datenstruktur enthält jeweils das Minimum an benötigten Punkten,
// für den jeweiligen Text, der von der Funktion als Bewertung zurückgegeben wird.
const passwordScore = [
  { min: 4, score: "excellent" },
  { min: 3, score: "good" },
  { min: 2, score: "ok" },
  { min: 0, score: "weak" },
];
 
// Folgende Auflistungen können verwendet werden.
const lowerChars = [
  "a",
  "b",
  "c",
  "d",
  "e",
  "f",
  "g",
  "h",
  "i",
  "j",
  "k",
  "l",
  "m",
  "n",
  "o",
  "p",
  "q",
  "r",
  "s",
  "t",
  "u",
  "v",
  "w",
  "x",
  "y",
  "z",
  "ä",
  "ö",
  "ü",
  "ß",
];
const upperChars = [
  "A",
  "B",
  "C",
  "D",
  "E",
  "F",
  "G",
  "H",
  "I",
  "J",
  "K",
  "L",
  "M",
  "N",
  "O",
  "P",
  "Q",
  "R",
  "S",
  "T",
  "U",
  "V",
  "W",
  "X",
  "Y",
  "Z",
  "Ä",
  "Ö",
  "Ü",
];
const specialChars = [
  "!",
  '"',
  "#",
  "$",
  "%",
  "&",
  "'",
  "(",
  ")",
  "*",
  "+",
  ",",
  "-",
  ".",
  "/",
  ":",
  ";",
  "<",
  "=",
  ">",
  "?",
  "@",
  "[",
  "\\",
  "]",
  "^",
  "_",
  "`",
  "{",
  "|",
  "}",
  "~",
];
 
function passwordStrength(pwd) {
  // TODO
}
 
console.log(passwordStrength("hugo"));
console.log(passwordStrength("Hugo"));
console.log(passwordStrength("Hugo!"));
console.log(passwordStrength("HugoHugo!"));
 
////////////////////////////////////////////
// Schreibe eine Funktion analyseText(text, keywords)
// Die Funktion soll analysieren wie oft bestimmte Schlüsselworter (keywords)
// einem Text vorkommen.
// Bsp:
const text =
  "In diesem Übungs-Text sollen bestimmte Schlüsselwörter wie JavaScript, Übung und Online gesucht werden und gezählt werden, wie oft sie vorkommen.";
const keywords = ["JavaScript", "Übung", "Online"];
// Gewünschtes Ergebnis:
// [
//   { word: 'JavaScript', count: 1 },
//   { word: 'Übung', count: 2 },
//   { word: 'Online', count: 1 }
// ]
 
function analyseText(text, keywords) {
  // TODO
}
 
const analyseResult = analyseText(text, keywords);
console.log(analyseResult);
 
////////////////////////////////////////////////////
 
// Eine URL besteht aus mehreren Bestandteilen.
// Am Beispiel der URL: "http://www.google.com:80/search"
// "http" ist das Protokoll (protocol).
//   Es steht am Beginn und endet beim ersten Doppelpunkt
// "www.goole.com" ist der Server (server).
//   Es steht nach dem ersten Doppelpunkt gefolgt von zwei Schrägstrichen
//   und endet beim zweiten Doppelpunkt.
// "80" ist der Port (port).
//   Es steht nach dem zweiten Doppelpunkt und endet beim ersten
//   Schrägstrich nach dem zweiten Doppelpunkt.
// "/search" ist der Pfad (path).
//   Es Beginnt beim ersten Schrägstrich nach dem zweiten Doppelpunkt.
 
// Schreibe eine Funktion, die eine beliebige URL einliest
// und in ein Objekt umwandelt, das den folgenden Aufbau hat:
// {
//   protocol: "http",
//   server: "www.google.com",
//   port: "80",
//   path: "search"
// }
 
function parseUrl(url) {
  // TODO
}
 
const url = "http://www.google.com:80/search";
let urlParts = parseUrl(url) || {};
console.log(
  "Protokoll:",
  urlParts.protocol,
  "Server:",
  urlParts.server,
  "Port:",
  urlParts.port,
  "Path:",
  urlParts.path
);